Client build

For an Australian plumbing business · Node.js · Instantly API

Cold email safety checks that stop the send.

I built five checks for an Australian plumbing business’s cold email campaigns. They run at every check-in. If any one fails, the send stops.

Why cold email needs checks

Cold email can hurt a business fast: emails that bounce, a mailbox in poor health, a reply nobody reads. So the client’s 4 campaigns (about 940 contacts) run behind five checks.

The daily check runs on Node.js and the Instantly API. It only reads. It never sends anything itself.

This page covers what the system checks. I don’t share how the campaigns did. The client agreed I could show one finding, and it’s further down.

The five checks

  1. The campaign can be read.

    Without this, a count of 0 could mean nothing happened, or that the check could not look.

  2. Every sending mailbox is active, warmed up and healthy.

    A mailbox that is missing, inactive, has warm-up off or scores under 90 (Instantly’s own bar) stops the send.

  3. Bounces stay at 3% or under, per person emailed.

    The rate is only judged once 50 or more people have been emailed, because 1 bounce in 20 says nothing. Above 2% is a warning.

  4. The list of sent emails can be read.

    Otherwise the bounce rate was never really checked.

  5. No AI reply agent is switched on.

    It could answer a prospect in the client’s name before a person has read the reply.

If any one fails, the send stops. The check runs at every check-in.

Why bounces are counted per person emailed

Instantly has its own “contacted” figure, but it matched neither the people nor the emails. So the check counts bounces per person emailed.

What it warns about

The check warns when anyone replies (a person reads every reply) or unsubscribes, and when a send setting differs from the plan.

It also prints what it cannot see: complaints inside replies, and replies that go to another inbox.

Before and during a campaign

A preflight of 50+ checks runs before a campaign launches. Mailboxes were stepped up from 10 to 20 to 30 emails a day, with a rule to step back.

The unsubscribe finding

This is the one finding the client agreed I could show.

Instantly’s analytics said 0 unsubscribes. 3 people had used the unsubscribe link.
Found on 31 October 2026, from the lead records. An earlier weekly report had repeated the 0. The check now counts unsubscribes from the lead records and labels that analytics line as missing them.

The lead list

The list behind the property-manager campaigns. Every address was found on a real page, and that page was checked for a no-marketing notice before the address was loaded.

For
The same plumbing business: commercial property and strata agencies to email.
Sources
Collected from public agency websites and a property-listing site. Every address that gets emailed keeps the page it was read from.
Read off a page
97% of the list. The rest were guessed from a name pattern, and those are never emailed.
Opt-out re-check
Before an address could be emailed, a real browser re-read its source page for opt-out notices: 1,044 pages in 2 hours 32 minutes.
Customers
Checked against the client’s own job records, so his customers came off, except 2 firms he asked to keep in.
Status
Delivered in September 2026, and in use.

The Spam Act and opt-outs

Every opt-out is copied to a record that outlives Instantly, for the Spam Act.

The lead list comes with a Spam Act 2003 note that cites every rule by section and clause.

Built with

Safety checks
Node.js and the Instantly API.
Lead list
Claude Code and Node.js.

Do your campaigns have a stop switch?

Tell me what you send with and what worries you about it. I’ll tell you which checks I’d put in front of your send.