Skip to main content

Triggers

Internal beta β€” not released yet

The Automation API is an internal beta and is not released yet. Its endpoints and payloads are not final and may change or be withdrawn at any time without notice.

A trigger decides when an automation runs. It is a flat object { type, config }; an automation has zero or one. The config keys are per the trigger type's config_schema, which β€” with the full, always-current catalog β€” is served by GET /v1/automation/meta/trigger. Build against that rather than hard-coding.

Trigger types​

typeFires when…
record_createdA record is created in the app.
record_updatedA record is updated (optionally only when specific fields change).
record_deletedA record is deleted.
record_comment_or_reply_createdA comment or reply is added to a record.
date_field_arrivedA date field's value arrives, relative to now.
automation_calledAnother automation calls this one.
periodicOn a schedule.
webhook_receivedAn inbound webhook is received.
weblink_clickedA generated weblink is clicked.

Config​

Each type has its own config shape β€” see the config_schema from GET /v1/automation/meta/trigger. Values may be dynamic where the type allows it.

Output-only config fields

Some config fields are server-assigned and read-only β€” for example a webhook_received trigger's webhook_url. They appear on read but are rejected on input. In the config_schema returned by GET /v1/automation/meta/trigger, each such field is now flagged "readOnly": true (standard JSON Schema), so you can strip read-only fields programmatically before submitting a config on write. The input config_schema is the read schema minus these fields.

Companion _enabled flags

Some config values are gated by a sibling boolean <field>_enabled β€” the value takes effect only when its _enabled flag is true. The automation_called / weblink_clicked triggers pair triggering_app_ids with triggering_app_ids_enabled and custom_variable_defs with custom_variable_defs_enabled. A minimal {} config is accepted β€” all members are optional, and app_id is not a config field (it is stamped from the automation's own app); send the paired _enabled flag whenever you set its value.

record_updated: which fields fire it

The record_updated trigger's trigger_on_changes_field_ids is tri-state: null or omitted fires on any field change; a non-empty list restricts firing to those fields; an empty [] never fires (the definition validates as broken).

To set or replace a trigger, use PUT /v1/automation/{automation_id}/trigger (the whole body is the trigger), or include trigger in a create or update. To remove one, send trigger: null on update.