Verify Typeform demo requests with Snov.io and sync to HubSpot

Every new demo request gets its email verified, enriched with company info, added to Snov.io and HubSpot, and announced in your sales Slack.

Agentic Task
TypeformSnov.ioHubSpotSlackSalesOperationsLead EnrichmentData SyncNotifications & Alerts

Build me an agent workflow that turns every Typeform demo request into a verified, enriched lead in Snov.io and HubSpot, with a Slack alert to sales.

Trigger: a Typeform outgoing webhook on my demo request form. The form sends first name, last name, work email, and company domain. I will configure the webhook URL on the Typeform side, the workflow just needs to accept the inbound payload.

When a submission comes in, the agent should do the following:

1) Parse first name, last name, email, and company domain out of the Typeform payload. Normalize the email to lowercase and trim whitespace.

2) Dedupe before doing anything else. Call Snov.io "Get Prospect by Email" and HubSpot "Get Contact" (by email) to see if this person already exists. If they exist in either system, skip the create steps below but still post a short Slack note saying "already in CRM / Snov.io" so sales knows they came back.

3) Verify the email with Snov.io "Verify Emails". This is async, so start the verification and poll the result. Treat results of valid or accept-all as good. Treat invalid, disposable, or risky as bad.

4) If the email is bad: skip the CRM and prospect-list writes and post a brief triage note to a designated Slack triage channel using "Send a Message". Include the name, company domain, the verification verdict, and the raw form submission so a human can decide. Stop here.

5) If the email is good: call Snov.io "Domain Search (Company Info)" on the company domain to pull industry, company size, headquarters location, and a short description. This is async too, so start and poll the result. If the company lookup fails or returns nothing, continue with whatever we have from the form.

6) Add the person to my designated Snov.io prospect list using "Add Prospect to List". Use the verified email, first name, last name, and company info from the domain search. The list ID should be configurable at setup time.

7) Create a HubSpot contact with "Create Contact" using the verified email, first name, last name, company name, industry, and any other enrichment fields that came back from Snov.io.

8) Post a Slack alert to a designated sales channel using "Send a Message". Include the prospect's name, company name, industry and size, and a one-line AI-written "why this lead matters" summary based on the company info plus what they wrote on the form. Keep the message tight, four or five lines max.

Configuration the workflow should expose at setup: the Snov.io prospect list ID, the Slack channel for verified leads, the Slack channel for triage / risky leads, and whether to treat "risky / accept-all" as good or bad.

Error handling: if Snov.io verification times out or fails, fall back to treating the email as risky and post to the triage channel. If HubSpot create returns a 409 conflict (contact already exists), treat it like the dedupe path and post the "already in CRM" note instead of failing the run.

Additional information

What does this prompt do?
  • Catches every demo request from Typeform the moment it is submitted.
  • Verifies the email so bad addresses do not pollute your CRM or outbound.
  • Pulls quick company context (industry, size, location) for the new lead.
  • Adds verified leads to your Snov.io prospect list and HubSpot, then pings sales in Slack with a short reason this one matters.
What do I need to use this?
  • A Typeform account with your demo request form set up
  • A Snov.io account on a paid plan (API access is paid-only)
  • A HubSpot account with permission to create contacts
  • A Slack workspace and the channel where you want lead alerts
How can I customize it?
  • Swap the demo request form for any Typeform that captures name, email, and company.
  • Change which Snov.io prospect list new leads land in.
  • Choose different Slack channels for verified leads versus risky ones.
  • Adjust how strict the email check is, for example accept or skip results marked risky.

Frequently asked questions

What happens if someone submits a bad email address?
If the verification comes back invalid or risky, the workflow skips writing to Snov.io and HubSpot and instead posts a short triage note to Slack so your team can decide whether to follow up manually.
Will this create duplicates if the same person submits the form twice?
No. Before adding anyone, the agent looks them up by email in both Snov.io and HubSpot. If a contact already exists, it skips the create and notes that in the Slack message.
Do I really need a paid Snov.io plan?
Yes. Snov.io's API, including the email verifier and prospect list tools, is only available on paid plans. The free tier will not work.
Can I point this at a different Typeform, like a contact form or waitlist?
Yes. The workflow just needs a form that captures first name, last name, email, and company or company domain. You can swap in any Typeform that collects those fields.
Where does the 'why this lead matters' line in Slack come from?
Geni writes it on the fly using the company info from Snov.io and what the person filled in on the form, so each alert gives sales a quick reason to prioritize the lead.

Stop letting bad leads pollute your CRM.

Connect Typeform, Snov.io, HubSpot, and Slack once. Geni handles every new demo request from there.