Zapier + Hunter.io lead enrichment automation (form + loops)

Build a two-Zap lead enrichment workflow with one loop per Zap, Hunter Domain Search, contact review, duplicate checks, and optional Salesforce sync.

Oct 14, 2026
Zapier + Hunter.io lead enrichment automation (form + loops)
Zapier and Hunter.io lead enrichment automation turns 1 to 2 hours of morning company research into a single form submission. Instead of copying contacts into a spreadsheet by hand, a Zapier workflow pulls email addresses from Hunter.io and queues them for review before anything touches your CRM.
This guide walks through a practical, Zapier-friendly architecture that:
  • collects a list of target companies from a form
  • enriches contacts using Hunter.io
  • writes clean rows into a spreadsheet for review
  • optionally syncs approved rows into Salesforce

Zapier and Hunter.io lead enrichment automation: two Zaps, one loop each

Looping by Zapier does not support nested loops. A Zap cannot be turned on with more than one Looping step. (Per Zapier's help docs as of October 2026.)
Use this split:
  • Zap 1: accept a batch, normalize the inputs, and loop over companies. For each iteration, create one company job in a connected table.
  • Zap 2: trigger on one new company job, retrieve that company’s Hunter results, and loop over the returned contacts. There is no company loop inside Zap 2.
Use a connected table with a supported new-record trigger as the handoff. This is an asynchronous job queue, not a Sub-Zap that must return multiple loop results.

Zap 1: collect and queue companies

A structured form lets you require a company name or domain and keeps signatures and forwarded text out of the input.
  1. Capture a submission ID and the company list.
  2. Trim whitespace, remove blank entries, and normalize domains. Do not aggressively strip punctuation from company names.
  3. Use one Looping step over the companies.
  4. In each iteration, create a job with the submission ID, company name, domain if known, and a stable job key.
  5. Record queued status and skip a job key that has already been processed.
A domain is preferable to an ambiguous company name. Have someone review unresolved names before enriching the wrong organization.

Zap 2: enrich one company and loop over its contacts

Step A: receive one company job

Trigger from the new company-job record. Read its company or domain fields directly; do not add another company Looping step.

Step B: call Hunter Domain Search

Use a supported Hunter action or an authenticated request to the documented endpoint. Hunter's API reference distinguishes three endpoints (as of October 2026):
  • Domain Search: returns email addresses found for a domain, with sources and available contact metadata. It accepts a domain or company name; supplying a domain is more precise.
  • Email Finder: resolves an individual’s email from identifying information such as a person’s name and company domain. It is not a replacement for a company-wide search.
  • Email Verifier: checks an address separately when additional verification is needed.
Handle pagination deliberately. Domain Search is paginated; a single response is not necessarily every available contact. For a small first release, set a supported result limit and record that the search is capped. For larger coverage, queue additional page jobs or retrieve pages in a tested code step before the contact loop. Keep only one Looping step per Zap and respect both providers’ limits.

Step C: loop over returned contacts

Map the aligned contact fields into one Looping step. Each iteration now represents one email address, not one company.
If the result list is empty, mark the company job as No results and stop that path. Do not create a blank contact row.

Step D: classify only when supported by evidence

Optional AI labels can help review, but a model’s confidence score is not a verified fact. Supply a controlled category list and allow Unknown. Preserve the source title and company information so a reviewer can check the label.
Do not invent missing job titles, phone numbers, industries, or personal details.

Step E: write review rows

Store:
  • Company and domain
  • Available contact name and title
  • Email and verification status, when supplied
  • Optional phone, only if actually returned
  • Classification, marked as inferred when AI-generated
  • Source URL or source record, retrieval timestamp, and job key
  • Review status and an Approved field
Deduplicate by a normalized email and your chosen tenant/account scope. Keep provenance and process only the contact data you need. Finding an address is not consent to receive marketing.

Optional: push approved rows into Salesforce

Once the spreadsheet is the source of truth, create a separate Zap:
  • Trigger: new or updated spreadsheet row where Approved = true
  • Action: create or update Lead in Salesforce

Common gotchas (and how to avoid them)

  • Do not map preview-only loop fields like preview_loop_values into downstream steps. Zapier's docs confirm that field is not available in live runs.
  • Expect volume-driven costs. Enrichment plus spreadsheet writes can consume multiple Zapier tasks per contact.
  • Handle “no results” gracefully. If Hunter returns no matches for a company, skip and continue.

Get help building your lead enrichment workflow

Most Zapier and Hunter.io builds break at the handoff between the two Zaps, or at pagination, when a capped search quietly drops contacts. If you want this built right the first time, book a ZoomFlow session. One of our consultants will map your inputs, required fields, and volume with you live, then build the working version on the call.