Pular para o conteúdo
NovoVeja como
Correção

An approval notice no longer cancels emails that were ready

A notice asking you to approve a campaign could cancel emails that had already been prepared, so approving it produced far fewer sends than expected.

A notice asking for your approval used to cancel emails that were already prepared and waiting. Approving the campaign then sent far fewer than it should have, and nothing explained the gap.

What changed

Some campaigns wait for approval before sending. When that state is entered, the campaign is put on hold and the notice goes out.

The hold was being applied to work that had already completed. Emails that were written, checked, and queued were pulled back out of the queue along with everything still in progress, and pulling them out cancelled them rather than pausing them.

So approving the campaign released a smaller queue than the one that existed when the notice was raised. The difference was the emails that had been ready, which are typically the earliest and best prepared ones.

The hold now applies only to work not yet complete. Prepared emails wait in place and send when approval arrives.

Why it matters

The cancelled emails were the ones furthest along. They had already been through research, writing, and quality checks, so cancelling them threw away the most work per message.

The shortfall was silent, which is the part that made it expensive. The campaign resumed, sent, and reported normally. There was no error and no cancellation notice, and working out that a hundred emails had gone missing meant comparing the send count against the list size by hand.

It also produced a strange incentive. Approving quickly reduced the loss, because fewer emails had been prepared by then, so the safest thing to do with a notice was rush it. That is exactly backwards for a mechanism whose purpose is deliberate review.

How to use it

Nothing to do. The fix applies to every campaign that waits for approval.

Approve a campaign and it sends what was queued when the notice was raised, plus whatever was prepared while it waited.

The campaign shows how many emails are held pending approval, so the number you are approving is visible before you approve it.

What approval holds actually pause

Sending. No queued email leaves while approval is outstanding.

Preparation continues. Research and writing carry on in the background, so the queue is fuller when you approve rather than starting from nothing.

That combination is the right one. Approval is a decision about sending, not a reason to stop the work that makes sending possible, and stopping preparation would have meant a long delay after every approval.

Approving after a delay

A campaign approved days later sends what accumulated, subject to the usual daily limits and sending windows. Nothing floods out at once.

Where the delay was long enough that the research behind some emails has aged, those emails are refreshed rather than sent stale. A message referencing something that was true last week and is not now is worse than a slightly more general one.

Checking a campaign after approval

Compare the send count against the number the campaign showed as held. They should match.

If they do not, the difference is explained on the campaign, usually by a daily limit or a sending window rather than anything having been lost.

How this was found

Not from an error, because there was none. It came from comparing what campaigns using approval sent against what campaigns not using approval sent, and noticing the first group came up consistently short.

That is the only way a bug of this shape gets found. Nothing failed, nothing was logged, and every individual campaign looked plausible on its own. The pattern only exists across many of them.

It is a good argument for measuring outcomes rather than only watching for errors. A system with no errors and the wrong output is a system that will not tell you anything is wrong.

What was recovered

Emails cancelled by this were not recoverable, since they had been removed rather than paused, and there was no record of what they had said.

The leads were. Anything cancelled this way went back into the campaign as an uncontacted lead, so it was prepared again and sent on the next pass rather than being lost permanently.

The cost was the work of preparing them twice, not the prospects themselves.

Approval as a workflow

Approval exists so somebody can look before a campaign goes to real people. That is a reasonable thing to want, particularly for a first campaign from a new domain or a message going to an important segment.

For it to be useful, the pause has to be free. If waiting costs you emails, the mechanism punishes exactly the careful behaviour it exists to enable, and people learn to skip it.

That is what this fix restores. Taking a day to review a campaign now costs a day, and nothing else.

What you see when approving

The campaign shows how many emails are held and ready, so you know the size of what you are releasing.

Releasing them does not send them all at once. Daily limits and sending windows apply exactly as they would to a campaign that had never paused, so a large held queue drains over days rather than in a burst.

If you do not use approval

Nothing here affects you. Campaigns that send without an approval step were never touched by this, since the bug lived entirely in the code that applies the hold.

It is worth knowing the option exists, though. Approval is useful for a first campaign from a new domain, for a message going to a segment that matters, and for any workspace where somebody other than the person building the campaign wants to see it first.

Now that pausing is genuinely free, turning it on for a campaign costs nothing but the time you spend reading.

Availability

Live now on all plans, for every campaign that uses approval.

Todas as novidades

Prospecção que continua quando você desconecta.Leads, emails, follow-ups e respostas, resolvidos.

Conecte caixas ilimitadas e deixe os agentes de IA encontrarem leads, escreverem cada email e fazerem follow-up. Ou envie seus próprios modelos no modo manual. A partir de $29/mês.

$1 por 3 dias · Cancele quando quiser · Sem contrato

Instalar com IA

Seu agente de código configura a CLI e as skills do FirstSales para você.

Prompt para 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.