For the complete documentation index, see llms-docs.txt or the site index llms.txt. Full docs corpus: llms-full-docs.txt. Prefer the markdown version of this page at /docs/learn/workflows.md. Product capabilities: skill.md. Docs MCP: /docs/mcp. Site MCP: https://reloop.sh/mcp.

Workflows

Send emails automatically when something happens in your app, with delays and branches, from the dashboard or the SDK.

An automation sends emails for you when something happens in your app. You track a trigger (a custom event like user.signed_up) for a contact, and Reloop runs the automation's steps for them: send an email, wait, check a condition, and branch.

Create a trigger

  1. Go to Automation → Triggers
  2. Click Create Trigger
  3. Name it (for example User signed up) and add the properties your app will send, such as plan
  4. Save, then copy its key from the row menu (Copy key)

Build an automation

  1. Go to Automation
  2. Click Create Automation
  3. Pick the trigger that starts it
  4. Add steps after it: Send email, Delay and Condition. A condition has a Yes and a No path
  5. Click Publish to start it

After you edit an active automation, click Publish changes so new contacts get the new steps.

Start it from your app

The trigger's code drawer shows a ready-to-paste snippet with its key. You can also use the Code tab on this page.

Pause an automation

Open the automation and click Pause automation. It stops starting for new events, and contacts in progress are cancelled at their next step.

Steps

TypeConfigWhat it does
trigger{ eventName }Starts the automation. Every automation has exactly one.
send_email{ template: { id }, from?, subject? }Sends a template to the contact. Its From and subject come from the template; from and subject are used only when the template has none.
delay{ amount, unit }Waits before the next step. unit is minutes, hours or days.
conditiona rule or a groupChecks the contact or the event and takes the Yes or No path.

Connections link steps by key: { from, to, type }. type is default between steps. A condition has one condition_met (Yes) and one condition_not_met (No) connection.

Conditions

A rule checks one field:

{ "type": "rule", "field": "trigger.plan", "operator": "eq", "value": "pro" }

A group combines rules. With and every rule must match, and with or any rule can:

{
  "type": "and",
  "rules": [
    { "type": "rule", "field": "trigger.plan", "operator": "eq", "value": "pro" },
    { "type": "rule", "field": "contact.company", "operator": "exists" }
  ]
}
FieldReads
trigger.<name>A property sent with the event, e.g. trigger.plan
contact.email, contact.firstName, contact.lastName, contact.statusThe contact
contact.<name>A contact property, e.g. contact.company
OperatorMatches when the field
eq / neqequals / does not equal value
contains, starts_with, ends_withcontains, starts with, or ends with value
gt, gte, lt, lteis a number greater than, at least, less than, or at most value
exists / not_existsis set / is not set
is_emptyis not set or is blank (no value needed)

Text comparisons ignore case. To compare against another field instead of a fixed value, pass { "var": "trigger.expected_plan" } as value.

How a contact moves through it

  • Once per automation, unless re-entry is on. By default a contact goes through each automation once, and tracking the event again does nothing. For flows that can happen more than once, turn on Allow re-entry when you create the automation or from the … menu in the editor. Each new event then starts it again. Cancel the run in progress decides what happens if the contact is still in an earlier run: on, that run is cancelled and the fresh one takes over (good for an abandoned checkout that should start over); off, both runs keep going (good for one sequence per order). In the API this is reentry: "once" (default), "restart" or "parallel". Changes apply right away, without publishing.
  • Only subscribed contacts. If the contact unsubscribes or is blocked, they leave the automation at their next step.
  • Pinned to a version. Each enrollment finishes on the steps that were published when it started, even if you publish changes later.
  • Enrollment status. active while it runs, then completed, cancelled (paused, deleted, unsubscribed, or replaced by a newer run; replacedByEnrollmentId points to it) or failed.

API reference

FAQ

Was this page helpful?

Edit this page