Skip to content

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.

FieldTypeFSAGDescription
idIDYYAction ID
textstringYAction text (max 140 chars)
contact_idIDYYAssociated contact ID
assignee_idIDYYAssigned user ID
author_idIDYYUser who created the action, which is not always the assignee (read-only)
completedbooleanYYWhether the action is done. This, not status, is completion.
statusstringYYYOne of asap, date, date_time, waiting, queued. Defaults to date, or to date_time when you send an exact_time.
datedateYYYDue date (in assignee’s timezone). Defaults to today on a date action, or is derived from exact_time.
exact_timetimeYYExact time (ISO 8601) on time-scheduled actions. Stored in the assignee’s timezone.
waiting_sincetimeYYWhen a waiting action started waiting (auto-set; read-only)
completed_attimeYYYWhen the action was completed
weightnumberYAction Stream priority weight. Default sort field.
created_attimeYYYRecord creation timestamp
modified_attimeYYYLast modification timestamp

Notes

  • status is the action’s type, not whether it is done. Completion is the separate completed boolean — a date action that has been ticked off still has status: "date". The type controls how the action behaves in the Action Stream:
    • asap: do immediately, top of stream.
    • date: scheduled for date.
    • date_time: scheduled for date at an exact_time.
    • waiting: waiting on the contact, below dated actions.
    • queued: in the queue with no specific date.
  • waiting_since is stamped automatically the moment status becomes waiting; it is read-only. Sort or filter by it to surface the actions that have been waiting longest.
  • Completed actions have completed: true and a completed_at timestamp. 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 needs completed: false alongside the date, or it overstates what is outstanding.
  • author_id is who created the action; assignee_id is who has to do it. They differ whenever one user assigns work to another. Actions carry no author display name — resolve the id against context()’s users list.
  • Lookups: contact (via contact_id). Pull the contact’s fields inline as contact.<field> — for example contact.last_name or contact.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
  }
}