Skip to content
NewSee how
Improvement

Campaign logs show pending retries

Send errors that are scheduled for retry now appear in campaign logs, so you can see recovery happening instead of wondering.

A campaign log that goes quiet when a send hits trouble is worse than no log at all. It looks like nothing is happening when the system is actually working to recover. That gap between reality and what the logs showed is now closed: send errors scheduled for retry appear in the campaign log the moment they're queued, so you can watch recovery happen in real time instead of wondering whether your campaign is stuck.

Better visibility into sending

When a send hits a temporary error — a soft bounce, a momentary provider hiccup, a send that needs a second attempt — the campaign log now shows the pending retry rather than silently working in the background.

What changed

Campaigns handle transient failures automatically. A soft bounce, a momentary provider hiccup, a send that needs a second attempt — recovery has always happened. What was missing was any sign of it in the logs. Before this update, an email that hit a temporary error and scheduled a retry was invisible until it either succeeded or failed permanently. If you checked the Logs tab in between, the gap looked like nothing was happening. For campaigns sending at any real volume, that silence was easy to misread as a stuck or broken campaign.

Now retry entries appear inline as soon as they're scheduled — for example, Soft bounce retry scheduled — with the same timestamp and contact context as any other log event. You can watch recovery unfold in real time instead of guessing whether the campaign is working.

How to use it

  1. Open a campaign and switch to the Logs tab.
  2. Retry entries appear inline alongside sends, opens, and replies — no separate view needed.
  3. The stat counts in the log header are now clickable: tap any figure to jump straight to the matching entries in the list without manual filtering.

Why it matters for outreach at volume

At low send volumes, an invisible retry is easy to ignore. At the volumes that matter for a real pipeline, invisible retries create anxiety: is the campaign stuck, or recovering? Is this contact going to be skipped entirely, or just delayed? Seeing the retry entry answers those questions immediately and removes the guesswork from reading your campaign health.

The clickable stat counts are a separate but related improvement. Drilling from a summary number directly to the contacts behind it — opens, replies, bounces, retries — cuts the time it takes to investigate anything unusual. What used to require manual filtering now takes one click.

Also in this release

The wait-delay node in the campaign workflow editor now has a proper configuration panel, so setting a delay between sequence steps works as expected rather than requiring workarounds.

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.