> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dmly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sequences

> Drip campaigns — an ordered series of messages sent to each contact on a schedule, starting when a flow subscribes them.

A sequence is a drip campaign — ordered messages delivered on a schedule after a contact
subscribes. You write the messages once and set how many days apart they go out, and DMLY sends
them one at a time to each contact who joins. The clock starts when *that* contact subscribes,
so every contact sits at their own point in the run: someone who enquired this morning is on
day 0 while someone who enquired last week is on day 5.

Sequences run on WhatsApp, Facebook, Instagram, Telegram, SMS, Live Chat and TikTok. What a
step can send, and when it arrives, differs by channel — that is the part worth reading before
you build.

## Sequence or broadcast?

This is the choice people get wrong, and it costs a wasted campaign either way.

<Columns cols={2}>
  <Card title="Broadcast" icon="bullhorn" href="/broadcasts/overview">
    One message, to many contacts, now. You pick the audience and you pick the moment.
    Everyone gets it at the same time. Use it for news: a sale, a closure, a new opening.
  </Card>

  <Card title="Sequence" icon="list-ol">
    Several messages, to one contact, over days. The contact's own subscription date starts
    the clock. Use it to follow a person through a stage — a welcome, a nurture, a follow-up.
  </Card>
</Columns>

A rough test: if the message makes sense only today, broadcast it. If it would make just as
much sense to someone who enquires next month, put it in a sequence and let a flow subscribe
them.

### Sequence or flow?

A [flow](/automation/flow-builder) is a conversation. It reacts to what the contact does right
now — they message you, they tap a button, they answer a question — and it runs in seconds.

A sequence is a calendar. It doesn't react to anything; it just sends step 2 a day after step 1
whether the contact replied or not. Use a flow for the conversation, and have that flow
subscribe the contact to a sequence for the days that follow.

## What you'd use one for

* **Welcome series after a first enquiry.** Someone messages you for the first time. Day 0
  thanks them and answers the obvious question, day 1 shows what you do, day 2 invites them to
  book. Every new enquiry gets the same run without you writing it again.
* **Lead nurture.** An enquiry that didn't book stays warm for a few days — proof, prices, an
  offer — instead of going cold in the [Inbox](/inbox/overview).
* **Post-appointment follow-up.** Day 1 checks how they got on, day 2 asks whether they'd
  recommend you, day 3 nudges them to rebook.
* **Win-back.** A contact who has gone quiet gets a short run: we've missed you, here's what's
  new, here's a reason to come back.

## What a step can send

A step is one message. You can't attach an image, file or voice note to it. Beyond that, the
step editor changes with the channel the sequence belongs to.

| Channel                                          | What a step can send                                    |
| ------------------------------------------------ | ------------------------------------------------------- |
| **WhatsApp**                                     | Free-form text, or a pre-approved template              |
| **Facebook**, **Instagram**                      | Free-form text, as **Standard send** or **Human agent** |
| **Telegram**, **SMS**, **Live Chat**, **TikTok** | Free-form text                                          |

### On WhatsApp

A **Send as** picker sits above each message with three choices:

* **Standard send** — *Free-form message — delivers inside the 24-hour WhatsApp window.*
* **Utility template** — *Pre-approved utility template (order updates, reminders) — delivers
  outside the 24-hour window.*
* **Marketing message** — *Pre-approved marketing template — delivers outside the 24-hour
  window.*

Choosing either template option swaps the message box for a **Template** picker holding your
approved templates of that category — the same ones your [broadcasts](/broadcasts/message-templates)
use. Pick one, fill in its **Template variables**, and the preview shows what the contact gets.
Only approved templates appear; if the list is empty, **Manage templates** takes you to submit
one.

