Enrich contacts before a HubSpot email send — Lusha in HubSpot Breeze

Example outputs in this workflow are illustrative — they reflect the structure, fields, and format of real Lusha API output, but were not pulled from a live session. Build this workflow with your own Lusha API key and HubSpot portal to see live results.

A contact list that looked clean three months ago isn’t clean today. Contacts move on. Emails bounce. Titles change. Every unverified contact on a campaign list is a potential bounce that damages your sending domain, a message that lands with someone who left the company, or an outreach to a title that no longer reflects the person’s actual role or buying authority.

This workflow runs a Lusha verification pass on every contact enrolled in a HubSpot list before the campaign is activated. It flags bounced emails, marks departed contacts for suppression, updates stale titles, and returns a clean verified list — so the campaign reaches the right people at the right addresses, and your domain reputation stays intact.

Requires: Lusha API key · HubSpot Workflows (Professional or Enterprise) · HubSpot Marketing Hub · HubSpot admin access

How it works

This workflow triggers when a contact is added to a designated pre-send verification list in HubSpot. It runs a Lusha verification pass on each contact, suppresses departed contacts, updates stale data, and marks each contact as verified before the campaign send is activated.

1

Trigger — Contact added to campaign verification list

Set the enrollment trigger to “Contact is member of list — [your pre-send list].” When you build a campaign audience in HubSpot, add contacts to this verification list first. The Workflow fires immediately for each contact added and completes verification before you activate the send.

2

Action — Fire webhook to verify contact via Lusha

Add a “Send a webhook” action. POST to https://api.lusha.com/v2/contacts/search with the contact’s email address. Lusha returns their current verified status — confirmed in seat, departed, or not found — along with their current title and verified email address.

3

Decision — Route by verification result

Add an If/Then branch on the Lusha response. Three paths: Departed — contact has left the company. Email changed — contact is in seat but email address has changed. Confirmed — contact is verified in seat with current email. Each path triggers a different action.

4

Action — Suppress departed contacts

On the Departed path: set lusha_contact_status to “Departed,” set lusha_send_suppressed to true, and remove the contact from the campaign send list. The contact remains in HubSpot for reporting purposes but is excluded from the send.

5

Action — Update stale contact data

On the Email changed and Confirmed paths: update the email address, job title, and seniority with the current verified values from Lusha. Personalization tokens in the campaign email pull from these updated fields — so the send goes out with accurate data, not stale records.

6

Output — Verified send list ready for campaign activation

Every contact on the campaign list is verified, updated, or suppressed. A verification summary property on each contact tells you the outcome — confirmed, departed, or email updated. Review the suppressed count in the list view before activating the send.

Example verification summary

 

Q3 Outbound — Series B Companies

MetricResult
Original list size284 contacts
Confirmed in seat251 ✓
Suppressed (departed)18
Emails updated9
Titles updated24
Not found in Lusha6
Net sendable list257 verified contacts

Custom properties to add to the Contact object

 

Property labelTypeInternal name
Lusha — Send suppressedSingle checkboxlusha_send_suppressed
Lusha — Verification resultDropdown (Confirmed / Departed / Email updated / Not found)lusha_verification_result
Lusha — Verification dateDate pickerlusha_verification_date

 

Build steps

 

1

Create the verification properties

In HubSpot → Settings → Properties, add the three verification properties listed in the table above to the Contact object. Create lusha_verification_result as a Dropdown select with four options: Confirmed, Departed, Email updated, Not found.

2

Create the pre-send verification list

In HubSpot → Contacts → Lists → Create list → Active list. Name it “Lusha Pre-Send Verification.” This is the list you add contacts to before every campaign. The Workflow fires automatically for each contact enrolled.

3

Build the Contact-based Workflow

In HubSpot → Automation → Workflows → Create Workflow → Contact-based. Set enrollment trigger to “Contact is member of list — Lusha Pre-Send Verification.” Enable re-enrollment so contacts are re-verified each time they are added to the list for a new campaign.

4

Add the verification webhook

Add action → Send a webhook. POST to https://api.lusha.com/v2/contacts/search. Request body: { "emailAddress": "{{contact.email}}" }. Add header api_key: YOUR_LUSHA_API_KEY.

