Integration · HubSpot

Improve email deliverability in HubSpot by verifying contacts

HubSpot drops contacts from future marketing emails once they hard bounce. To improve email deliverability in HubSpot before that happens, check every new contact’s mailbox when it arrives and keep the undeliverable ones out of your sends.

Updated October 10, 2026 · 7 min read

To improve email deliverability in HubSpot, stop bad addresses at the door. HubSpot already drops contacts from future marketing emails once they hard bounce, but by then the bounce has happened and counted against your sender reputation. A mailbox check when the contact is created catches typos, dead mailboxes and disposable addresses first.

This guide shows three working setups: HubSpot’s own Send a webhook action, a Custom code action, and the Emailvalidation app on Zapier. All three call the same endpoint of our email validation API, GET /v1/info, and write the answer to a contact property you can filter on.

What you get

For every new contact, the API runs six checks: syntax, DNS and MX lookup, an SMTP mailbox check that never sends an email, and detection of disposable, role and free-provider addresses. HubSpot stores the answer. The fields you will use most:

FieldValuesUse in HubSpot
statedeliverable, undeliverable, unknownKeep undeliverable out of marketing sends
reasonfor example invalid_mailbox, invalid_mx, low_deliverabilityTell typos from dead domains; low_deliverability marks catch-all domains
disposabletrue / falseFlag throwaway sign-ups
did_you_meana suggested address or emptyShow sales a likely typo fix

unknown means the receiving mail server gave no clear answer (timeout, no connection). Treat it as “not checked yet”, not as bad. Catch-all domains accept every address, so their mailboxes can’t be confirmed one by one; they come back as deliverable with the reason low_deliverability. The catch-all email guide explains how to handle them.

HubSpot email validation: which setup to use

SetupHubSpot subscriptionCodeBest for
Send a webhookData Hub Professional or EnterpriseNoneMost teams with Data Hub
Custom codeData Hub Professional or EnterpriseJavaScript or Python (beta)Error handling, several outputs at once
ZapierAny HubSpot planNoneTeams without Data Hub

HubSpot lists both workflow actions under Data Hub Professional and Enterprise (webhooks, custom code).

Setup in steps: Send a webhook

Before you start, create an API key in your emailvalidation.io account, store it as a secret in HubSpot, and create a single-line text contact property, for example “Email validation state”.

  1. Go to Automation > Workflows and create a contact-based workflow. Enroll contacts when they are created, or when their Email property changes.
  2. Click the + icon to add an action. In the left panel, under Data ops, select Send a webhook.
  3. Set Method to GET and Webhook URL to https://api.emailvalidation.io/v1/info.
  4. Set Authentication type to API key. Enter apikey as the API key name, choose Request header as the API key location, and select your secret in the API key dropdown. The key never appears in the workflow itself.
  5. Under Query parameters, enter the Key email and select the contact’s Email property.
  6. Expand Test action, pick a test contact and click Test. The Response tab shows the JSON answer.
  7. Select state and reason as outputs. HubSpot advises choosing only outputs that are present in every response; these two always are.
  8. Add an Edit record action and set “Email validation state” to the webhook’s state output.
  9. Click Save and turn the workflow on.

On the free emailvalidation.io plan, the API accepts 10 requests a minute. If you enroll many contacts at once, open Configure rate limit on the action, turn on Turn on rate limiting and set 10 action executions per minute. Paid plans have no per-minute limit.

Setup in steps: Custom code

The Custom code action gives you full control over errors. It runs Node.js or Python (beta), has 20 seconds to finish and can use the axios library.

  1. Add an action and search for Custom code.
  2. Click Add secret and create one named EMAILVALIDATION_API_KEY with your API key as the value.
  3. Under Properties to include in code, select the contact’s Email property and name it email.
  4. Paste the code below.
  5. Under Data outputs, add state (string), reason (string) and disposable (boolean).
const axios = require('axios');

exports.main = async (event, callback) => {
  const email = event.inputFields['email'];

  try {
    const res = await axios.get('https://api.emailvalidation.io/v1/info', {
      params: { email },
      headers: { apikey: process.env.EMAILVALIDATION_API_KEY },
      timeout: 15000,
    });

    callback({
      outputFields: {
        state: res.data.state,
        reason: res.data.reason,
        disposable: res.data.disposable,
      },
    });
  } catch (err) {
    const status = err.response ? err.response.status : 0;
    // Quota/rate limit (429) or server error: throw, and HubSpot retries the action later.
    if (status === 429 || status >= 500) {
      throw err;
    }
    // Anything else (wrong key, bad input, timeout): record "unknown" and let the contact continue.
    callback({ outputFields: { state: 'unknown', reason: '', disposable: false } });
  }
};

When the code throws a 429 or 5XX error from an axios call, HubSpot retries the action for up to three days, starting one minute after the failure. A 401 (missing or wrong key) or 422 (invalid input) won’t fix itself, so the code records unknown instead of retrying, and so does a request that times out after 15 seconds.

