Email Workflow

An email workflow sends automated emails when a trigger fires, such as a signup or an app event. Timers, filters and branches decide who gets each email.

An email workflow is an automated series of emails that starts when something happens, such as a signup, a plan change or an event from your app. Timers, audience filters and branches between the emails decide who gets each one and when.

Welcome sequences, onboarding, trial reminders and win-back emails are common workflows. A drip campaign is the simplest kind: a few emails with fixed waits between them. Other tools call the same thing an automation, a flow or a sequence. In Loops it's a workflow.

How a workflow works in Loops

You build a workflow on a canvas, from a template or a blank workflow, by adding nodes after a trigger. Each contact moves through it separately, so two people who sign up a week apart get each email a week apart. There are six node types (workflow docs):

  • Trigger. What starts the workflow for a contact: Contact added, Contact updated, Contact added to list or Event received. You also choose whether a contact can enter one time or every time the trigger matches. See triggers.

  • Send email. A message that goes out when the contact reaches it. A workflow can hold as many emails as you need.

  • Timer. A wait before the next node, such as 3 days. The Immediately option skips the wait.

  • Audience filter. A check on the contact's properties. Set to All following nodes, it removes a contact who stops matching before any later node. Next node only checks once.

  • Branch. Splits contacts into paths. Each path starts with an audience filter, the filters are checked left to right, and a contact takes the first path they match. Paths can merge again further down. See branching.

  • Experiment. Sends a share of contacts to different versions of an email so you can compare sends, opens and clicks. See experiments.

A contact leaves at the Exit workflow node at the end. They leave earlier if they stop matching an All following nodes filter, or if the workflow started from a list they've since left. Contacts who existed before the workflow started don't enter it, but you can backfill them with a CSV upload.

Workflow emails count as marketing email. They go only to subscribed contacts, and Loops adds a footer with your company address and an unsubscribe link. Send password resets and receipts as transactional email instead. Unsubscribed contacts still receive those.

Example: an onboarding workflow

Acme is a project management app. When someone signs up, Acme's app sends Loops a signup event and keeps a projectCount property current on the contact. Its onboarding workflow has five steps:

  • Event received on signup, set to one time, so someone who signs up twice gets one welcome sequence.

  • Send email: "Welcome to Acme", sent right away, with one button to create a first project.

  • Timer: wait 2 days.

  • Branch with 2 branches. The first audience filter matches contacts whose projectCount is 0 and sends "Create your first project". The second filter has no conditions, so everyone else matches it and gets "Invite your team".

  • Exit workflow.

The branch reads projectCount when each contact reaches it, so someone who creates a project during the wait gets the team email instead of the reminder. The 2-day wait is Acme's choice, not a benchmark. Before starting the workflow, Acme sends a test contact with an example.com address down each path. Loops runs every node but doesn't send to that domain.

For the emails themselves, start from the onboarding drip and welcome templates, or see these onboarding email examples.

Workflow vs campaign

A campaign is one email sent to a chosen audience at a time you pick. A workflow sends each email when a contact reaches it and keeps taking in new contacts until you stop it. Use a campaign for a product announcement, and a workflow for email tied to what a person did, such as signing up or upgrading.

Build workflows from code

Developers and AI agents can build the same workflows outside the builder. The Workflows API creates workflows, sets their trigger and adds, updates or reroutes nodes. The Loops CLI does the same from the terminal, and Claude or ChatGPT can do it through the Loops MCP server. Your app starts a workflow for a contact by sending an event that matches an Event received trigger.

FAQ

What is an email workflow?
An email workflow is an automated series of emails that starts when something happens, such as a signup or an event from your app. Timers, audience filters and branches decide who gets each email and when.

Is a workflow the same as a drip campaign?
A drip campaign is one kind of workflow: a few emails with timers between them. A workflow can also check contact data before each email, split contacts into paths and test versions of an email.

What can start a workflow in Loops?
One of four triggers: a contact is added to your audience, a contact property changes, a contact is added to a mailing list, or your app sends an event. Each trigger lets a contact enter one time or every time it matches.

Can I change a workflow after it starts?
Yes. Pause it, make the change, then resume it. While it's paused, new contacts queue for up to 24 hours, and contacts on a timer keep their scheduled send time.

Why do some Loops webhooks say loop?
Workflows were called loops until May 6, 2026. It's the same feature. Webhook payloads still use loop names, such as loop.email.sent, for compatibility.

Related reading