# Verify emails in HubSpot with Spaw

Verify new HubSpot contacts with a workflow webhook action that calls the Spaw API and writes the verdict to a property, or through Zapier on other tiers.

Updated: 2026-09-03

HubSpot workflows can call an external URL and use the answer in later actions, which is all a verification step needs. The webhook action is part of Data Hub Professional and Enterprise; on other tiers, the same result comes from a Zap or a Make scenario that triggers on a new contact. No HubSpot app is required in either case, and Spaw does not ask for access to your portal.

## Verify new contacts with a workflow webhook

1. Create a secret API key on the API keys page of your Spaw dashboard.
2. Create three contact properties to hold the answer: a single-line text property for the verdict, one for the reason, and a number property for the risk score. Internal names such as `spaw_verdict`, `spaw_reason` and `spaw_risk_score` keep them easy to find.
3. Create a contact-based workflow whose enrollment trigger is a contact whose email is known, re-enrolling when the email changes.
4. Add the webhook action. Set the method to POST and the URL to `https://spaw.co/api/v1/email`.
5. Choose API-key authentication for the request. The header name is `Authorization` and the value is `Bearer sk_live_…`; HubSpot stores the value as a secret so it never appears in the workflow itself.
6. Customize the request body so it contains only the contact's email under the key `email`:

```json
{
  "email": "mia@acme.com"
}
```

7. Turn on the option that includes the response as data. After the action runs once in a test, the response fields become available to later actions under `data`, for example `data.deliverable`, `data.reason`, `data.risk_score` and `data.did_you_mean`.
8. Add a property-setting action that copies `data.deliverable` into your verdict property, and two more for the reason and the score.
9. Add a branch on the verdict property. Test the workflow by enrolling a contact whose email is `deliverable@spaw.test`; it answers a canonical result, costs nothing and never appears in your Spaw history.

The full list of fields the webhook receives is on the [single-address endpoint page](/docs/api/verify-email). Everything in it can be written to a property the same way.

## Other tiers: Zapier or Make

Without the webhook action, use a new-contact trigger from HubSpot in Zapier or Make, a Spaw verification step (Webhooks by Zapier or Make's HTTP module today, the Spaw apps once they are listed), and an update-contact action that writes the three properties. The [Zapier page](/integrations/zapier) has the exact request. The workflow branches described below then run on the properties as usual.

## Existing contacts

For the contacts already in the portal, export the emails, run them through a bulk verification on the Spaw dashboard or the API, and import the result CSV back into HubSpot with the verdict column mapped to the property. The [list cleaning checklist](/guides/email-list-cleaning-checklist) covers what to do with each verdict on an old list.

## What to do with the verdict

Branch the workflow on the verdict property. `deliverable` contacts go on to marketing emails and sequences. For `risky` contacts, look at the reason: [`catch_all`](/docs/reasons/catch_all) means the domain accepts everything and the mailbox is unconfirmed, [`role`](/docs/reasons/role) means a shared inbox such as info@; both are usually worth keeping out of cold sequences but fine for transactional mail. `undeliverable` contacts should be set to not marketing-eligible or handed to a review list, and when `data.did_you_mean` is filled, an internal notification with the suggested address is the fastest way to recover the lead.

## Cost

Each enrollment that answers deliverable or risky spends 1 credit; undeliverable answers and repeats of the same address within seven days are free. A re-enrollment after an email edit is a new address and bills normally. Keys may make 5 requests per second; HubSpot spreads workflow actions out enough that this rarely matters, but a bulk enrollment of thousands of contacts should be done through a bulk run instead.

Reference: https://spaw.co/integrations/hubspot