Setup in steps: Zapier

Zapier works with every HubSpot plan. The Emailvalidation app on Zapier has one action, Verify E-Mail Address, and ready-made templates such as “Verify new HubSpot form submissions with Emailvalidation” and “Unsubscribe new HubSpot contacts with invalid emails via Emailvalidation”.

  1. Connect your emailvalidation.io account in Zapier, as described on the Zapier integration page.
  2. Create a Zap with the HubSpot trigger New Contact (or New Form Submission).
  3. Add the Emailvalidation action Verify E-Mail Address and map the contact’s email to E-Mail Address.
  4. Test the step to see the fields it returns.
  5. Add the HubSpot action Update Contact and write the result into your “Email validation state” property.

A Zap with three steps needs a paid Zapier plan; Zapier’s free plan runs two-step Zaps and 100 tasks a month (Zapier pricing, checked October 2026). Make’s HTTP app (Make a request) and n8n’s HTTP Request node can call the same endpoint if you use those tools instead.

Example: a workflow that improves HubSpot email deliverability

A B2B team collects leads through a HubSpot form and sends a welcome sequence:

  1. Trigger: contact is created.
  2. Send a webhook checks the address and returns state and reason.
  3. Edit record writes state to “Email validation state”.
  4. A branch based on one property or action output splits on that property:
    • undeliverable: Add to static list “Undeliverable – do not email” and Send internal email notification to the contact owner, who can ask the lead for a corrected address.
    • deliverable or unknown: continue to the welcome sequence.
  5. Exclude the “Undeliverable – do not email” list in every marketing email.

Add to static list needs Marketing Hub Professional or Enterprise. Without it, filter your sends on the “Email validation state” property instead.

For contacts you already have, export them to CSV, run the file through the bulk endpoint or our email list cleaning service, and import the results back into HubSpot to set the same property. For a quick look at a handful of addresses, the bulk email verifier on our website takes up to 50 per run.

Removing bad addresses is one part of deliverability. Authentication (SPF, DKIM, DMARC), list hygiene and engagement matter as much; the email deliverability guide covers them, and email bounce rate explains the thresholds mailbox providers watch.

Pricing note

Each check uses 1 credit, and only successful calls count: a request rejected with 422 or a server error costs nothing. The free plan includes 100 credits a month. Paid plans start at $9.99 a month for 5,000 credits (Small), then $34.99 for 25,000 (Medium) and $94.99 for 100,000 (Large), excluding VAT; see email validation API pricing. A workflow that checks only new contacts uses one credit per contact; re-enrolling on every Email property change adds a credit per change.

Sources

Checked October 10, 2026: HubSpot Knowledge Base, Use webhooks with HubSpot workflows (subscription, fields, outputs, retries, rate limits); HubSpot Developers, Custom code workflow actions (secrets, inputs, outputs, 20-second limit, libraries); HubSpot Knowledge Base, Choose your workflow actions; HubSpot Knowledge Base, Email error when sending to a contact and Hard and soft bounces; Zapier, Emailvalidation integrations and HubSpot integrations; Zapier pricing; Make, HTTP app; n8n, HTTP Request node.

Email validation in other apps

Frequently asked questions

How do I validate emails in HubSpot?

Add an action to a contact workflow that sends the contact’s email address to an email validation API and stores the answer in a contact property. With Data Hub Professional or Enterprise you can use the Send a webhook or Custom code action; on any HubSpot plan you can use the Emailvalidation app on Zapier.

What does “failed validation” mean in HubSpot?

HubSpot shows “The email address in the ‘to’ field failed validation” when an address fails its own check because of a syntax error; some role-based addresses such as sales@ can trigger it too. It says nothing about whether a well-formed address has a working mailbox; a mailbox check answers that before you send.

Which HubSpot plan do I need for webhooks in workflows?

HubSpot lists the Send a webhook and Custom code workflow actions for Data Hub Professional and Enterprise. Without those, use Zapier: its HubSpot triggers such as New Contact work with the Emailvalidation app’s Verify E-Mail Address action.

Does verifying contacts improve deliverability in HubSpot?

It removes one cause of poor deliverability: sending to addresses that don’t exist. Hard bounces weigh on your sender reputation, and HubSpot drops contacts that hard bounce from future marketing emails. Checking addresses on entry keeps them out of your campaigns before the first bounce.

Email validation API

Validate emails in your app

emailvalidation.io checks syntax, MX records and the mailbox over SMTP, flags disposable, role and free addresses and returns a quality score, in one request.

/v1/info Email validation API Read the documentation

100 free validations every month. No credit card required.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "valid_mailbox",
  "did_you_mean": ""
}

Keep reading

Start using our email validation software today!

Get 100 validations per month for free