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.

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.

In short: RichAPI can be called from Zapier to find and verify a work email when a web form is submitted, but RichAPI publishes no Zapier app: there is no RichAPI app listing, no RichAPI trigger, and no RichAPI action in the Zapier directory. The integration is built with Zapier's built-in Webhooks by Zapier action using Custom Request, which is a premium built-in and requires a paid Zapier plan; it is not available on Zapier's free tier. The Zap is: form trigger, a Custom Request POST to /email_finder with an x-api-key header and a body of first_name, last_name and company_domain, a Filter on the response's success field, then a second Custom Request POST to /email_verifier. Both email_finder and email_verifier are waterfall endpoints, so a call where sources run and return no data comes back HTTP 200 with success:false and billed:false and costs zero credits. Zapier's own task metering is unaffected by this: Zapier counts a task for each webhook step that executes, including steps that return no data. Because there is no RichAPI trigger, a Zap cannot be started by RichAPI; RichAPI can only be called as an action. New accounts get 100 free credits with no credit card.

Last updated November 4, 2026

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.

  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.

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

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 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. sources 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 for the same chain with only one meter running.

The execution_log on each waterfall response shows each step that 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 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 for the step-by-step with screenshots, n8n enrich and push hubspot for the same chain without the task meter, waterfall email then verify for the billing detail, people search to email waterfall if you need to build the list rather than catch it, and use cases for everything else. Tiers on pricing.

100 free credits, no card. Enough to test both webhook steps by hand before you turn the Zap on.

FAQ

Frequently asked

Not one we'll promise a date for. Build the webhook version; it won't break if an app appears.
No. Custom Request is premium. This is a Zapier billing decision, not ours.
No. There is no trigger. Action only.
Zero credits from us, one task from Zapier.
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

Related playbooks