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. 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.

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.