threadliner
Automation

Trigger reference

Every event an automation rule can trigger on, and its payload shape.

An automation rule triggers on exactly one of these 9 events. Condition field paths (see the condition reference) resolve against payload.* for these fields, and separately against contact.* for the contact's own record (email, tags, custom fields) when one is available.

contact.created

Fires when a new contact is created — by a form submission, a newsletter signup, or manually.

{ "contactId": "…", "email": "…" }

contact.updated

Fires when an existing contact's fields change.

{ "contactId": "…", "changes": { "company": "Acme Inc" } }

changes contains only the fields that actually changed, keyed by field name.

contact.deleted

Fires when a contact is deleted.

{ "contactId": "…" }

form.submitted

Fires on every form submission, published forms only.

{ "formId": "…", "submissionId": "…", "contactId": "…" }

Use a condition on payload.formId to scope a rule to one specific form.

subscriber.pending

Fires when someone signs up to a list publicly and is awaiting confirmation (see double opt-in).

{ "subscriberId": "…", "contactId": "…", "listId": "…" }

subscriber.confirmed

Fires when a pending subscriber confirms, or when you add a subscriber directly from the dashboard (which skips the pending step entirely).

{ "subscriberId": "…", "contactId": "…", "listId": "…" }

subscriber.unsubscribed

Fires when a subscriber unsubscribes, whether via the email unsubscribe link or removed from the dashboard.

{ "subscriberId": "…", "contactId": "…", "listId": "…" }

deal.created

Fires when a new deal is created in any pipeline.

{ "dealId": "…", "contactId": "…", "pipelineId": "…" }

deal.stage_changed

Fires when a deal moves to a different stage — including a fresh deal's very first stage.

{
  "dealId": "…",
  "contactId": "…",
  "fromStageId": "…",
  "toStageId": "…",
  "status": "OPEN"
}

status is the new stage's type (OPEN, WON, or LOST) — this is the field to condition on for "when a deal is won" style rules. See example recipes.

campaign.sent also exists as an internal event (used by webhooks) but isn't available as an automation trigger — it describes a whole campaign finishing, not something scoped to one contact, which is what every automation trigger needs to resolve the contact.* half of a condition.

Was this page helpful?

Last updated on

On this page