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
The campaign can be read.
Without this, a count of 0 could mean nothing happened, or that the check could not look.
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.
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.
The list of sent emails can be read.
Otherwise the bounce rate was never really checked.
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.
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.