Sequencer
The Sequencer automates multi-step outreach across every channel. Define a series of steps — emails, LinkedIn actions, phone calls, SMS, WhatsApp — and graph8 executes them on a schedule for each contact in your list.
Channels
Sequences support multiple channels, each with its own resource allocation:
| Channel | What It Does |
|---|---|
| Send via Gmail or SMTP mailboxes | |
| Connection request, direct message, InMail, follow, view profile, like post (via HeyReach) | |
| Phone | Voice AI calls or manual dialer |
| SMS | Text messages |
| WhatsApp Business messages |
Each channel requires an allocated resource — a mailbox for email, a LinkedIn account for LinkedIn actions, a phone number for calls/SMS, etc.
Building a Sequence
- Go to Engage → Sequencer and click Create Sequence
- Name your sequence and select a contact list
- Add steps — each step has a channel, timing, and content
- Assign resources (mailboxes, phone numbers, LinkedIn accounts)
- Set a schedule for sending windows
Steps
Each step defines one action in the sequence:
| Step Type | Channel | What It Does |
|---|---|---|
| Send a personalized email | ||
| Phone | Phone | Trigger a voice AI call |
| Manual Dialer | Phone | Queue contact for manual dialing |
| Execute a LinkedIn action (connect, message, InMail, follow, view, like) | ||
| SMS | SMS | Send a text message |
| Send a WhatsApp Business message |
For each step, choose how the content is created:
- On-demand — write the content yourself
- AI-generated template — let AI generate the content
- Manual template — use a saved template
Set the time interval between steps (e.g., wait 2 days after the previous step before executing).
LinkedIn Actions
LinkedIn steps support multiple action types:
- Connection request - send a connection request with an optional message and fallback message
- Message - send a direct message to an existing connection
- InMail - send an InMail with subject and body
- Follow - follow the contact’s profile
- View profile - view the contact’s profile (creates a notification)
- Like post - like a recent post with a selectable reaction type
LinkedIn account requirement: Sequences with HeyReach LinkedIn steps require at least one LinkedIn account to be assigned as a channel. If no LinkedIn accounts are connected, the step creation form shows a prompt to connect an account first. You can add or remove LinkedIn accounts from the Channels tab in Sequence Details after the sequence is created.
AI Instructions (LinkedIn)
LinkedIn steps support an AI Instructions mode.
Instead of writing a static message, you can provide instructions and let graph8 generate a personalized message for each contact at send time.
The AI uses:
- Contact data (name, role, company)
- Global Context
- Campaign documents
This allows dynamic, per-contact personalization and keeps messages relevant and up to date.
Sequence Settings
| Setting | What It Controls |
|---|---|
| Finish on reply | Stop the sequence for a contact when they reply |
| Send in same thread | Keep all emails in the same email thread |
| Wait for new contacts | Pause the sequence and resume when new contacts are added to the list |
| Shared | Make the sequence visible to your entire team |
Running a Sequence
Sequences move through these statuses:
| Status | Meaning |
|---|---|
| Drafted | Created but not yet started |
| Scheduling | Processing and scheduling contacts |
| Live | Actively executing steps |
| Paused | Temporarily stopped — can resume |
| Waiting | Paused, will resume when new contacts are added |
| Completed | All contacts have finished the sequence |
| Terminated | Manually stopped — cannot resume |
Controls:
- Start — begin executing the sequence
- Pause / Resume — temporarily stop and restart
- Terminate — permanently stop the sequence
- Duplicate — create a copy of the sequence
Pre-Launch Validation
Before launching a sequence, graph8 checks that all required fields are available for the selected channels.
If any required data is missing, you’ll see a warning with details about what needs to be fixed before launch.
Contact States
Each contact in a sequence has their own state:
| State | Meaning |
|---|---|
| Queued | Waiting to begin |
| In progress | Currently executing steps |
| Paused | Manually paused |
| Completed | Finished all steps |
| Failed | A step failed |
| Bounced | Email or message bounced |
| Removed | Manually removed from the sequence |
| Replied | Contact replied (sequence stopped if finish-on-reply is enabled) |
You can pause or resume individual contacts without affecting the rest of the sequence.
Schedules
Schedules define when steps can execute:
- Sending windows — set the hours and days of the week when messages can be sent
- Timezone — respect each contact’s timezone for delivery timing
Create reusable schedules in Engage → Schedules and assign them to any sequence.
Templates
Save time with reusable templates:
- Sequence templates — save an entire sequence structure (steps, timing, channels) for reuse
- Step templates — save individual step content as templates
Reports & Analytics
Every sequence tracks detailed performance:
| Metric | What It Shows |
|---|---|
| Overview | Total contacts, active, completed, success rate, overall progress |
| Step breakdown | Per-step counts: queued, in progress, completed, failed, bounced, replied |
| Conversion funnel | Contacts entered vs. completed at each step |
| Step performance | Sent, delivered, replied, bounced counts and rates per step |
| Response rates | Reply rates across time frames (24h, 48h, 7 days) |
| Engagement trends | Daily reply rate and bounce rate trends |
Skipped Contacts
The step progress also tracks Skipped contacts.
Skipped contacts are those that were not processed due to:
- Missing required data (e.g., no email or phone)
- Deduplication rules
- Step conditions not met
The skipped count appears when there are affected contacts.
Step Conditions
Attach conditions to any step so it only runs for contacts who meet specific criteria. Contacts who fail the condition are marked as Skipped and continue to the next step.
Condition Types
| Condition | Example |
|---|---|
| Field value | Job title contains "VP" |
| Previous step outcome | Step 1 email was opened |
| Engagement threshold | Opened ≥ 2 previous emails |
| Custom field | ICP score > 80 |
| List membership | Contact is in list "Enterprise ICP" |
| CRM field | HubSpot lifecycle stage = MQL |
| Time since event | Website visit within last 7 days |
Adding a Condition
- Open a step in the sequence editor
- Click Add Condition
- Pick the condition type and value
- Choose what happens if the condition fails:
- Skip step — move to the next step
- Exit sequence — remove the contact from the sequence
- Wait and retry — re-evaluate after N days (useful for “wait until they visit the site”)
Branching
Branches split a sequence into multiple paths based on contact attributes or behavior. Each path can have its own steps, content, and timing.
When to Use Branches
- Send different content to different personas (VP vs. IC)
- Fork sequences by channel preference (email-first vs. LinkedIn-first)
- Treat replied contacts differently from non-repliers
- Escalate to phone after 2 ignored emails
Adding a Branch
- In the sequence editor, click Add Branch on any step
- Define the split condition (same types as Step Conditions)
- Add steps to each branch
- Paths can re-converge into a shared follow-up step or end independently
Branch Analytics
Each branch reports independently:
| Metric | Scope |
|---|---|
| Contacts per branch | How the split distributed |
| Per-branch conversion | Reply rate, meeting-booked rate per path |
| Winning branch | Side-by-side comparison for A/B test patterns |
Provider Fallback
When a primary channel resource fails, graph8 can fall back to a secondary resource automatically.
Fallback Modes
| Mode | Behavior |
|---|---|
| Strict | If the assigned resource fails, skip the step |
| Rotate | Try the next resource in the assigned pool |
| Cross-channel | Fail over to a different channel (e.g., email → LinkedIn) |
Common Use Cases
- Mailbox at send cap → rotate to a different mailbox in the pool
- LinkedIn account rate-limited → wait 4 hours and retry on the same account
- Phone number rejected (do-not-call list) → skip and continue sequence
- WhatsApp template rejected → email fallback with the same content
Configure fallback per sequence in Sequence Settings → Fallback.
Rate Limits and Send Caps
graph8 enforces multiple caps to protect sender reputation:
| Cap Type | Default | Purpose |
|---|---|---|
| Per-mailbox daily cap | 40–100 emails | Warmup-aware; adjusts based on reputation |
| Per-LinkedIn daily cap | 50 connect + 50 messages | Matches HeyReach platform limits |
| Per-phone daily cap | 100 outbound calls | Configurable per number |
| Org-wide burst cap | 5× daily volume over 1 hour | Prevents spikes that trigger spam filters |
| Per-contact cap | 1 email per day per sequence | Prevents over-messaging |
When a cap is hit, the step re-queues for the next available window. Caps are visible in the sequence’s Resource Allocation view.
Deliverability
Sequence performance depends on the underlying mailbox health. Before launching a high-volume sequence:
- Warm up mailboxes for 2–3 weeks so cold sends land in the inbox, not spam
- Verify domain DNS (SPF, DKIM, DMARC) is configured and active
- Run placement tests weekly to catch deliverability drops early
Deliverability is configured in Settings, not Engage. See Email Warmup → for the full warmup workflow, placement testing, and reputation monitoring.
Studio Integration
Campaigns created in Studio can be launched directly into the Sequencer. When launched, the sequence inherits the campaign’s messaging, personas, and channel strategy. The link between Studio campaign and Engage sequence is maintained for end-to-end performance tracking.
Next Steps
- Inbox → — Manage replies and conversations
- Dialer → — Power dialer for outbound calls
- Connections → — Connect your CRM for contact sync
- Email Warmup → — Build sender reputation before launching