Playbooks · Recipe

Catch-all domain? Fall back to the personal email

Find a work email, verify it, and when the verifier says the domain is catch-all, fall back to find_personal_email on the person's LinkedIn URL. The finder and verifier are waterfall endpoints and their misses cost zero. find_personal_email is not a waterfall: it bills on every 2xx, including the ones that come back with nothing.

Last updated September 22, 2026

Pattern: email_finder → email_verifier → (catch-all only) find_personal_email

Credit math: Worked example at stated counts: 200 people. email_finder 200 calls, 130 hits, 70 misses billed zero = 650 credits. email_verifier on the 130 hits = 260 credits. 45 of those land on catch-all domains. find_personal_email on 45 LinkedIn URLs = 225 credits, charged on all 45 whether or not an address comes back. 5 credits per email_finder call, 2 credits per email_verifier call, 5 credits per find_personal_email call

ROI math: The first two steps cost you nothing on a miss. The third does. If 26 of those 45 fallbacks return an address, the 225 credits bought 26 personal emails, about 8.7 credits each. Convert at your tier rate on /pricing.

Owned internally by: The person who owns deliverability — RevOps, or whoever gets blamed for a bounce rate

Best for: Teams selling into companies on Google Workspace or a catch-all MX, where the verifier can never say yes and the work address is a coin flip

example
# 1. verify the work address you found
curl -X POST https://api.richapi.ai/api/v1/email_verifier \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "dana.okafor@acme.com"}'

# 2. only if step 1 came back catch-all — this call bills either way
curl -X POST https://api.richapi.ai/api/v1/find_personal_email \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"linkedin_url": "https://www.linkedin.com/in/dana-okafor"}'
the prompt
Find the work email for each person in this list and verify it.
For anyone whose domain comes back catch-all, look up their personal
email from their LinkedIn URL. Tell me how many fallback calls I paid
for and how many of them actually returned an address.

What a catch-all actually tells you

A catch-all domain accepts mail at every address, so the mail server will confirm `dana.okafor@acme.com` and it will confirm `asdfgh@acme.com` with the same cheerfulness. No verifier on earth can resolve that with SMTP, ours included. Anyone who tells you their verifier "handles catch-alls" is selling you a guess with a confidence score stapled to it. So `email_verifier` labels it and stops. That label is the useful output. It means the address might be perfect and there is no way to prove it from outside, which is a different problem from "this address is wrong" and deserves a different response. **[Get 25 free credits — no card](https://app.richapi.ai)**

The fallback, and what it costs

`find_personal_email` takes a LinkedIn profile URL and returns a personal address. It is a reasonable second shot at a person you cannot otherwise reach. Read this part twice, because it is where budgets go wrong. `email_finder` and `email_verifier` are waterfall endpoints. Providers run cheapest-first, and a 2xx carrying `success: false` comes back with `billed: false` and costs zero. **`find_personal_email` is not a waterfall endpoint.** It bills its flat per-call cost on any 2xx, including a 2xx that hands you nothing. Run it on 45 people and you pay for 45 calls, no matter how many addresses land. That asymmetry is why the catch-all bucket has to be a bucket. Running the fallback on your whole list, unfiltered, converts a free-miss workflow into a per-attempt one without anybody noticing until the invoice.

What the personal-email fallback costs, at stated counts

200 people, of which 45 land on catch-all domains. | Step | Count | Rate | Bills on a miss? | Credits | |---|---|---|---|---| | `email_finder` | 200 calls, 130 hits | 5 / call | No, waterfall | 650 | | `email_verifier` | 130 calls | 2 / call | No, waterfall | 260 | | `find_personal_email` | 45 calls, 26 hits | 5 / call | **Yes, every 2xx** | 225 | Rates used above: 5 credits per `email_finder` call, 2 credits per `email_verifier` call, 5 credits per `find_personal_email` call. The 70 finder misses cost zero. The 19 empty fallbacks cost 95 credits and bought nothing, which is the honest price of a second attempt. Per-credit rates differ by package tier, so convert on [the pricing page](/pricing) or model the whole chain in [the waterfall cost calculator](/tools/waterfall-cost-calculator).

Where the personal-email fallback goes wrong

**Treating catch-all as valid.** The cheapest mistake to make and the most expensive to recover from. A catch-all bucket dropped straight into a sequence is a deliverability experiment you are running on your sending domain. **Running the fallback on everything.** Someone reads "fallback" and wires it as a retry on every row. 200 calls instead of 45, 775 extra credits, most of them on people whose work email verified cleanly. **Sending the personal address like it is a work address.** A gmail address for a VP of Engineering is a real contact and a different register. Some markets and some jurisdictions will not thank you for it. That judgment is yours; we return data, we do not send anything. **Missing the LinkedIn URL.** The fallback needs one. If your rows came from a CSV of names and domains, you need [email to LinkedIn](/api/email-to-linkedin) or a profile search first, and that is another billable call before you get to the fallback.

When to run the personal-email fallback instead

If you want the background on catch-all handling itself rather than this specific chain, start at [catch-all email handling](/use-cases/catch-all-email-handling). If your list is still just names and companies, run [waterfall email then verify](/use-cases/waterfall-email-then-verify) first and come back for the leftovers. [The verifier endpoint page](/api/email-verifier) carries the request and response detail for the step that raises the catch-all flag. Coming from a per-lookup credit model, [the Hunter comparison](/alternatives/hunter) is the closest read. Everything else lives on [the use-case index](/use-cases).

The personal-email fallback FAQ

**Which status value means catch-all?** Store whatever the verifier returns, verbatim, and branch on it. **Is the fallback address verified?** The response carries its own status field from the provider that answered. If you want an independent check, `email_verifier` on the personal address is another 2 credits and it is a waterfall call, so a miss there costs nothing. **Can I skip the work email and go straight to personal?** You can, and on most B2B lists you should not. The work address verifies cleanly for most people, and the finder charges you nothing when it fails. Starting with the billable call is starting with the expensive one. **Do I need a credit card?** No. 25 free credits on signup.

Try the personal-email fallback: 25 free credits, no card

Verify a handful of addresses on a domain you already suspect is catch-all, and see what the label does to your list. **[Get 25 free credits](https://app.richapi.ai)**

Frequently asked.

Which status value means catch-all?
Store whatever the verifier returns, verbatim, and branch on it.
Is the fallback address verified?
The response carries its own status field from the provider that answered. If you want an independent check, `email_verifier` on the personal address is another 2 credits and it is a waterfall call, so a miss there costs nothing.
Can I skip the work email and go straight to personal?
You can, and on most B2B lists you should not. The work address verifies cleanly for most people, and the finder charges you nothing when it fails. Starting with the billable call is starting with the expensive one.
Do I need a credit card?
No. 25 free credits on signup.

More playbooks

Try it with 25 free credits.