WebApp Modules

Email Automations

Event-driven contact workflows you assemble from three kinds of blocks — triggers, conditions, and actions — in a visual builder.

What are Automations?

An automation is a workflow that enrolls a contact when a trigger fires, then walks them through a sequence of conditions and actions — branching, pausing, sending emails, updating tags — until the flow ends. Every contact progresses independently at their own pace.

Unlike broadcasts, which you schedule and send once to a segment, automations run continuously in the background and react to events as they happen.

Prerequisite: Automations send real emails, so the same requirements as Email Broadcasts apply — a custom domain and at least one configured sender email.

Three Block Types

Every automation is a flow made of three kinds of blocks:

  • Triggers — the entry point. A trigger enrolls a contact into the automation when the event it listens for fires. Each automation must have a trigger before its flow can run.
  • Conditions — branching points. A condition evaluates something about the contact and splits the flow into a Yes path and a No path; the contact continues down whichever side matches.
  • Actions — steps that do something. Actions send emails, modify tags, pause the flow, and so on. Each action runs on the contact currently at that step.

Block types are extensible: the emails module ships a set of built-in blocks, and any other module can register additional triggers, conditions, or actions via the automations.triggers_get, automations.conditions_get, and automations.actions_get events.

Built-in Triggers

  • Tag Added — fires when any of the tags listed in the trigger config are added to a contact. The config takes a list of one or more tag names.
  • Contact Created — fires whenever a new contact is created, regardless of source (opt-in form, import, API, auth registration).

Built-in Conditions

  • Has Tag — check whether the contact has a specific tag. Config is just a tag name (picked from an autocomplete of existing tags). The Yes path continues when the contact has the tag; the No path continues otherwise.

Built-in Actions

  • Wait — pause the contact for a duration before continuing. Config: a number plus a unit (minutes, hours, days, or months).
  • Send Email — send one of this automation's emails to the contact. Config references an automation email by ID; the picker lists only emails belonging to this automation.
  • Add Tag — add a tag to the contact. If the tag doesn't exist yet it is created automatically. Useful for chaining automations — an Add Tag action in one flow can trigger a Tag Added automation in another.

Creating an Automation

The edit page has two tabs — Settings and Flow — and every automation moves through them in order.

Settings tab

  • Name (required) — internal label for the automation.
  • Description (optional) — short context note.

Automations are created on first save (either via the Save button or by moving to the Flow tab on a new automation). New automations start inactive.

Flow tab

The visual builder displays the flow as a vertical stack of cards. Every flow starts with a trigger card at the top. Use the “+” button between cards to insert a condition or an action; condition cards split the rest of the flow into a Yes branch and a No branch, each with its own cards beneath.

Each card shows live contact counts — how many contacts are currently paused or progressing at that step — so you can see where your audience sits on the map in real time.

Deleting blocks:

  • Deleting a trigger or an action connects the previous block straight to the next.
  • Deleting a condition prompts you to pick which branch to keep — the kept branch is spliced into the parent flow; the other branch is discarded.
  • Contacts paused on a block you delete are automatically advanced to the next valid block; if nothing follows, their enrollment is marked completed.

Changes to the flow are applied only when you hit Save. If the flow has unresolved errors (e.g. a Send Email action without an email picked), save is blocked until you fix them.

Automation Emails

The Send Email action needs an email to send — and every automation has its own private pool of emails, isolated from the Email Library and from other automations. You can populate the pool two ways:

  • Create inline — build a new email in the automation (name, subject, preheader, sender, template, rich text content). A Create & Save to Library option also drops a reusable copy back into the shared Email Library.
  • Import from Library — browse the Email Library and copy a pre-designed email into this automation. The copy becomes independent from the library original.

Enrollment & Processing

Every trigger decides when to enroll. A registered trigger listens to an event (for example contacts.tag_added), receives the event payload along with its trigger config, and returns true/false from its match() function. When it matches for an active automation, the contact is enrolled at the first block after the trigger.

A background worker runs on a cron schedule and advances every due enrollment — firing actions, evaluating conditions, and honoring waits — in batches. Enrollments carry an individual status (active, completed, or exited), the current block pointer, and a wait-until timestamp while paused. Suppressed contacts are skipped automatically at email-send time, so unsubscribes and bounces are always respected.

A contact who is already actively enrolled in an automation won't be enrolled again by the same trigger firing. Once they complete or exit, a subsequent matching event can re-enroll them.

Contact Card Integration

Every contact's detail page includes an Email Automations section listing all their enrollments — automation name, current block, and status badge — plus a Remove control to exit the contact from any active flow.

Managing Automations

The automations list has the following columns:

  • Name
  • Description
  • Status — with an inline activate / deactivate toggle
  • Updated
  • Actions (row menu)

Row actions include Edit, Copy ID, Duplicate, and Delete.

Duplicate clones the automation with all its blocks and emails. The copy starts inactive and has no enrollments or stats.

Deactivating an active automation prompts a confirmation: any contacts still in progress are exited from the flow. Reactivating later starts fresh — contacts must be re-triggered to re-enroll.

Common Use Cases

  • Welcome series — Tag Added trigger on a new-subscriber tag, Send Email / Wait actions chained to drip emails over days.
  • Post-purchase follow-up — Tag Added trigger on a product tag, thank-you Send Email, Wait a few days, then another Send Email asking for a review.
  • Conditional onboarding — Contact Created trigger, then a Has Tag condition that branches the flow based on whether the contact has completed an onboarding step.
  • Chained automations — one automation finishes by applying a tag via Add Tag, which in turn fires the Tag Added trigger on a second automation.

Next Steps

  • Email Library — build reusable emails once and import them into any automation.
  • Email Broadcasts — send one-time campaigns to segments.
  • Contacts — manage tags, custom fields, and the enrollments shown on each contact card.
  • Opt-in Forms — capture leads, apply tags on submit, and feed them straight into automations.
  • Transactional Emails — customize system-triggered emails like receipts and password resets.