Creating a workflow
Write the JSON yourself, or let your agent or the TUI build it for you. Or ask your agent: “Create a trial onboarding workflow: an email when the trial starts, three tips three days later, and stop it when they convert.” It writes the steps and templates for you.- CLI
- TUI
- API
Sender
Every email in a workflow comes from the same sender. Setchannels.email.fromName and channels.email.replyTo on the workflow to override your email integration’s, for example onboarding from “Jane at Acme” and billing from “Acme Billing”. The from address always comes from the integration, because providers only send from domains you’ve verified.
channels.email to null to go back to the integration’s.
Steps
A step is one thing the workflow does: send an email or call a URL.
Opted-out subscribers are never emailed. Every email includes one-click unsubscribe headers, which Gmail and Yahoo require from bulk senders.
Webhook
Posts JSON to an HTTPS URL, for example to tell your team in Slack or Discord when someone signs up.body is rendered as a template and sent as-is with Content-Type: application/json. Wrap values in the json filter so the result stays valid JSON.
Delays
A delay is how long to wait before a step.delayMs is in milliseconds:
Delays add up: a step with a one-day delay after a step with a two-day delay sends three days after the trigger.
Editing emails in the browser
The email editor lets you tweak the copy your agent wrote, preview it with your own details filled in, and send yourself a test. Type/ to add a heading, button, image, video, list or divider, and {{ to add a variable such as the subscriber’s first name.
Drop or paste an image straight into the email to upload it, up to 5 MB. Click an image to set its alt text, link, size and alignment. Email apps can’t play video, so a video shows its thumbnail with a play button, linked to the video. Paste a YouTube, Vimeo or Loom link. Agents can do the same with subscriber uploads image and subscriber uploads video, or the upload_image and add_video MCP tools.
editUrl.
Emails with a custom template ("layout": "none" or a full HTML document) open as HTML instead, so the editor never changes your markup. Saving replaces the workflow’s steps, the same as an update; runs already in progress keep the version they started with.
Triggering a workflow
Triggering a workflow starts it for one subscriber. Workflows run for one subscriber at a time. Usually your app triggers them, but you can also trigger them by hand:- CLI
- TUI
- API
email, externalId or publicId. They have to exist already.
If the workflow is paused, the trigger returns {"triggered": false, "reason": "workflow_paused"} and nothing sends.
To start workflows automatically from events in your other tools, see Stripe triggers. To send a workflow to everyone at once, see Broadcasts.