Skip to content
NewSee how
Fix

Campaigns resume reliably after being reactivated

Fixed a case where a paused-then-resumed campaign could stall mid-sequence. Drafting now picks back up dependably, and stays dependable under heavy load.

A paused campaign should pick up exactly where it left off when you turn it back on. We fixed a case where, after a pause and reactivation, some contacts could quietly stall mid-sequence instead of resuming — and hardened the drafting system so it stays dependable even when a lot of work is in flight at once.

What was happening

When a campaign was paused and later reactivated, the emails waiting to be drafted for some contacts could end up in a state where they were marked as needing a draft, but the job that produces that draft had already been considered finished. The result was a contact who looked active but never advanced — stuck between steps, waiting on a draft that wasn't coming. It only affected a subset of reactivated campaigns, which made it easy to miss but very disruptive when it hit, because those contacts simply went silent.

The fix

Two things changed. First, reactivation now re-drives any email that's waiting on a draft, so a stuck contact is detected and re-queued instead of being left behind. Second, the drafting workers are more resilient under load: a worker keeps its claim on a job alive while it's actively drafting, so jobs aren't repeatedly reclaimed and retried when many are running together. We also added the ability to spot and recover a draft whose claim was genuinely lost, rather than letting it sit indefinitely.

What you'll notice

  • Pausing and resuming a campaign is dependable — contacts resume their sequence instead of stalling.
  • Drafting keeps pace even during busy periods, without jobs thrashing between workers.
  • Contacts that previously would have gone silent after a reactivation now continue as intended.

Why it matters

A stalled contact is an invisible failure: there's no error on screen, just a prospect who stops hearing from you halfway through a sequence — and a follow-up that never arrives is a deal that quietly cools. Campaigns get paused and resumed all the time, for holidays, for edits, for deliverability, so this path has to be trustworthy. These changes make sure that turning a campaign back on does exactly what you'd expect, every time, no matter how much else is running.

For extra safety, the same recovery runs automatically on startup, so even an unlucky interruption can't leave a contact permanently stranded — the next health check finds the stalled draft and re-drives it. And because the drafting workers no longer fight over the same jobs under load, the whole system stays calm and predictable exactly when it's busiest. The net effect is simple to state and hard to engineer: a campaign you resume behaves like a campaign that was never paused.

All updates

Outreach that keeps going after you log off.Leads, emails, follow-ups and replies, handled.

Connect unlimited mailboxes and let AI agents find leads, write each email and follow up. Or send your own templates in manual mode. From $29/mo.

$1 for 3 days · Cancel anytime · No contract

Install with AI

Your coding agent sets up the FirstSales CLI and skills for you.

Prompt for Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.