# Zapier and Make Recipes for Email Validation

URL: https://email-validation.org/docs/guides/zapier-and-make-templates/
Updated: 2026-11-06

> Documentation index: https://email-validation.org/llms.txt

These recipes connect a CRM, a spreadsheet, a form or a mailing list to the API: a new record comes in, its email
address is checked, and the result goes back where your team works. Each recipe is written for Zapier and for Make.

Our Zapier and Make apps are not listed on those platforms yet, so there are no one-click templates to copy today.
Every recipe below works now with the platform's built-in HTTP step, set up once as shown in
[The check step](#check). When the apps are listed, the same recipes become templates you copy in one click.

## Before you start

- **An API key for the automation.** Create one on the [API keys page](https://email-validation.org/app/api-keys/) with the permission
  "Validate addresses", and give it a [daily credit cap](https://email-validation.org/docs/authentication/#limits) so a busy automation cannot
  spend more than you expect.
- **A place for the result.** Create it before you build: a contact property in HubSpot, a text field in
  Salesforce, a custom field in Pipedrive or columns in your sheet. It will hold one of the five
  [result statuses](https://email-validation.org/docs/statuses/): `valid`, `invalid`, `catch_all`, `unknown` or `disposable`. For Mailchimp,
  create a tag.
- **A free test.** Try each recipe with `accepted@sandbox.email-validation.org` or another
  [test address](https://email-validation.org/docs/test-addresses/): they cost nothing.
- **New records only.** Every recipe starts on new records. A start on *updated* records would run again when the
  result is written back, and check the same address a second time. You pay one credit per check with any result but
  `unknown`.

## The check step

Every recipe uses this step in the middle. It sends the address to `POST https://api.email-validation.org/v1/validate` with your API key in
the `Authorization` header (never in the URL), and hands the answer to the next step.

**In Zapier**, add an action step with **Webhooks by Zapier** and choose **Custom Request**:

1. Method `POST`, URL `https://api.email-validation.org/v1/validate`.
2. Data: `{"email": "…"}`, inserting the email field from the first step.
3. Headers: `Authorization` = `Bearer ev_live_…` and `Content-Type` = `application/json`.
4. Test the step. Later steps can now use `status`, `reason`, `action` and `did_you_mean`.

**In Make**, add the **HTTP** app's **Make a request** module:

1. URL `https://api.email-validation.org/v1/validate`, method `POST`.
2. Headers: `Authorization` = `Bearer ev_live_…`.
3. Body type **Raw**, content type **JSON (application/json)**, request content `{"email": "…"}` with the email
   mapped in from the first module.
4. Turn on **Parse response**, so later modules can map `status`, `reason`, `action` and `did_you_mean`.

For [EU data residency](https://email-validation.org/docs/eu-data-residency/), use `https://api-eu.email-validation.org` instead: the same key works on both.

What the fields hold: `status` is one of the five statuses; `reason` says why; `action` is the recommended next
step (`send`, `send_with_caution`, `remove` or `retry_later`); `did_you_mean` suggests a correction when the address
looks like a typo, and is empty otherwise. To write nothing when a check cannot finish (for example when the key
reaches its daily cap), add a filter before the last step that continues only when `status` exists.

## HubSpot: new contacts get a status property

**Zapier**

1. Trigger: **HubSpot**, event **New Contact**.
2. [The check step](#check), with the contact's email.
3. **HubSpot**, event **Update Contact**: pick the contact from step 1 and map `status` into your status property.

**Make**

1. **HubSpot CRM**, **Watch Contacts** (new contacts).
2. [The check step](#check), with the contact's email.
3. **HubSpot CRM**, **Update a Contact**: map the contact ID from module 1 and `status` into your status property.

To check contacts inside HubSpot workflows instead, without Zapier or Make, see
[Validate emails in HubSpot workflows](https://email-validation.org/docs/guides/hubspot/).

## Salesforce: new leads and contacts get a status field

**Zapier**

1. Trigger: **Salesforce**, event **New Lead** (or **New Contact**).
2. [The check step](#check), with the lead's or contact's email.
3. **Salesforce**, event **Update Lead** (or **Update Contact**): pick the record from step 1 and map `status` into
   your status field. Map `did_you_mean` or `reason` into further fields if you created them.

**Make**

1. **Salesforce**, **Watch records**, with the object **Lead** (or **Contact**).
2. [The check step](#check), with the record's email.
3. **Salesforce**, **Update a record**: the same object, the record ID from module 1, and `status` in your status
   field.

## Pipedrive: new persons get a status custom field

**Zapier**

1. Trigger: **Pipedrive**, event **New Person**.
2. [The check step](#check), with the person's primary email.
3. **Pipedrive**, event **Update Person**: pick the person from step 1 and map `status` into your custom field.

**Make**

1. **Pipedrive CRM**, **Watch Persons**.
2. [The check step](#check), with the person's primary email.
3. **Pipedrive CRM**, **Update a Person**: map the person ID from module 1 and `status` into your custom field.

## Google Sheets: new rows get their result

Add **Status**, **Reason** and **Suggestion** columns to the sheet first.

**Zapier**

1. Trigger: **Google Sheets**, event **New Spreadsheet Row**, with your spreadsheet and worksheet.
2. [The check step](#check), with the email column.
3. **Google Sheets**, event **Update Spreadsheet Row**: the same worksheet, the row from step 1, and `status`,
   `reason` and `did_you_mean` in the three columns.

**Make**

1. **Google Sheets**, **Watch New Rows**, with your spreadsheet and sheet.
2. [The check step](#check), with the email column.
3. **Google Sheets**, **Update a Row**: the same sheet, the row number from module 1, and the three results in their
   columns.

To check a whole sheet at once rather than each new row, use [Validate emails in Google Sheets](https://email-validation.org/docs/guides/google-sheets/).

## Typeform and Google Forms: new answers go to a sheet with their result

Give the sheet a header row with **Email**, **Status** and **Suggestion** (or **Next step**) columns.

**Zapier**

1. Trigger: **Typeform**, event **New Entry**, or **Google Forms**, event **New Form Response**, with your form.
2. [The check step](#check), with the answer to the email question.
3. **Google Sheets**, event **Create Spreadsheet Row**: the email answer, `status`, and `did_you_mean` (or
   `action`) in their columns.

**Make**

1. **Typeform**, **Watch Responses**, or **Google Forms**, **Watch Responses**, with your form.
2. [The check step](#check), with the answer to the email question.
3. **Google Sheets**, **Add a Row**: the email answer, `status`, and `did_you_mean` (or `action`) in their columns.

## Mailchimp: tag new subscribers to remove

Create the tag in Mailchimp first, for example *Remove: email check*.

**Zapier**

1. Trigger: **Mailchimp**, event **New Subscriber**, with your audience.
2. [The check step](#check), with the subscriber's email address.
3. **Filter by Zapier**: only continue if `action` exactly matches `remove`.
4. **Mailchimp**, event **Add Subscriber to Tag**: the same audience, the email address from step 1 and your tag.

**Make**

1. **Mailchimp**, **Watch Subscribers**, with your audience.
2. [The check step](#check), with the subscriber's email address.
3. A filter on the next link: `action` equal to `remove`.
4. **Mailchimp**, **Add/Remove Member Tags**: the same audience, the email address from module 1 and your tag.

`action` is `remove` for `invalid` and `disposable` addresses, and for `valid` ones with a warning such as a known
spam trap. A segment on the tag then shows who to clean out before the next campaign.

## One-click templates

When our apps are listed on Zapier and Make, each recipe above becomes a template: the app's **Validate Email**
step (Zapier) or **Validate an email** module (Make) replaces the HTTP step, and your API key is stored in the app's
connection instead of a header. Until then, the HTTP step makes the same check at the same cost. For other tools and
for bulk lists, see the [no-code recipes](https://email-validation.org/docs/guides/no-code/).
