Workflow triggers and execution states
Look up workflow triggers, relative time now-30m, Query conditions, decision steps (workflows.decide), branch conditions, and execution states.
Supported triggers and input
| Trigger | Fires on | Configuration fields |
|---|---|---|
db | Row insert, update, or delete on a watched table | source_table, source_event, source_query |
cron | Configured cron schedule | schedule (such as 0 9 * * *) |
heartbeat | Periodic check for outstanding records | First step *.list query and each loop |
The trigger kinds are db, cron, and heartbeat. The manual run source is distinct from configurable trigger kinds. Watched db tables (source_table) include calls, form_submissions, customers, members, reservations, messages, conversations, purchases, and audit_applications.
Conditions and queries
1. Trigger entry conditions (source_query) and list queries
For db, source_query checks whether the changed record enters the selected set. An update that already matched before the edit does not fire a new run. Batch selection belongs in *.list step queries; check conditions (where), ordering (order), and row limits (limit).
This query selects confirmed reservations that started more than 30 minutes ago. It does not modify them. Configure the follow-up action in a separate step.
{
"where": {
"status": {
"eq": "confirmed"
},
"starts_at": {
"lt": "now-30m"
}
},
"order": {
"column": "starts_at",
"ascending": true
}
}now is evaluated at execution time. Relative values include now-30m, now+2h, and now-7d. Fields within where must all match; use an or array for alternatives. Address custom fields as custom.<key>. Check supported fields and operators in the feature reference.
2. Decision steps (workflows.decide) and evaluators
A workflows.decide step evaluates a target state (default ${trigger}) and writes each question's answer to ${steps.<step_slug>.values.<question_key>}.
| Question mode | Configuration | Returned value |
|---|---|---|
Choice (choice) | Option keys and criteria descriptions (options) | Option key string (such as "high") |
Boolean (boolean) | True or false evaluation | true or false |
Score (score) | Ordered level labels (levels, at least two) | Level index (0, 1, 2) |
Resource field (field) | Target table (resource) and column (path) | Allowed value for the referenced field |
Each question uses one of two evaluators (evaluate.kind):
llm(AI): Reads the input state using natural-languageinstructionsand returns a valid option or value.rules(Rules): Evaluates filter chip cases (cases[].when) against the selectedresource(uniqueorfirstmatch) and returns the matching case'svalue.
3. Branch conditions (when) and fan-out loops (each)
A step's When (when) condition evaluates a Query where predicate against a prior data source. When the predicate is false, the step is recorded as skipped. The Flow canvas displays delta when condition chips on incoming branch edges.
- Supported
sourcevalues:trigger,item,steps.<step_slug>, oranswers.<question_key>. - Combining clauses: Use
allwhen every clause must match, oranywhen any clause can match. - Fan-out loop (
each): Seteachto an array path from a prior list step (such as"${steps.find_stale.rows}") to run the step once per element with${item}bound.
Available actions
The following catalog comes from the current implementation registry. Check available methods, writable fields, and filters before configuring steps. Execution still requires the owning member’s permissions.
chartsFeatures (impl.method)
charts.listRead a sorted, filtered, paginated page of rows.charts.insertInsert a new row.charts.updateUpdate one row by id.charts.deleteDelete one row by id.charts.portfolioLaney-only access to aggregate outcomes for linked client organizations. Does not grant access to individual client records.charts.evaluateEvaluate a versioned customer analysis. Requires access to every underlying resource. Funnels count unique customers entering in the period, in step order, within the conversion window. Purchase value includes currently completed purchases at their recorded completion time, separately by currency.
Filterable columns (a charts.list step’s query)
idcreated_atupdated_attitle
Writable fields
TitleAnalysis
product_rolloutsFeatures (impl.method)
product_rollouts.listRead a sorted, filtered, paginated page of rows.product_rollouts.insertInsert a new row.product_rollouts.updateUpdate one row by id.product_rollouts.deleteDelete one row by id.
Filterable columns (a product_rollouts.list step’s query)
idcreated_atupdated_atstatusclient_organization_idcustomer_idproduct_id
Writable fields
StatusVerified atNotes
product_optionsFeatures (impl.method)
product_options.listRead a sorted, filtered, paginated page of rows.product_options.insertInsert a new row.product_options.updateUpdate one row by id.product_options.deleteDelete one row by id.
Statuses
DraftActiveArchived
Filterable columns (a product_options.list step’s query)
idcreated_atupdated_atstatusnamepriceversionproduct_idcurrencyentity_id
Writable fields
NameStatusKindPriceCurrencyBilling cyclePrice basisScopeIncluded quantityUsage unitOverage unit priceComponentsVersion
measurement_observationsFeatures (impl.method)
measurement_observations.listRead a sorted, filtered, paginated page of rows.measurement_observations.insertInsert a new row.measurement_observations.updateUpdate one row by id.measurement_observations.deleteDelete one row by id.
Filterable columns (a measurement_observations.list step’s query)
idcreated_atupdated_atstarts_atends_atevaluatorreference
Writable fields
MeasurementDateEnd dateMeasured totalTask count / ad spendSample sizeCurrencyDays allowed to convertReferenceNotes
dashboardsFeatures (impl.method)
dashboards.listRead a sorted, filtered, paginated page of rows.dashboards.insertInsert a new row.dashboards.updateUpdate one row by id.dashboards.deleteDelete one row by id.
Filterable columns (a dashboards.list step’s query)
idcreated_atupdated_attitle
Writable fields
TitleLayout
dashboard_itemsFeatures (impl.method)
dashboard_items.listRead a sorted, filtered, paginated page of rows.dashboard_items.insertInsert a new row.dashboard_items.updateUpdate one row by id.dashboard_items.deleteDelete one row by id.
Filterable columns (a dashboard_items.list step’s query)
idcreated_atupdated_atpositiondashboard_idchart_id
Writable fields
PositionWidth
productsFeatures (impl.method)
products.listRead a sorted, filtered, paginated page of rows.products.insertInsert a new row.products.updateUpdate one row by id.products.deleteDelete one row by id.products.quotePrice a product/treatment for the customer's desired visit date: matching products, valid promotions, final prices — one call. Simple items carry one-time `regular_price`/`final_price`. Typed items instead carry `pricing`: entries of kind one_time / recurring (per `cycle`, with an optional `intro` first-N-months phase) / usage (billed by consumption, no fixed number); a bundle also lists `components`.
Statuses
DraftActiveArchived
Filterable columns (a products.list step’s query)
idcreated_atupdated_atstatusnamekindpriceinventoryentity_id
Writable fields
KindNameStatusInventoryPriceBilling cycle
product_edgesFeatures (impl.method)
product_edges.listRead a sorted, filtered, paginated page of rows.product_edges.insertInsert a new row.product_edges.updateUpdate one row by id.product_edges.deleteDelete one row by id.
Filterable columns (a product_edges.list step’s query)
idcreated_atupdated_atpositionchild_idparent_id
Writable fields
QuantityPosition
promotionsFeatures (impl.method)
promotions.listRead a sorted, filtered, paginated page of rows.promotions.insertInsert a new row.promotions.updateUpdate one row by id.promotions.deleteDelete one row by id.promotions.applicableList the events/coupons/benefits valid on the customer's desired visit date.
Statuses
DraftActiveArchived
Filterable columns (a promotions.list step’s query)
idcreated_atupdated_atstatusnamekindstarts_atends_atentity_id
Writable fields
KindNameStatusBenefitValueApplies toMonthsStackableDateEnd dateCodeUsage LimitCondition
organizationsFeatures (impl.method)
organizations.listRead a sorted, filtered, paginated page of rows.organizations.insertInsert a new row.organizations.updateUpdate one row by id.organizations.deleteDelete one row by id.
Filterable columns (a organizations.list step’s query)
idcreated_atupdated_atnameslugplanparent_id
Writable fields
NameSlugPlanLogoThemeDesignDefault languageBusiness info
membersFeatures (impl.method)
members.listRead a sorted, filtered, paginated page of rows.members.insertInsert a new row.members.updateUpdate one row by id.members.deleteDelete one row by id.members.notifySend a Web Push notification to the owner of the running workflow.
Statuses
InvitedActiveSuspended
Filterable columns (a members.list step’s query)
idcreated_atupdated_atstatusemailnamerole
Writable fields
EmailNameRoleStatusAvatar
customersFeatures (impl.method)
customers.listRead a sorted, filtered, paginated page of rows.customers.insertInsert a new row.customers.updateUpdate one row by id.customers.deleteDelete one row by id.customers.profileSave the details the person just gave you (their name, email, phone, and any other field listed below) onto THEIR OWN record. You do not — and cannot — choose whose record; it is always the person you're speaking with. Only the fields you pass are changed. Call this whenever they share or correct their details, in addition to replying.
Statuses
LeadQualifiedActiveChurnedLost
Filterable columns (a customers.list step’s query)
idcreated_atupdated_atstatusnameemailphoneaccount_idcampaign_id
Writable fields
NameEmailPhoneStatusAvatar
customer_requests(system)Features (impl.method)
customer_requests.listRead a sorted, filtered, paginated page of rows.
Statuses
TriageBacklogUnstartedStartedCompletedCanceled
Filterable columns (a customer_requests.list step’s query)
idcreated_atupdated_atstatusprioritylinear_created_atbody
Writable fields
BodyStatusLabelsPriority
reservationsFeatures (impl.method)
reservations.listRead a sorted, filtered, paginated page of rows.reservations.insertInsert a new row.reservations.updateUpdate one row by id.reservations.deleteDelete one row by id.reservations.availabilityList open reservation time slots for a given date (YYYY-MM-DD).reservations.cancelCancel reservation(s). A single `id` whose time slot holds same-customer companion bookings cancels NOTHING and returns `candidates` — ask the customer which booking(s), then call again with `ids` (their exact answer: one, some, or all).
Statuses
PendingConfirmedChecked inCompletedCancelledNo-show
Filterable columns (a reservations.list step’s query)
idcreated_atupdated_atstarts_atends_atstatusnotescustomer_id
Writable fields
DateEnd dateStatusNotes
purchasesFeatures (impl.method)
purchases.listRead a sorted, filtered, paginated page of rows.purchases.insertInsert a new row.purchases.updateUpdate one row by id.purchases.deleteDelete one row by id.purchases.finalizeFreeze this purchase's buyer, scope and amount. Payment stays pending until received.
Statuses
PendingCompletedVoided
Filterable columns (a purchases.list step’s query)
idcreated_atupdated_atstatusvaluecustomer_idproduct_idproduct_option_idclient_organization_idagreement_referencereservation_idpromotion_id
Writable fields
StatusQuantityValueCurrencyScopeAgreement referenceService startsService ends
entitiesFeatures (impl.method)
entities.listRead a sorted, filtered, paginated page of rows.entities.insertInsert a new row.entities.updateUpdate one row by id.entities.deleteDelete one row by id.
Filterable columns (a entities.list step’s query)
idcreated_atupdated_atnamepositionslug
Writable fields
NameLabelSloganDescriptionImageIconSlugPosition
entity_edgesFeatures (impl.method)
entity_edges.listRead a sorted, filtered, paginated page of rows.entity_edges.insertInsert a new row.entity_edges.updateUpdate one row by id.entity_edges.deleteDelete one row by id.
Filterable columns (a entity_edges.list step’s query)
idcreated_atupdated_atpositionchild_idparent_id
Writable fields
Position
sectionsFeatures (impl.method)
sections.listRead a sorted, filtered, paginated page of rows.sections.insertInsert a new row.sections.updateUpdate one row by id.sections.deleteDelete one row by id.sections.applyApply a landing patchset (sections, content, content links) in one transaction. The final state is checked against the landing rules first; an agent's patch that adds a rule failure is not applied unless an approved exception covers it.
Filterable columns (a sections.list step’s query)
idcreated_atupdated_attypepositionentity_idpath
Writable fields
TypePathPositionOptionsCTA
domainsFeatures (impl.method)
domains.listRead a sorted, filtered, paginated page of rows.domains.insertInsert a new row.domains.updateUpdate one row by id.domains.deleteDelete one row by id.
Filterable columns (a domains.list step’s query)
idcreated_atupdated_athostnameis_primaryverified
Writable fields
HostnamePrimaryRedirect To
integrationsFeatures (impl.method)
integrations.listRead a sorted, filtered, paginated page of rows.integrations.insertInsert a new row.integrations.updateUpdate one row by id.integrations.deleteDelete one row by id.
Statuses
PendingLinkedErrorDetached
Filterable columns (a integrations.list step’s query)
idcreated_atupdated_atstatusprovider
Writable fields
ProviderStatusExternal StateConfig
campaignsFeatures (impl.method)
campaigns.listRead a sorted, filtered, paginated page of rows.campaigns.insertInsert a new row.campaigns.updateUpdate one row by id.campaigns.deleteDelete one row by id.
Statuses
DraftActivePausedEndedDeletingProvisioningError
Filterable columns (a campaigns.list step’s query)
idcreated_atupdated_atstatusnamedaily_budgetspendconversionsproviderobjective
Writable fields
ProviderNameStatusObjectiveDaily budgetCurrencyExternal StateIntegrationPushed AtConfig
reportsFeatures (impl.method)
reports.listRead a sorted, filtered, paginated page of rows.
Statuses
QueuedRunningWaiting for approvalCompletedFailedCancelled
Filterable columns (a reports.list step’s query)
idcreated_atupdated_atstatuskindstarted_attitlesummary
Writable fields
KindRun KeyStatusTitleSummaryScope
report_findingsFeatures (impl.method)
report_findings.listRead a sorted, filtered, paginated page of rows.
Statuses
OpenAcknowledgedResolvedAccepted risk
Filterable columns (a report_findings.list step’s query)
idcreated_atupdated_atstatusseveritycategorylast_seen_attitledetailrule_keyassessmentreport_id
Writable fields
Rule KeyFingerprintCategoryAssessmentSeverityStatusTitleDetailRecommendationConfidenceEvidence
report_targetsFeatures (impl.method)
report_targets.listRead a sorted, filtered, paginated page of rows.
Filterable columns (a report_targets.list step’s query)
idcreated_atupdated_atkindsurfacelast_verified_atlabeltarget_keyimpl_nameexternal_url
Writable fields
Target KeySurfaceLabelSnapshotLast Verified AtKindImpl NameRowExternal UrlExternal
report_finding_targetsFeatures (impl.method)
report_finding_targets.listRead a sorted, filtered, paginated page of rows.
Filterable columns (a report_finding_targets.list step’s query)
idcreated_atupdated_atrelationfield_pathobserved_atfinding_idtarget_id
Writable fields
RelationField PathObserved ValueEvidence
workflowsFeatures (impl.method)
workflows.listRead a sorted, filtered, paginated page of rows.workflows.insertInsert a new row.workflows.updateUpdate one row by id.workflows.deleteDelete one row by id.workflows.decideEvaluate bounded questions against supplied data using AI or deterministic rules; does not write source rows.workflows.runQueue an active workflow; inspect run history for completion.
Filterable columns (a workflows.list step’s query)
idcreated_atupdated_atnamestatustriggerdescription
Writable fields
NameDescriptionStatusTriggerScheduleSource TableSource EventSource Query
workflow_runs(system)Features (impl.method)
workflow_runs.listRead a sorted, filtered, paginated page of rows.
Filterable columns (a workflow_runs.list step’s query)
idcreated_atupdated_atstatussourceworkflow_id
Writable fields
StatusSourcePayload
stepsFeatures (impl.method)
steps.listRead a sorted, filtered, paginated page of rows.steps.insertInsert a new row.steps.updateUpdate one row by id.steps.deleteDelete one row by id.
Filterable columns (a steps.list step’s query)
idcreated_atupdated_atnamepositionfeatureworkflow_id
Writable fields
NamePositionFeatureInputFor eachWhen
step_runs(system)Features (impl.method)
step_runs.listRead a sorted, filtered, paginated page of rows.
Filterable columns (a step_runs.list step’s query)
idcreated_atupdated_atstatusfeatureworkflow_run_idstep_id
Writable fields
FeatureStatusInputOutput
accountsFeatures (impl.method)
accounts.listRead a sorted, filtered, paginated page of rows.accounts.insertInsert a new row.accounts.updateUpdate one row by id.accounts.deleteDelete one row by id.accounts.syncOptOutsRecord the channel's opt-out list (Kakao's 080 numbers) as consent withdrawals, so advertising stops reaching them.
Statuses
ConnectedDisconnectedError
Filterable columns (a accounts.list step’s query)
idcreated_atupdated_atstatusnameplatform
Writable fields
NamePlatformStatusConfigAssistant
conversationsFeatures (impl.method)
conversations.listRead a sorted, filtered, paginated page of rows.conversations.insertInsert a new row.conversations.updateUpdate one row by id.conversations.deleteDelete one row by id.conversations.recordingRead an authorized staff meeting record, summary and paginated transcript. Use the recording conversation ID. Check availability before performing follow-up work. Speaker references describe recorded speech, not message authors.conversations.focusAnswer as a specific branch (a descendant of the current org) for the rest of this turn — its catalog, prices, and availability. Reversible: call again to compare another branch. No bookings move until one is made.conversations.routeAssign this conversation and its messages to a branch. Existing reservations stay at the branch where each was created; the customer keeps one group identity with branch references.
Statuses
OpenPendingSnoozedClosed
Filterable columns (a conversations.list step’s query)
idcreated_atupdated_atstatuslast_message_atsubjectai_pausedaccount_idstarted_atlast_messageorganization_idcustomer_idmember_id
Writable fields
SubjectStatus
messagesFeatures (impl.method)
messages.listRead a sorted, filtered, paginated page of rows.messages.insertInsert a new row.messages.updateUpdate one row by id.messages.deleteDelete one row by id.messages.textRead an authorized message's text parts as plain text. Attachments and tool metadata are excluded.messages.transcribePersist a final live-voice utterance (and its interpretation) as a turn of this conversation.
Filterable columns (a messages.list step’s query)
idcreated_atupdated_atrolefeatureconversation_idmember_idcustomer_idstep_id
Writable fields
RoleContentFeature
templatesFeatures (impl.method)
templates.listRead a sorted, filtered, paginated page of rows.templates.insertInsert a new row.templates.updateUpdate one row by id.templates.deleteDelete one row by id.templates.sendSend this template to a customer over its channel (알림톡 / LINE push). Idempotent per key: a re-fired workflow skips an already-sent source row.templates.registerRegister this template with the channel and submit it for review (알림톡: Kakao, ~2 business days). Status becomes pending until refresh reports the verdict.templates.refreshRe-read the external review verdict for this template (approved / rejected / still pending).
Filterable columns (a templates.list step’s query)
idcreated_atupdated_atnamekindstatusbodyaccount_id
Writable fields
NameBodyKindStatusPurposeConfig
deliveriesFeatures (impl.method)
deliveries.listRead a sorted, filtered, paginated page of rows.deliveries.insertInsert a new row.deliveries.updateUpdate one row by id.deliveries.deleteDelete one row by id.
Filterable columns (a deliveries.list step’s query)
idcreated_atupdated_atstatustemplate_idcustomer_idaccount_idconversation_id
Writable fields
StatusKeyProvider MessageErrorRendered
consentsFeatures (impl.method)
consents.listRead a sorted, filtered, paginated page of rows.consents.insertInsert a new row.consents.recordRecord that a customer granted or withdrew advertising consent on one channel, with the evidence.
Filterable columns (a consents.list step’s query)
idcreated_atupdated_atmediumscopegrantedsourcecustomer_id
Writable fields
MediumScopeGrantedSourceNote
callsFeatures (impl.method)
calls.listRead a sorted, filtered, paginated page of rows.calls.cancelCancel a queued or ongoing call.
Filterable columns (a calls.list step’s query)
idcreated_atupdated_atstatusreasondelivery_idsubmission_id
Writable fields
StatusReasonRinging AtAnswered AtEnded AtCancel Requested
rolesFeatures (impl.method)
roles.listRead a sorted, filtered, paginated page of rows.roles.insertInsert a new row.roles.updateUpdate one row by id.roles.deleteDelete one row by id.
Filterable columns (a roles.list step’s query)
idcreated_atupdated_atname
Writable fields
NamePermissions
custom_fieldsFeatures (impl.method)
custom_fields.listRead a sorted, filtered, paginated page of rows.custom_fields.insertInsert a new row.custom_fields.updateUpdate one row by id.custom_fields.deleteDelete one row by id.
Filterable columns (a custom_fields.list step’s query)
idcreated_atupdated_attargetpositionkeylabeldescriptionfield_groupvisibilitynode_id
Writable fields
KindTargetKeyLabelDescriptionTranslationsField groupVisibilityRequiredPositionFormsShow whenOptionsType selector
availability_rulesFeatures (impl.method)
availability_rules.listRead a sorted, filtered, paginated page of rows.availability_rules.insertInsert a new row.availability_rules.updateUpdate one row by id.availability_rules.deleteDelete one row by id.
Filterable columns (a availability_rules.list step’s query)
idcreated_atupdated_attargetkindpositionscope_keyscope_value
Writable fields
KindWeekdaysStart timeEnd timeSlot (min)TargetTime fieldScope fieldPositionDateEnd dateScope valueMax concurrentGap MinutesFunction Slug
formsFeatures (impl.method)
forms.listRead a sorted, filtered, paginated page of rows.forms.insertInsert a new row.forms.updateUpdate one row by id.forms.deleteDelete one row by id.
Filterable columns (a forms.list step’s query)
idcreated_atupdated_atslugtargetactivemodeaccess
Writable fields
SlugLabelDescriptionRenderPromptSuccess MessageStatic FieldsActiveTargetModeAccess
form_submissions(system)Features (impl.method)
form_submissions.listRead a sorted, filtered, paginated page of rows.
Statuses
DraftSubmittingSubmittedFailed
Filterable columns (a form_submissions.list step’s query)
idcreated_atupdated_atstatussubmitted_attargetform_idcustomer_id
Writable fields
TargetTargetForm VersionStatusAnswersAnalysisErrorExpires AtSubmitted At
Run and step states
| Record | States | Meaning |
|---|---|---|
Workflow configuration (workflows) | draft, active, paused | Only active workflows fire on triggers and schedules. |
Workflow run (workflow_runs) | queued, running, succeeded, failed | Overall status of one workflow execution. |
Step run (step_runs) | running, succeeded, failed, skipped | Status of one step; unmet when conditions record skipped. |
Run success means the defined steps succeeded. Confirm external receipt and customer outcomes in their corresponding source records.
Inspect workflow failures and recovery
Find failed workflow runs, inspect step inputs and completed side effects, and recover without repeating messages or payments.
External CRM, EMR and calendar integrations
From account authorization to synchronization evidence. Shared actions with feature-specific inputs and evidence.