Concepts

Automations

Event-triggered sequences with delays, send windows, and A/B variants.

An automation turns events into a sequence of steps. It has a trigger (an event name), an optional filter (over contact attributes and event properties), and ordered steps (delays and template sends).

Paused by default

Automations are always created paused. Enabling one is a separate, explicit action that validates the sequence's published templates. This prevents an half-built sequence from mailing anyone. There is no approval queue — the guard is that enabling is deliberate, plus the project kill switch and daily cap.

Enrollment

When you emit an event, each active automation whose trigger matches and whose filter passes enrolls the contact, creating a run. Priority and exclusivity settings decide what happens when several automations match.

Step types

Send and other steps may be clamped to a timezone-aware send window using the contact's timezone attribute. A step is one of these types:

  • send — render and send a template through the same choke point as the API, so suppression, kill switch, and daily cap all apply.
  • delay — a standalone wait: the run pauses for the delay, then advances. Delays are ordinary steps — stack them, place one at the end, and reorder them like any other step.
  • wait for event — park the run until a named event arrives (or a timeout elapses), then continue. Useful for "wait for purchase, up to 7 days".
  • branch — a gate: evaluate a filter over the contact and either continue or exit the run. (Path-splits that fork into separate branches are a planned extension; today a branch continues or exits.)
  • set attribute — shallow-merge attributes onto the contact mid-flow, which can move them into a segment.
  • webhook — POST the contact + event payload to a public HTTPS endpoint (SSRF-guarded, best-effort — never blocks the sequence).

Steps have stable ids: appending steps to a live sequence never disturbs in-flight runs, and runs advance by step id. Editing a step that has in-flight runs requires pausing first.

Sequence packs

Over MCP, email_bootstrap_company installs whole lifecycle sequences for a business archetype (SaaS, e-commerce, newsletter/media, marketplace) — welcome, cart recovery, trial conversion, win-back — with their starter templates, in one call. Everything lands paused; enabling each sequence stays a deliberate human decision.

A/B variants

A send step can carry multiple template versions with weights. Variant assignment is deterministic per contact-run — a contact sees a consistent variant across the whole sequence, and the split is reproducible.

On this page