Your bounce rate is a timing problem, not a list problem

A cold email bounce rate above 5% is usually blamed on the list vendor. The vendor is a symptom. Bounce rate is decided by when an address was last checked, and almost every list on the market was checked once, at import.

Two campaigns with identical copy, identical offer and identical sending infrastructure come out at 2–5% and 10–35% depending on nothing else. That gap is the whole product argument for verifying at the moment of use rather than at the moment of purchase.

What counts as a bounce

TypeWhat happenedWhat it costs you
Hard bounceThe mailbox does not exist — the domain accepts mail but has no such userPermanent. Repeated hard bounces are what get a sending domain filtered
Soft bounceMailbox full, server busy, greylisted, message too largeTemporary; can clear on its own and is not proof the address is bad
Block / deferralThe receiving server refuses your IP or domain reputationNot a bad address at all — a reputation issue upstream
Catch-all acceptanceThe server accepts every address, so no verdict is possibleSilent. Counted as delivered even when nothing was read

Bounce-rate dashboards collapse all four into one number, which is how a list with plenty of live addresses can still look broken — and how a dead list can look fine until the sending domain gets throttled.

The decay behind the number

None of those figures describe a bad vendor. They describe time. A list imported in March and sent in September is a different asset from the same list sent in March, and no CSV carries an expiry date.

Checking a mailbox inside the search call

An SMTP handshake asks the receiving server whether a specific mailbox exists. Doing it at send time is too late — the send is already spent. Doing it at search time is free of that trade-off, and it is what TAPAC exposes as a single call:

curl -X POST https://tapacapi.com/v1/contacts/search \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"industry":"logistics","job_titles":["head of operations"],
       "company_size":"51-200","location":"poland","source":"website","limit":40}'

Each row comes back with the person, the company, the title, the source it was found in and the verification state of that mailbox. Catch-all domains are labelled unknown rather than dressed up as valid, because a catch-all reply carries no information about an individual mailbox.

What this does not promise. An SMTP check proves the mailbox exists; it does not prove anyone wants your offer. Deliverability and interest are separate problems, and a list that stops bouncing only removes the first one.

Keeping the rate low without guessing

From an agent this is one tool call: npx -y @tapacapi/mcp or the hosted endpoint https://tapacapi.com/mcp, with tapac_find_contacts and tapac_status. 100 searches are free, then $0.10–0.50 per verified contact, pay-per-use.

Where to go next

← Back to TAPAC