DEV Community

Axel Freeman
Axel Freeman

Posted on Originally published at tapacapi.com

A verification result is a snapshot. Nobody sells you the subscription.

Every few months someone pitches "email verification webhooks" as if a mailbox were a service that reports on itself. It is not. A mail server will answer an SMTP probe whenever you ask it. Nothing inside it will call you when the person leaves the company.

So the product on offer is rarely a better answer — it is a promise that somebody keeps asking, forever.

The event you actually care about

You do not want a status. You want a state change:

  • the person left and the address was disabled,
  • the domain moved to another mail provider and the routing changed,
  • a personal mailbox became a role mailbox with a queue behind it,
  • the catch-all was switched off, and yesterday's unknown rows became hard bounces.

Every one of those is only visible from outside, by probing again. That is why "webhook" is a billing model before it is a feature.

The decay is not a rounding error

Observation Number Source
Contacts who change jobs in a year 23% ZoomInfo, 2025
Addresses dead within 2 years 40% NeverBounce
Advantage of fresh data over stored data +42% Harvard Business Review, 2024

A list that was clean when it was bought is a list with a half-life. The first check was not wrong — the answer just has an expiry date.

What we do instead, and what it costs you

TAPAC verifies inside the search request. Each contact comes back with the address, the source it was found in, and its SMTP state as of that call. There is no stored copy of the mailbox on our side, so nothing there can go stale — and, honestly, there is no notification either.

That trade is worth naming plainly: you get the freshest possible answer and no push, instead of a comfortable stream and an unknown cache age.

A cadence that costs almost nothing

  1. Check at the moment of send. A contact verified minutes ago needs nothing else.
  2. Re-check before the second touch. Touch one to touch three is where job changes land.
  3. Re-check segments on a calendar, not on a feeling. ~90 days for active sequences, ~180 for cold lists. The decay numbers set the direction; your bounce tolerance sets the length.
  4. Keep unknown as its own bucket. Catch-all domains accept every local part, so they are not a yes and not a no. Never let them inflate the denominator.
  5. Let the result delete rows. An invalid state is the cheapest unsubscribe you will ever get; a bounce costs sender reputation, which nobody refunds.

Five questions for any vendor selling verification webhooks

  1. Is the state in your webhook a fresh SMTP probe or a cached field — and how old is the cache when it fires?
  2. What do you charge to re-check an address you already checked once?
  3. Which addresses are eligible for retest, and what do you return for catch-all domains?
  4. Do you return unknown as a first-class state, or do you fold it into valid?
  5. If I stop paying, do the checks stop? (They do with everyone. That is the subscription.)

Try the snapshot model

npx -y @tapacapi/mcp        # tools: tapac_find_contacts, tapac_status
# hosted:  https://tapacapi.com/mcp
# REST:    POST https://tapacapi.com/v1/contacts/search
Enter fullscreen mode Exit fullscreen mode

One call returns the contact, where it was found, and the mailbox state at that moment. Schedule the call instead of subscribing to a stream, and freshness stops being a line item and becomes a cron line. 100 free searches, then $0.10–0.50 per verified contact.

Published from tapacapi.com — TAPAC is an MCP server and REST API for verified B2B contacts.

Top comments (0)