Templates are what make long WhatsApp sequences work — see [what arrives, and
when](#what-arrives-and-when).

### On Facebook and Instagram

**Send as** offers two choices:

* **Standard send** — *Inside the 24-hour messaging window.*
* **Human agent** — *Rides Meta's live-agent allowance — up to 7 days after the contact's last
  message. For agent-style follow-ups, not bulk marketing.*

### On Telegram, SMS, Live Chat and TikTok

There's no **Send as** picker — there's only one way to send, so the step is just your
**Message**.

## Where sequences live

Go to **Automation** in the sidebar, then select **Sequences**. There is no sidebar entry of
its own. You can also reach it from **Manage sequences →** inside a flow's **Sequence** step.

The list shows each sequence's **Sequence**, **Channel**, **Steps**, **Subscribers**,
**Status** and **Updated**. **Subscribers** is how many contacts are working through it *right
now* — it goes down as people finish, not up. It is not a lifetime total.

<Note>
  A sequence belongs to one channel: the one you had selected when you created it. The
  **Channel** field is read-only and can never be reassigned — *Sequences belong to the
  selected profile.* The list only shows sequences for the channel you currently have
  selected, so if a sequence seems to have vanished, check the channel selector before you
  rebuild it.
</Note>

## Build a sequence

<Steps>
  <Step title="Create it">
    Select the channel the sequence should belong to, then go to
    **Automation → Sequences → New sequence**. Give it a **Name** — only you and your team ever
    see it, so name it after the job it does: `Welcome nurture`, `Post-visit follow-up`.

    A new sequence starts with two steps ready to fill in, and is **Active** from the moment
    you create it.
  </Step>

  <Step title="Set the Day for each step">
    Each step has a **Day**, a whole number of days from zero up. Day 0 means the step is due
    as soon as the contact subscribes; day 3 means three days later.

    What sets the wait between two steps is the *gap* between their **Day** numbers, counted
    from when the previous step really sent. So 0, 1, 3 means: on subscribing, one day later,
    then two days after that. Keep the numbers climbing.
  </Step>

  <Step title="Set the hours">
    **From** and **To** set the times of day a step is allowed to go out — 09:00 to 20:00 by
    default. A step that comes due before **From** waits for it; a step that comes due after
    **To** moves to **From** the next day. It stops you messaging someone at 3am.

    These times are read in UTC, not your local time. If you are not on UTC, shift them.
  </Step>

  <Step title="Write the message">
    Write your **Message**, or pick a template — see [what a step can send](#what-a-step-can-send)
    for what your channel offers. You can drop contact details into free-form text:
    `{{first_name}}` becomes the contact's first name when it sends.
  </Step>

  <Step title="Add the rest">
    **Add step** appends another one, a day after the last. You can move steps up and down and
    remove them, and the **Timeline** panel shows the run in order as you build.

    Every step needs a message or a template. An incomplete one blocks saving:
    `Step {number} is incomplete — add a message or pick a template.`
  </Step>

  <Step title="Save">
    Select **Create sequence** (or **Save sequence** when editing). Nothing sends yet — a
    sequence sits idle until a flow subscribes someone to it, exactly as the page says:
    *Delivery starts when a contact is subscribed via the flow builder's Sequence step.*
  </Step>
</Steps>

<Warning>
  Moving a step up or down does not renumber its **Day**. Because the wait is the gap between
  consecutive steps, moving a day 5 step above a day 1 step leaves no gap at all — that second
  message goes out to real contacts as soon as the first one lands and the **From**–**To**
  hours allow. After any reorder, read the **Timeline** top to bottom and check the days still
  climb.
</Warning>

## How contacts join

There is exactly one way into a sequence: the **Sequence** step in the flow builder. There is
no button on a contact, no bulk action, no import, and no way to subscribe someone by hand.

<Steps>
  <Step title="Open the flow that should feed it">
    Go to **Automation** and open or create a flow on the same channel the sequence belongs to.
    A flow only ever offers sequences from its own channel — if your sequence isn't in the
    list, it's on a different one.
  </Step>

  <Step title="Add the Sequence step">
    In the flow builder, the **Sequence** step is in the **Logic** group. Drag it in and
    connect it where the contact should join — after they reply to your greeting, after they
    pick an option, after they've been tagged as a lead.
  </Step>

  <Step title="Point it at the sequence">
    Select the step and pick your sequence under **Choose a sequence…**. That's the only thing
    it configures. The panel says it plainly: *Subscribes the contact to the selected drip
    sequence.*
  </Step>

  <Step title="Publish the flow">
    The step has one output and the conversation carries straight on through it — subscribing
    doesn't pause or end the chat. From then on the schedule runs in the background.
  </Step>
</Steps>

Subscribing the same contact twice does nothing: a contact already working through a sequence
is never restarted or doubled up. But a contact who has **finished** it, or whose run was
stopped, starts again from the first step — which is what you want for a win-back someone can
go through more than once.

## What arrives, and when

Most channels only let you message a contact for a while after *they* last messaged you. A
sequence holds to that line, and on Meta channels it decides more about what arrives than your
schedule does.

| Channel                                         | A step sends                                  |
| ----------------------------------------------- | --------------------------------------------- |
| **WhatsApp** — template step                    | Any time                                      |
| **WhatsApp** — free-form step                   | Within 24 hours of the contact's last message |
| **Facebook**, **Instagram** — **Standard send** | Within 24 hours of the contact's last message |
| **Facebook**, **Instagram** — **Human agent**   | Up to 7 days after the contact's last message |
| **Telegram**, **SMS**, **Live Chat**            | Any time                                      |
| **TikTok**                                      | Within 48 hours of the contact's last message |

A step that comes due when the channel won't carry it is **held, not lost**. DMLY retries it
about once an hour, up to 48 times — roughly two days. If the contact messages you in that
time the window reopens and the held step goes out, still in order. If they never do, that
contact's run stops there and no further steps are sent. The clock restarts every time the
contact messages you.

<Tip>
  On WhatsApp, this is the whole argument for templates. A free-form day-7 step only reaches
  contacts who are still talking to you; a template step reaches everyone. If a WhatsApp
  sequence has to run past the first day or two, build the later steps from approved
  templates. See [WhatsApp rules and limits](/broadcasts/whatsapp-rules-and-limits).
</Tip>

On Telegram, SMS and Live Chat there's no window at all — every step sends on the day you set
it, however long the contact has been quiet.

<Tip>
  On Facebook and Instagram, the flow builder's **Marketing Opt-in** step asks a contact for
  permission to message them once outside the window. If they accept, one held step can ride
  that permission — but only one, and only if you asked before the window closed.
</Tip>

<Warning>
  A sequence delivers on whichever channel the contact actually uses, not the sequence's own
  channel. For a free-form step that's helpful — it still reaches them.

  **But a template step is silently dropped.** A step only counts as a template when the
  contact's own channel is WhatsApp; for anyone else that step has no free-form text to fall
  back on, so it's skipped and the run moves on. Nothing tells you.

  So if you build the recommended template-based WhatsApp sequence, subscribe only contacts who
  reached you on WhatsApp. Mixing channels into it quietly loses steps.
</Warning>

## Pausing and resuming

Each row in the **Sequences** list has an **Active** / **Paused** switch in the **Status**
column. Turn it off and *Sequence paused — steps stop sending until you resume it.*

Pausing genuinely freezes delivery. Contacts already subscribed stop receiving steps
immediately, and nothing is burned while you're paused: nobody is dropped for a closed window,
and nobody misses a step. Turn it back on and *Sequence resumed* — every contact picks up
exactly where they left off, within a minute, in order.

<Note>
  Pausing doesn't stop new contacts **joining**. A paused sequence still appears in the
  **Sequence** step's picker, and a flow pointing at it keeps subscribing people — they just
  queue up behind step 1 until you resume. To stop new contacts joining, remove or repoint the
  **Sequence** step in the flow that feeds it, and publish.
</Note>

## How contacts leave

A contact stops receiving a sequence when any of these happen:

* **They finish it.** The last step sends and the run completes.
* **The window stays shut.** On a windowed channel, no message from them for the roughly two
  days DMLY spends retrying a held step — see [what arrives, and when](#what-arrives-and-when).
* **They opt out.** A contact who replies with a stop keyword is added to your suppression
  list, and no further sequence steps are sent to them. On WhatsApp, Facebook, Instagram, SMS,
  Live Chat and TikTok that means `stop`, `stopall`, `stop all`, `unsubscribe`, `cancel`,
  `quit`, `end`, `opt out` or `optout`. **Telegram recognises a shorter list** — `/stop`,
  `stop`, `unsubscribe` and `cancel` only, so `quit`, `end` and `opt out` don't opt anyone out
  there.
* **A flow unsubscribes them.** The **Unsubscribe Contact** step does the same thing
  deliberately, and stops every sequence run they are in straight away.
* **The bot is paused on them, or they're blocked.** **Handover to Human** pauses the bot for
  that contact, which ends their sequence run at the next due step. **Resume bot replies** does
  not bring the run back — only the **Sequence** step can, and it starts them from the
  beginning.

<Note>
  A normal reply does **not** take someone out of a sequence. If a contact answers your day 1
  message and books, they still get day 2 and day 3 unless something above stops them. Build
  the exit into the flow — for example, unsubscribe them once they've done the thing the
  sequence was asking for.
</Note>

There is no screen listing who is subscribed, and no way to remove one contact by hand. Plan
the way out when you plan the way in.

## Troubleshooting

<Accordion title="I built a sequence but nothing ever sends">
  A sequence does nothing on its own. Check that a published flow — on the same channel — has a
  **Sequence** step pointing at it, and that the sequence's switch is on **Active**.
</Accordion>

<Accordion title="Later steps stop arriving for some contacts">
  Almost always the window. On WhatsApp, Facebook, Instagram and TikTok a free-form step only
  reaches a contact who has messaged you recently; when they haven't, DMLY holds it and retries
  for about two days, then stops that contact's run. Contacts who keep replying get the whole
  sequence; contacts who go quiet don't.

  On WhatsApp, build the later steps from approved templates and they arrive regardless.
  Elsewhere, shorten the run and give each step a reason to reply.
</Accordion>

<Accordion title="I can't pick a template on a step">
  Templates are a WhatsApp thing. Facebook and Instagram have a **Send as** picker, but it
  offers **Standard send** and **Human agent** — no templates. On Telegram, SMS, Live Chat and
  TikTok there's no picker at all: a step is free-form text.

  On a WhatsApp channel, set **Send as** to **Utility template** or **Marketing message**. If
  the picker is empty, you have no approved template in that category yet — **Manage templates**
  takes you to submit one. See [message templates](/broadcasts/message-templates).
</Accordion>

<Accordion title="A step arrived outside its From–To hours">
  A step that had to be held and retried is rescheduled about an hour later without re-checking
  **From** and **To**. The hours are applied when a step is first scheduled, so a step that
  waited on a closed window can land outside its usual times. Remember the hours are UTC, too.
</Accordion>

<Accordion title="The Overview says Active sequences: 12 but I only have 3">
  **Active sequences** on the **Overview** counts contacts currently working through a
  sequence, not sequences. Twelve means twelve contacts mid-run.
</Accordion>

<Accordion title="I deleted a sequence a flow was using">
  Nothing breaks loudly, which is the problem. The flow keeps running and the **Sequence** step
  just does nothing — that's what *Flows that subscribe to it will need a new target* means on
  the delete prompt. Open each flow that used it and point the step at a new sequence, or
  remove the step.
</Accordion>

## Next

<Columns cols={2}>
  <Card title="Flow builder" icon="diagram-project" href="/automation/flow-builder">
    Where the **Sequence** step lives, and how a contact reaches it.
  </Card>

  <Card title="Triggers" icon="bolt" href="/automation/triggers">
    What starts the flow that subscribes people in the first place.
  </Card>

  <Card title="Message templates" icon="whatsapp" href="/broadcasts/message-templates">
    Get templates approved so WhatsApp steps arrive outside the 24-hour window.
  </Card>

  <Card title="Broadcasts" icon="bullhorn" href="/broadcasts/overview">
    For the message that only makes sense today.
  </Card>
</Columns>
