OQL · Entities
Actions
OQL field reference for actions. Tasks and next actions linked to contacts. Core to the Action Stream methodology.
Maintained by the OnePageCRM engineering team · Last updated Aug 27, 2026
Actions are the tasks and next actions linked to contacts. They are core to the Action Stream methodology that OnePageCRM is built around.
Default sort: weight descending. When you omit order_by,
actions return in Action Stream priority
order, the same
order the OnePageCRM app uses.
Fields
Legend: F filterable, S sortable, A aggregatable, G groupable.
| Field | Type | F | S | A | G | Description |
|---|---|---|---|---|---|---|
id | ID | Y | Y | — | — | Action ID |
text | string | Y | — | — | — | Action text (max 140 chars) |
contact_id | ID | Y | — | — | Y | Associated contact ID |
assignee_id | ID | Y | — | — | Y | Assigned user ID |
author_id | ID | Y | — | — | Y | User who created the action, which is not always the assignee (read-only) |
completed | boolean | Y | — | — | Y | Whether the action is done. This, not status, is completion. |
status | string | Y | Y | — | Y | One of asap, date, date_time, waiting, queued. Defaults to date, or to date_time when you send an exact_time. |
date | date | Y | Y | — | Y | Due date (in assignee’s timezone). Defaults to today on a date action, or is derived from exact_time. |
exact_time | time | Y | Y | — | — | Exact time (ISO 8601) on time-scheduled actions. Stored in the assignee’s timezone. |
waiting_since | time | Y | Y | — | — | When a waiting action started waiting (auto-set; read-only) |
completed_at | time | Y | Y | — | Y | When the action was completed |
weight | number | — | Y | — | — | Action Stream priority weight. Default sort field. |
created_at | time | Y | Y | — | Y | Record creation timestamp |
modified_at | time | Y | Y | — | Y | Last modification timestamp |
Notes
statusis the action’s type, not whether it is done. Completion is the separatecompletedboolean — adateaction that has been ticked off still hasstatus: "date". The type controls how the action behaves in the Action Stream:asap: do immediately, top of stream.date: scheduled fordate.date_time: scheduled fordateat anexact_time.waiting: waiting on the contact, below dated actions.queued: in the queue with no specific date.
waiting_sinceis stamped automatically the momentstatusbecomeswaiting; it is read-only. Sort or filter by it to surface the actions that have been waiting longest.- Completed actions have
completed: trueand acompleted_attimestamp. A date filter on its own matches them too — every contact builds up a long tail of finished actions, so a query for open work needscompleted: falsealongside the date, or it overstates what is outstanding. author_idis who created the action;assignee_idis who has to do it. They differ whenever one user assigns work to another. Actions carry no author display name — resolve the id againstcontext()’suserslist.- Lookups:
contact(viacontact_id). Pull the contact’s fields inline ascontact.<field>— for examplecontact.last_nameorcontact.owner_id. See Concepts › Lookups.
Example queries
Today’s open actions for me:
{
"from": "actions",
"where": {
"assignee_id": "ME()",
"completed": false,
"date": "TODAY()"
}
}
Overdue actions:
{
"from": "actions",
"where": {
"assignee_id": "ME()",
"completed": false,
"date": { "<": "TODAY()" }
}
}
How many actions did the team complete this week:
{
"from": "actions",
"select": ["assignee_id", "count()"],
"where": {
"completed": true,
"completed_at": { ">=": "THIS_WEEK()" }
},
"group_by": ["assignee_id"]
}
All open actions on a specific contact:
{
"from": "actions",
"where": {
"contact_id": "507f1f77bcf86cd799439011",
"completed": false
}
}