Vet Typeform leads with ZeroBounce before they hit HubSpot

Every new Typeform response gets its email checked. Verified leads sync to HubSpot, suspicious ones go to a Slack triage channel.

Deterministic Code
TypeformZeroBounceHubSpotSlackSalesMarketingLead EnrichmentData SyncNotifications & Alerts
PromptCreate

Build a code workflow that gates Typeform lead submissions through ZeroBounce email validation before they ever reach HubSpot. This is a deterministic pipeline with discrete nodes, so a code workflow is the right fit.

Trigger: an incoming webhook from Typeform. The form is our demo request form, and Typeform's outgoing webhook delivers the full form response payload. The submitter's email lives inside form_response.answers, alongside the other form fields and form_response.form_id.

Step 1. Parse the webhook payload. Pull out the submitter's email address, the other form answers (first name, last name, company, phone if present), and the form_id.

Step 2. Call ZeroBounce Validate Email on that address. The response returns a status field that will be one of valid, invalid, catch-all, unknown, spamtrap, abuse, or do_not_mail, plus a sub_status field with more detail.

Step 3. Branch on status. If status is valid, send the lead to HubSpot. If status is catch-all, make a second ZeroBounce call to AI Email Scoring on the same address; if the returned score is 8 or higher, send the lead to HubSpot, otherwise treat it as bounced. If status is invalid, spamtrap, abuse, do_not_mail, or unknown, treat it as bounced.

Good path. Call HubSpot Batch Upsert Contacts with email as the unique property. Map the form answers onto standard contact properties (firstname, lastname, company, phone) and set lead_source = "typeform" so we can attribute the contact later.

Bounced path. Call Slack Send a Message to a #leads-bounced channel with a short summary: the submitter's email, the ZeroBounce status, the sub_status, the AI score if one was fetched, and the Typeform form_id. Marketing ops will use this channel to investigate suspicious submissions.

Make the Slack channel name, the lead_source value, the catch-all score threshold, and the HubSpot property mapping easy to edit later, so I can reuse this same flow on other Typeform forms without rewriting nodes.

What does this prompt do?

  • Catches each new Typeform submission in real time and checks the submitter's email with ZeroBounce.
  • Sends only verified leads into HubSpot as new or updated contacts, tagged with the source form.
  • Runs a second quality score on catch-all addresses so only high-confidence catch-alls reach the CRM.
  • Drops bad, abusive, or low-scoring submissions into a Slack triage channel for your marketing ops team.

What do I need to use this?

  • A Typeform account with the form already configured to send outgoing webhooks on submission.
  • A ZeroBounce account with credits for email validation and AI email scoring.
  • A HubSpot account where new contacts should land.
  • A Slack workspace and a channel for bounced or suspicious leads, for example #leads-bounced.

How can I customize it?

  • Point the workflow at any Typeform that collects an email, not just a demo request form.
  • Change which form answers map to which HubSpot properties, including the lead source or campaign tag.
  • Tune the catch-all score threshold, or change which result statuses count as bounced.
  • Send the Slack alert to a different channel and add extra form fields to the message.

FAQs

What is a catch-all email and why does it get a second check?
A catch-all domain accepts mail for any address at that domain, so a basic validation cannot fully confirm the inbox is real. We run an extra quality score on those addresses and only forward the strong ones to HubSpot.
Can I use this with a form other than a demo request?
Yes. Any Typeform that collects an email can plug into this flow, including waitlists, contact forms, content downloads, and event signups.
Will this overwrite existing HubSpot contacts?
No. The workflow uses HubSpot's batch upsert, which updates an existing contact when the email already exists and creates a new one when it does not.
What happens to a lead that gets flagged as bad?
It never reaches HubSpot. Instead, a Slack message lands in your triage channel with the email, the reason it was flagged, and the form it came from, so your team can review or reply manually.
How fast does it run?
As soon as Typeform delivers the response webhook, usually within a second or two of the form being submitted.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App
Chat quality review board for LiveChat support leads

Score last week's finished live chats against one rubric, let an AI grader draft the notes with quotes, and send coaching straight to the agent.

LiveChat
Slack
General Input Database
App
A searchable RFP answer library your bid team drafts from

Every proposal you have ever submitted in one searchable archive, with the closest past answers lined up against each question in a new RFP.

General Input Storage
General Input Database
Mistral AI
+2
App

Stop letting bad emails pollute your HubSpot.

Connect Typeform, ZeroBounce, HubSpot, and Slack once, and every new lead gets vetted before it touches your CRM.