clay integration
Check every address in your Clay table.
Your waterfall finds addresses. This tells you which of them can actually receive mail, before a single one reaches a sequence. It is an HTTP API enrichment, so there is nothing to install, and the first 25 rows a day need no key at all.
Add the enrichment
In your Clay table, click Add enrichment, search for HTTP API, and select it.
Point it at the endpoint
Method POST, and this URL:
https://tryverdict.org/api/enrich
Leave the headers empty for now. You get 25 enrichments a day without a key, which is enough to map the columns and run it down a test list before deciding anything.
Send the email column
In the Body field, type / to insert your email column, and wrap it in quotes so the JSON stays valid:
{ "email": "/Email" }Replace /Email with whichever column holds the address.
Map the fields you want
Run it on one row first. Clay will show the response, and every field below is top-level, so each one maps straight to a column.
Add your key before you run the table
Past 25 rows a day the endpoint answers 429 instead of a verdict, which in Clay looks like an enrichment that silently stopped working. Add the header before you run a real table:
Authorization: Bearer vk_your_key_here
Keys live in your dashboard. The response carries remaining_today so you can see what is left without guessing.
What comes back
| field | meaning |
|---|---|
| verdict | DEAD, RISKY, PLAUSIBLE or UNKNOWN |
| sendable | false only when the address is definitely dead |
| definitely_dead | the domain cannot receive mail at all |
| mailbox_confirmed_real | the mailbox itself was confirmed over HTTPS (no port 25 needed) |
| confirmed_by | what confirmed it: gravatar or microsoft365 |
| reason | why, in a sentence |
| looks_like_typo | one character from a real provider |
| did_you_mean | the address it was probably meant to be |
| is_role_account | info@, sales@ and friends — a shared inbox |
| is_disposable | a burner provider |
| behind_gateway | Mimecast, Proofpoint and similar |
| domain_accepts_mail | the domain has a working mail server |
| has_spf | the domain publishes SPF |
| has_dmarc | the domain publishes DMARC |
| mx | the mail server that answered |
A filter worth getting right
Filter on definitely_dead = false rather than on a positive signal. Only a domain that cannot receive mail at all is a definite no. Everything else is a spectrum, and treating “we could not confirm this” as “this is bad” deletes contacts you could have reached.
looks_like_typo is the one worth acting on immediately. A typosquatted domain has perfectly valid DNS, so every other signal says it is fine, while the mail goes to someone who registered the misspelling on purpose.
mailbox_confirmed_real is the opposite end: when it is true, the mailbox itself was confirmed, not just the domain, over HTTPS without a port-25 probe (the person has a Gravatar on the address, or the provider’s own API vouches for it). Treat those as your safest rows. It is confirmation-only, so a false here just means “not confirmed”, never “dead”.
What this cannot tell you
Whether a specific mailbox exists. That needs an SMTP conversation on port 25, and every cloud provider blocks it, so no hosted enrichment can do it — ours included, and neither can the ones that say otherwise. The response carries smtp_probed: false so a workflow cannot quietly assume a mailbox was contacted.
For a real probe, run the engine on your own machine. It is MIT licensed, and your list never leaves the machine it runs on.
git clone https://github.com/omm9846/verdict.git cd verdict/backend && pip install -r requirements.txt python -m engine verify someone@example.com
Running it on a real table
25 rows a day free, no signup, so you can decide whether the data is worth anything before you pay for it. Above that a key is $59 a month for 5,000 enrichments a day, which is more than most Clay tables will ever ask for.
Worth being plain about what that money is doing: it pays for a machine with outbound port 25, which is the only way anyone can confirm an individual mailbox. Until that machine exists this endpoint is DNS tier for everybody, subscribers included, and it says so in every response. When it does exist, the same key starts returning real SMTP results at no extra cost.
Works the same anywhere
The endpoint takes one address and returns flat fields, which is the shape Zapier, Make and n8n want too. Same URL, same body, same response.
curl -X POST https://tryverdict.org/api/enrich \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vk_your_key_here" \
-d '{"email":"someone@example.com"}'Questions, or a field you need that is not here? Email hello@tryverdict.org.