Documentation / Sequences
Sequences (Email Drip Cadences).
Multi-step outbound cadences with reply detection, mailbox safety caps, and per-step analytics. This page covers everything from creating your first sequence to wiring the REST API into your stack.
What sequences do
A sequence is a multi-step email cadence sent from a connected mailbox to a list of contacts. Each step is either an email, a wait delay, or a conditional branch (e.g. skip the next step if the prospect already replied).
Sequences are designed for outbound prospecting — cold and warm-intro cadences alike. The engine handles send windows, per-mailbox throttling, retries on transient SMTP errors, IMAP reply detection, and one-click unsubscribes by default.
Sequences live in your authenticated app under /app/sequences. The marketing overview is at /sequences.
Getting started
- Connect a mailbox. Go to
/app/mailboxesand connect Gmail or Outlook via OAuth, or wire up SMTP / IMAP for a custom domain. Free plan allows 1 mailbox; Pro is unlimited. - Create a sequence. Open
/app/sequences→ “New sequence”. Pick the mailbox, set a name, configure the send window (timezone, weekdays-only, start/end hour). - Add steps. Step 1 is always an email. Add follow-ups via wait + email pairs (e.g. wait 2 days, send follow-up #1; wait 5 days, send follow-up #2). Use
{{firstName}}and{{company}}merge tags for personalization. - Enroll contacts. Pick a saved list (from
/app/lists) or paste emails directly. Preview the rendered email against any contact before you start. - Hit Start. The status flips from
draft→active. Sends respect the send window and per-mailbox throttle. Replies auto-pause the contact.
Step types
| Type | Purpose | Notes |
|---|---|---|
email | Send a templated email with merge tags. | Subject + HTML body + plain-text fallback. Rendered with {{firstName}}, {{company}}, {{customField}}. |
wait | Delay before the next step. | Configured in days or hours. Honors the sequence's send window (a 2-day wait may stretch over a weekend if weekdays-only is on). |
conditional | Branch on engagement signals. | if_replied, if_opened, if_clicked. Skips the contact past the branched step when the condition matches. |
Mailbox safety
Deliverability is everything. Fareof enforces both daily and hourly send caps per mailbox to keep your sender reputation intact across high-volume cadences.
| Setting | Free plan | Pro plan |
|---|---|---|
| Daily send cap | 50 / day / mailbox | Unlimited (provider-bound) |
| Hourly throttle | ~10 / hour | Configurable per mailbox |
| Connected mailboxes | 1 | Unlimited |
| Concurrent sequences | 1 | Unlimited |
Warm-up notes: for new domains or fresh mailboxes, ramp up gradually — 10/day for week 1, 25/day for week 2, 50+/day from week 3. Fareof tracks open and reply rates per mailbox; if engagement collapses, you'll see a warning banner before the warning becomes a Postmaster Tools issue.
Bounce handling: hard bounces auto-pause the contact and surface the address for re-verification through the triple-check pipeline.
Status states
| Status | Meaning | Transitions |
|---|---|---|
draft | Sequence is being built. No sends happen. | → active via /start |
active | Engine is sending per the cadence. | → paused via /pause or auto-paused on bounce→ completed when all contacts finish |
paused | Sends temporarily halted. Editable. | → active via /resume |
completed | All enrolled contacts have hit a terminal state (replied, bounced, unsubscribed, or finished the last step). | Read-only. Clone to re-run. |
Analytics
Every sequence ships with per-step and per-contact analytics. The metrics tab shows the full funnel:
- Sent — the SMTP server accepted the message.
- Delivered — final-recipient handoff confirmed (no bounce, no defer).
- Opened — open pixel fired (when tracking is enabled per sequence).
- Clicked — at least one tracked link clicked.
- Replied — IMAP reply detector matched.
- Bounced — hard or soft bounce surfaced via SMTP DSN or async webhook.
Drill from the sequence header into per-step metrics, then into the per-contact log to see exactly which message in the cadence drove the reply.
API reference
Sequences are first-class REST resources under /api/sequences. All endpoints require Bearer token auth — see the authentication guide.
/api/sequencesList sequences in the active organization with rollup counts.
/api/sequencesCreate a new sequence. Body: { name, mailboxId, sendWindowStartHour?, sendWindowEndHour?, autoPauseOnReply? }.
/api/sequences/:idFetch a single sequence with its steps and contact rollup.
/api/sequences/:idUpdate sequence metadata (name, send window, tracking flags).
/api/sequences/:id/stepsAppend a new step. Body: { type: 'email' | 'wait' | 'conditional', subject?, body?, waitDays?, condition? }.
/api/sequences/:id/steps/:idxUpdate an existing step in place.
/api/sequences/:id/steps/:idxRemove a step (other steps re-index).
/api/sequences/:id/enrollEnroll contacts. Body: { listId } or { contactIds: [...] }.
/api/sequences/:id/startTransition draft / paused → active. Engine begins sending.
/api/sequences/:id/pauseHalt active sends (per-contact state preserved).
/api/sequences/:id/resumeResume from paused → active.
/api/sequences/:id/contactsList enrolled contacts with their step progress and last-event timestamps.
/api/sequences/:id/previewRender a step against a real contact before sending. Body: { stepIndex, contactId }.