5

Add If/Then branches for each verification result

Add an If/Then branch checking the webhook response. Departed path: set lusha_contact_status to Departed, set lusha_send_suppressed to true, set lusha_verification_result to Departed. Email changed path: update email, set result to Email updated. Confirmed path: set result to Confirmed. All paths: set lusha_verification_date to today.

6

Create your verified send list

Create a second Active list filtered by “Lusha verification result is Confirmed OR Email updated” AND “Lusha send suppressed is false.” Use this list as the actual campaign audience in HubSpot Marketing Hub. Departed contacts are automatically excluded.

7

Review suppressed count before activating the send

Before activating the campaign, check the verification list view. Filter by lusha_verification_result = Departed to see the suppressed contacts. Review the count — a high suppression rate signals that the contact list source needs attention before the next campaign.

8

Test with a small list

Add 10 to 20 test contacts to the verification list including at least one you know has recently changed companies. Confirm the Workflow fires, the departed contact is suppressed, and the verification date is set on all contacts. Check the Workflow history tab if results are unexpected.

Example outputs in this workflow are illustrative — they reflect the structure, fields, and format of real Lusha API output, but were not pulled from a live session. Build this workflow with your own Lusha API key and HubSpot portal to see live results.

Built by: Lusha
Time to build: 30 min
Difficulty: Easy
Tools: HubSpot, Lusha
Type: Template

FAQ

  • How is this different from HubSpot's native email validation?

    HubSpot’s native email validation checks whether an email address is syntactically valid and whether the domain exists — it catches typos and fake addresses. It has no way of knowing whether the person still works at the company, whether the email address has changed since the contact was created, or whether the contact has moved to a different role. Lusha’s verification checks against a live, independently sourced B2B contact database. A contact with a syntactically valid email that bounces because the person left six months ago passes HubSpot’s native check and fails Lusha’s. Both checks are useful — run HubSpot’s email validation when contacts are created and Lusha’s verification before every campaign send.

  • Should I run this before every campaign or only certain types?

    Run it before every campaign that sends to contacts you haven’t verified in the last 30 days. If you’re running the scheduled company enrichment from Workflow 5 weekly, contacts enriched recently may not need re-verification before a campaign — add an enrollment filter checking whether <code>lusha_verification_date</code> is more than 30 days ago and skip the API call for recently verified contacts. This reduces credit consumption significantly for teams running frequent campaigns against a well-maintained contact database.

  • What happens to suppressed contacts — are they permanently removed from HubSpot?

    Suppressed contacts remain in HubSpot with <code>lusha_send_suppressed = true</code> and <code>lusha_verification_result = Departed</code> — they’re excluded from the verified send list but preserved in the portal for reporting. This is intentional: the suppression count is useful data for understanding list quality and decay rates over time. If you want to find replacement contacts for suppressed contacts — particularly for named account campaigns where coverage matters — run the Enrich Contact Skill or the Buying Group play on the companies where contacts were suppressed.

  • How long does verification take for a large campaign list?

    HubSpot Workflows process contacts sequentially through webhook actions — one API call per contact. At roughly one to two seconds per call, a campaign list of 500 contacts takes approximately 8 to 15 minutes to verify. For very large campaigns of 2,000 or more contacts, trigger the verification workflow 24 hours before the planned send date rather than the same day. This gives the Workflow enough time to complete before you need to review the suppression report and activate the send. HubSpot’s Workflow processing rate also depends on your portal plan — Enterprise plans process faster than Professional.

  • What should I do with contacts flagged as “not found in Lusha”?

    “Not found” means Lusha couldn’t match the contact to a verified record — this happens most often with personal email addresses, contacts at very small companies with limited Lusha coverage, or contacts where the name and email combination doesn’t resolve to a unique match. For these contacts, include them in the send but flag them for manual review after the campaign — if the email bounces, suppress and remove. If it delivers and gets a reply, the contact is reachable and the record can be manually updated. For high-value named account campaigns where every contact matters, run a manual lookup in Lusha Workspace on the unresolved contacts before the send.

Ready to run this?

Connect once, run anywhere. Works in Claude, ChatGPT, n8n, Clay, or any agent connected to Lusha.