Playbooks · Skill & signal

Zapier: Find and Verify an Email When a Form Is Filled

Form submission triggers a Zap that calls /email_finder and then /email_verifier. There is no RichAPI Zapier app and no RichAPI trigger, so both calls go through Webhooks by Zapier, Custom Request, which is a paid-plan action. Both endpoints are waterfall, so a call that finds nothing costs zero credits, but Zapier still charges you a task for it.

Last updated September 22, 2026

Pattern: Form trigger (Typeform, Google Forms, Webflow, whatever you use) → Webhooks by Zapier, Custom Request POST to /email_finder → Filter on success → Webhooks by Zapier, Custom Request POST to /email_verifier → wherever the row goes. Four steps, two of them paid Zapier actions.

Credit math: 200 form fills a month: email_finder at 5 credits bills only on the fills that produced an address. At a 60% hit rate, 120 × 5 = 600 credits and the 80 misses are free. email_verifier at 2 credits on those 120 is 240 credits. 840 credits for 200 fills. Zapier's side bills differently: it counts a task for every webhook step that runs, so 200 finder steps plus 120 verifier steps is 320 tasks whether or not an address came back.

ROI math: Two meters run at once and only one of them is miss-free. Below a few hundred fills a month the Zapier plan is usually the larger line item, not the credits. Above that, or if you want the misses to stop costing anything at all, move the same two calls into code or into n8n. Credit tiers on /pricing.

Owned internally by: Ops, marketing, anyone who already administers the Zapier account. No engineer required, but a paid Zapier plan is.

Best for: Inbound forms that collect a name and a company but not a work email, and small teams whose whole automation stack is already Zapier.

example
# There is no RichAPI Zapier app. You configure Webhooks by Zapier ->
# Custom Request. These are the values that go in that step's fields.

# Method:  POST
# URL:     https://api.richapi.ai/api/v1/email_finder
# Data Pass-Through?: false
# Headers:
#   x-api-key:    <your key>
#   content-type: application/json
# Data (JSON):
#   {
#     "first_name":     "{{first_name}}",
#     "last_name":      "{{last_name}}",
#     "company_domain": "{{company_domain}}",
#     "company_name":   "{{company_name}}"
#   }

# The equivalent as curl, for testing before you build the Zap:
curl -s https://api.richapi.ai/api/v1/email_finder \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "content-type: application/json" \
  -d '{"first_name":"Dana","last_name":"Weiss","company_domain":"acme.com"}'

# Second webhook step, same shape:
#   URL: https://api.richapi.ai/api/v1/email_verifier
#   Data: {"email": "{{email}}"}   <- mapped from step 2's output
  1. 01

    Check your Zapier plan first.

    Webhooks by Zapier is a premium built-in action and it is not available on the free plan. If you are on free, this play does not work and no configuration will change that.

  2. 02

    Set the form trigger up and submit one real test entry, so Zapier has a sample payload to map fields from. Zapier is much harder to configure against an empty sample.

  3. 03

    Add Webhooks by Zapier, Custom Request.

    Method POST, URL https://api.richapi.ai/api/v1/email_finder, headers x-api-key and content-type: application/json, and the JSON body with your form fields mapped in.

  4. 04

    Turn Data Pass-Through off.

    Left on, Zapier appends the whole trigger payload to the request and the endpoint gets a body it did not ask for.

  5. 05

    Add a Filter step on the finder output's success field, set to (Boolean) is true.

    A miss is an HTTP 200, so Zapier treats it as a successful step and will happily carry a blank address forward.

  6. 06

    Add the second Custom Request for /email_verifier on the filtered branch, mapping the email from step 2.

  7. 07

    Derive company_domain before the webhook if your form collects a company name rather than a URL. A form field that says 'Acme' is not a domain, and /email_finder needs a domain or a LinkedIn URL.

Zapier: find and verify an email when a form is filled

Start with the two things that will otherwise waste your afternoon. **There is no RichAPI Zapier app.** We checked, because people ask: the app page 404s. No listing, no actions, no triggers. You are not going to find us in the Zapier directory and searching harder won't help. **Webhooks by Zapier is a paid feature.** Custom Request is a premium built-in. On Zapier's free plan the step is visible but you cannot run it. If your Zapier account is free, this page describes something you cannot do today, and it's better you know that in paragraph two than after twenty minutes of field mapping. Still here? Then this is four steps and it works well. [Zapier](/integrations/zapier) has the same caveats with the screenshots.

The Zap

