All docs
2 min read

Automations overview

An automation is a per-form workflow: a trigger, an ordered list of steps, and a queue worker that executes them. Use automations to send conditional emails, tag submissions, fan out to internal HTTP endpoints, classify with AI, or branch based on payload contents - without writing webhook receiver code.

Lifecycle

  1. Create an automation on a form, choose a trigger, add steps.
  2. Trigger fires (e.g. submission lands).
  3. Run is created and queued on the automations worker.
  4. Steps execute in order, persisting outputs to the run record.
  5. Replay any run from the dashboard or via the API.

Each run stores its context and cursor position, which makes delayed steps resumable. If a step returns a delay, the worker re-dispatches the same run and continues from the next stored cursor position when the delay expires.

Step types

Automations support four step kinds:

  • condition - continue only when the submission payload matches the rule set.
  • branch - choose one of two downstream step IDs.
  • delay - pause execution and resume through the queue.
  • action - perform work such as sending email, calling a webhook, tagging a submission, classifying with AI, or invoking an integration driver.

Use conditions for one-way gates, branches for two-path routing, and actions for side effects. Keep destructive or externally visible actions after the conditions that prove they should run.

Plan limits

  • Free: 1 active automation per form, 100 runs / month.
  • Pro and above: unlimited.

Operational notes

Automations are designed for work that should happen after a submission is accepted. For public ingestion safety, they run in the queue instead of blocking the respondent's submit request. If a workflow needs to notify a person, update a CRM, and send a webhook, the respondent still receives the normal success response while the automation continues in the background.

Review the run history after changing a workflow. It shows which trigger created the run, which steps executed, any delay or branch output, and the error message for the first non-ignored failure.