Skip to main content

CEL contexts and functions

The same variable name can have different types or be unavailable in another context. This table lists editor namespaces; check the variable reference for individual paths. Optional related objects can be absent.

ContextNamespacesFunctions
Task edgeassignment, assignment_collections, chat, collections, datetime, experiments, form_data, member, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Task guardassignment, assignment_collections, chat, collections, datetime, form_data, member, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Workflow Abilityassignment, assignment_collections, chat, collections, datetime, experiments, form_data, member, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Task Abilityassignment, assignment_collections, chat, collections, datetime, experiments, form_data, member, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Journey edgeassignment, chat, collections, datetime, experiments, form_data, journey, member, parent_step, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Journey goalcollections, datetime, journey, memberhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Journey v2 edgeassignment, chat, collections, datetime, experiments, form_data, journey, member, parent_step, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since, member_in_filter, window_days_since
Journey v2 endingassignment, chat, collections, datetime, experiments, form_data, journey, member, task, tool_invocations, workflowhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since, member_in_filter
Journey v2 goalcollections, datetime, journey, memberhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since, member_in_filter
Experiment eligibilitycollections, datetime, memberhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Computed Form fieldmember, now, recordhas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Form field validationmember, now, record, valuehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Inbound sync filtersync_source, valuehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, split, trim, lowerAscii, upperAscii, us_zip_to_tz, us_state_to_tz
Outbound sync filtersync_member, sync_source, valuehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, split, trim, lowerAscii, upperAscii, us_zip_to_tz, us_state_to_tz
Workflow evaluation criterionassignment, assignment_data_records, assignment_tasks, chat, configuration_blockers, effect_intents, messages, pmd_pages, record, scenario, strict_trace, testChatRun, tool_results, transcripthas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Metric criterionassignment, assignment_data_records, assignment_tasks, chat, configuration_blockers, member, messages, record, strict_trace, tool_results, transcripthas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: assignment:concludedassignment, assignment_collections, chat, collections, datetime, experiments, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: assignment:concludedassignment, assignment_collections, chat, collections, datetime, experiments, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:cancelledactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:cancelledactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:createdactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:createdactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:endedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:endedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:no_showactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:no_showactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:startingactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:startingactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: calendar_event:updatedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: calendar_event:updatedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: call:completedcall, chat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: call:completedcall, chat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: call:startedcall, chat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: call:startedcall, chat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: call:summarycall, chat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: call:summarycall, chat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: chat:callbackchat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: chat:callbackchat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: chat:createdchat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: chat:createdchat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: chat:summarychat, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: chat:summarychat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: connector:eventactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: connector:eventactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: data_record:changedactor, changes, collections, datetime, member, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: data_record:changedactor, changes, collections, datetime, member, message, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: data_record:createdactor, collections, datetime, member, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: data_record:createdactor, collections, datetime, member, message, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: data_record:updatedactor, changes, collections, datetime, member, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: data_record:updatedactor, changes, collections, datetime, member, message, record, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: fax:receivedcollections, datetime, fax, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: fax:receivedcollections, datetime, fax, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: journey:completedcollections, datetime, experiments, journey, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: journey:completedcollections, datetime, experiments, journey, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: journey:enrolledcollections, datetime, experiments, journey, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: journey:enrolledcollections, datetime, experiments, journey, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: journey_step:executecollections, datetime, experiments, journey, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: journey_step:executecollections, datetime, experiments, journey, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: link:clickedcollections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: link:clickedcollections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: member:updatedactor, collections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: member:updatedactor, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: message:createdchat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: message:createdchat, collections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: routine:triggeredcollections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: routine:triggeredcollections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: task:commandassignment, assignment_collections, call, chat, collections, datetime, experiments, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: task:commandassignment, assignment_collections, call, chat, collections, datetime, experiments, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: task:enterassignment, assignment_collections, call, chat, collections, datetime, experiments, member, record, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: task:enterassignment, assignment_collections, call, chat, collections, datetime, experiments, member, message, record, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: task:executeassignment, assignment_collections, call, chat, collections, datetime, experiments, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: task:executeassignment, assignment_collections, call, chat, collections, datetime, experiments, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: task:exitassignment, assignment_collections, call, chat, collections, datetime, experiments, member, record, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: task:exitassignment, assignment_collections, call, chat, collections, datetime, experiments, member, message, record, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: voicemail:receivedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: voicemail:receivedactor, assignment, chat, collections, datetime, member, message, record, task, webhook, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: workflow:assistant_messagechat, collections, datetime, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: workflow:assistant_messagechat, collections, datetime, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: workflow:executechat, collections, datetime, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: workflow:executechat, collections, datetime, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: workflow:user_messagechat, collections, datetime, member, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: workflow:user_messagechat, collections, datetime, member, message, task, workflow, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: workspace:member_joinedcollections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: workspace:member_joinedcollections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Event Rule: workspace:member_leftcollections, datetime, member, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since
Message validation: workspace:member_leftcollections, datetime, member, message, workspacehas, size, exists, all, filter, map, startsWith, endsWith, int, string, type, contains, notcontains, matches, containsEntryInFile, days_since