Trigger on the form. Custom Request to `/email_finder`. Filter. Custom Request to `/email_verifier`. Then send the result wherever your rows live. The form trigger is whatever you already use. The interesting fields are on the webhook step, and there are only four: method `POST`, the URL, two headers (`x-api-key` and `content-type: application/json`), and the JSON body with your form fields mapped in. One toggle to get right: **Data Pass-Through off**. On, Zapier bolts the whole trigger payload onto your request, and you end up sending the form's hidden UTM fields to an email endpoint.

Why you need the Filter step

A miss on `/email_finder` returns **HTTP 200** with `success: false`. Zapier reads a 200 as a successful step and moves on, carrying a blank email into step four. Then `/email_verifier` gets an empty string, and you get a Zap history full of green checkmarks and an empty column in your sheet. The Filter on `success` is what makes the Zap honest. Set it to `(Boolean) is true`.

Two meters, and only one of them is forgiving

This is the part of the play that's specific to Zapier and it's the reason we'd point a high-volume reader elsewhere. On our side, `/email_finder` and `/email_verifier` are **waterfall endpoints**. Providers run cheapest-first, and when none of them produce data you get a 2xx with `billed: false` and pay nothing. A miss is free. On Zapier's side, a miss is a task. Zapier counts the step because the step ran. So at 200 form fills with a 60% hit rate you spend 840 credits and 320 Zapier tasks, and the 80 people nobody could find still cost you 80 tasks. That's fine at small volume, where the Zapier plan is a fixed cost you're already paying. It gets annoying at a few thousand fills a month, at which point the identical two calls in an n8n workflow or twelve lines of code stop metering the misses. See [n8n enrich and push hubspot](/use-cases/n8n-enrich-and-push-hubspot) for the same chain with only one meter running. The `execution_log` on each waterfall response shows which providers ran. Zapier will show it to you in the step output, though it's not comfortable reading in that UI.

The failure mode: a company name in the domain field

Forms collect what people type. Somebody types "Acme" or "Acme Inc." or "acme.com/pricing", and your Zap sends that string as `company_domain`. `/email_finder` wants a domain. It will not guess. The fix is a `/clean_domain` call at 0.5 credits before the finder if what you have is a messy URL, or a required domain field on the form if you control the form. What you cannot do is turn a company *name* into a domain with `clean_domain`, because that's a different problem. [domain clean then company enrich](/use-cases/domain-clean-then-company-enrich) covers where that normalisation genuinely helps and where it runs out. The cheapest fix, honestly, is to make the form ask for a work email. If they give you one, skip the Zap.

Where the Zapier form-fill flow goes wrong

No RichAPI trigger exists, so nothing on our side can *start* a Zap. We're an action, always. If you want to react to something happening in our system, you'll be polling, and that's not a pattern we'd recommend building on today. No sending, no sequencing. The verified address lands in your sheet or CRM and your tooling takes it from there.

The Zapier form-fill flow FAQ

**Is there a RichAPI Zapier app coming?** Not one we'll promise a date for. Build the webhook version; it won't break if an app appears. **Can I do this on the Zapier free plan?** No. Custom Request is premium. This is a Zapier billing decision, not ours. **Can a Zap be triggered by RichAPI?** No. There is no trigger. Action only. **Do I get charged for a form fill where nobody is findable?** Zero credits from us, one task from Zapier. **Where do I put the API key?** In the webhook step's Headers field as `x-api-key`. Anyone with edit access to the Zap can read it, so use a dedicated key you can rotate rather than your main one.

Where to go after the Zapier form-fill flow

[Zapier](/integrations/zapier) for the step-by-step with screenshots, [n8n enrich and push hubspot](/use-cases/n8n-enrich-and-push-hubspot) for the same chain without the task meter, [waterfall email then verify](/use-cases/waterfall-email-then-verify) for the billing detail, [people search to email waterfall](/use-cases/people-search-to-email-waterfall) if you need to build the list rather than catch it, and [use cases](/use-cases) for everything else. Tiers on [pricing](/pricing). **25 free credits, no card.** Enough to test both webhook steps by hand before you turn the Zap on.

Frequently asked.

Is there a RichAPI Zapier app coming?
Not one we'll promise a date for. Build the webhook version; it won't break if an app appears.
Can I do this on the Zapier free plan?
No. Custom Request is premium. This is a Zapier billing decision, not ours.
Can a Zap be triggered by RichAPI?
No. There is no trigger. Action only.
Do I get charged for a form fill where nobody is findable?
Zero credits from us, one task from Zapier.
Where do I put the API key?
In the webhook step's Headers field as `x-api-key`. Anyone with edit access to the Zap can read it, so use a dedicated key you can rotate rather than your main one.

More playbooks

Try it with 25 free credits.