Function reference​

FunctionSignatureMeaning
alllist.all(x, condition) -> boolCheck if all elements in a list satisfy the condition
containscontains(text: string, substring: string) -> boolCase-insensitive check if text contains the substring
containsEntryInFilecontainsEntryInFile(text: string, fileUuid: string) -> bool | listCheck if text contains any entry from the specified file. Returns matched entries or false.
days_sincedays_since(date: string) -> numberCalculate the number of days between an ISO date string and today in the workspace timezone
endsWithstring.endsWith(suffix: string) -> boolCheck if string ends with the given suffix
existslist.exists(x, condition) -> boolCheck if any element in a list satisfies the condition
filterlist.filter(x, condition) -> listReturn elements that satisfy the condition
hashas(field) -> boolCheck if a field exists and is set (not null/empty)
intint(value) -> intConvert a value to an integer
lowerAsciilowerAscii(text: string) -> stringConvert text to lowercase
maplist.map(x, expression) -> listTransform each element in a list
matchesmatches(text: string, pattern: string) -> boolCheck if text matches the given regex pattern
member_in_filtermember_in_filter(memberFilterUuid: string) -> boolTrue when this member is in the given member filter. The argument must be a literal member-filter UUID, which is what lets the Journey preload the filter once per evaluation and refuse to delete a filter a live Journey still uses. Use the structured member-filter picker for a single filter; this is for combining several, e.g. filter A or B.
notcontainsnotcontains(text: string, substring: string) -> boolCase-insensitive check if text does NOT contain the substring
sizesize(value) -> intReturn the length of a string, list, or map
splitsplit(text: string, delimiter: string) -> listSplit text on a delimiter
startsWithstring.startsWith(prefix: string) -> boolCheck if string starts with the given prefix
stringstring(value) -> stringConvert a value to a string
trimtrim(text: string) -> stringRemove leading and trailing whitespace
typetype(value) -> typeReturn the type of a value
upperAsciiupperAscii(text: string) -> stringConvert text to uppercase
us_state_to_tzus_state_to_tz(state: string) -> stringConvert a single-zone US state or territory to a canonical IANA timezone (e.g. 'WA' / 'Washington' -> 'America/Los_Angeles', 'AZ' / 'Arizona' -> 'America/Phoenix'). Accepts USPS codes and full names, case-insensitively. Returns an empty string when the input is empty, not a US state, or a split jurisdiction — mapped onto member.timezone, an empty result leaves the existing value unchanged rather than clearing it. Prefer us_zip_to_tz when a ZIP is present; use this as a fallback.
us_zip_to_tzus_zip_to_tz(zip: string) -> stringConvert a US ZIP code to a canonical IANA timezone (e.g. '07001' -> 'America/New_York'). Accepts ZIP+4. Returns an empty string when the ZIP is unrecognised or spans two timezones — mapped onto member.timezone, an empty result leaves the existing value unchanged rather than clearing it.
window_days_sincewindow_days_since(date: string) -> numberCalendar days crossed since a timestamp, counted as local DATES in this Journey's active-hours timezone (its workspace timezone when the Journey has no active hours). Unlike days_since, it does not keep the previous step's time of day: a step accepted on Monday afternoon satisfies >= 1 from Tuesday's local midnight. Active hours still decide when the step may run.