Loading tutorials…
Loading tutorials…
Typeform captures the lead. Your CRM and email tool nurture it. The connection between them is where 90% of lead-routing problems hide. This walks through the right setup path for both HubSpot and Mailchimp.
Who this is forMarketers who run lead capture through Typeform and want responses flowing into HubSpot, Mailchimp, or both — with correct field mapping, UTM attribution, and no duplicates.
What you'll need
Step 1
Typeform has native integrations for HubSpot and Mailchimp. Use those, not Zapier. Native is faster, more reliable, and free.
Typeform → Connect → HubSpot or Mailchimp → Authorize.
Native connectors have lower failure rates than Zapier and do not consume Zap quota.
Avoid setting up both native AND Zapier for the same form — you will get duplicate records.
If you need a custom transformation (e.g., split a "Full Name" field into "First Name" + "Last Name"), use a Make.com scenario rather than Zapier — better at transformations, cheaper per-action.
Step 2
Open the integration → Field mapping. Map every Typeform field to a specific CRM field. Do not rely on "auto-map by name."
Map email → email (always required).
Map name → first name + last name (use HubSpot's standard fields, not custom).
Map qualification fields (company size, budget, role) → corresponding HubSpot/Mailchimp custom fields. Create custom fields in the CRM first if they don't exist.
Map UTM hidden fields → utm_source, utm_medium, utm_campaign properties in HubSpot. These exist as default contact properties — use them.
Map source identifier (e.g., 'lead_form_pricing_page') → 'Original Source' or a custom 'Lead Source' field.
Step 3
In HubSpot integration settings, choose "Update existing contact if email matches" not "Always create new." Saves you from duplicate records.
In Typeform → HubSpot integration → Settings, set "Match on Email" + "Update if exists."
This means re-submissions from the same email update the existing record instead of creating a duplicate.
For Mailchimp, the equivalent setting is "Update existing subscriber." Enable it.
Without this setting, every form submission creates a new HubSpot contact even for repeat respondents. Your contact count inflates and reports lie.
Step 4
In HubSpot integration, set "Lifecycle stage on creation" to "Lead" or "MQL" depending on form intent.
In HubSpot integration → Field mapping, find "Lifecycle Stage."
For top-of-funnel forms (newsletter signup, free resource): set to "Subscriber."
For mid-funnel forms (demo request, qualification): set to "Marketing Qualified Lead (MQL)."
For bottom-of-funnel forms (pricing-page consultation): set to "Sales Qualified Lead (SQL)."
This auto-segments leads into the right pipeline without manual sales team triage.
Step 5
Add UTM hidden fields in Typeform. Map them to HubSpot UTM properties. Now every lead has full attribution in CRM.
In Typeform → Settings → Hidden fields, add: utm_source, utm_medium, utm_campaign, utm_content, page_url.
In your marketing campaigns, append UTM params to the Typeform URL: ?utm_source=linkedin&utm_campaign=q2-launch.
In HubSpot integration → Field mapping, map each hidden field to the corresponding HubSpot property (default ones exist for utm_source, utm_medium, utm_campaign).
Test by completing a form with UTMs appended and confirming the values appear on the HubSpot contact.
Step 6
Submit a test response with real-looking data. Confirm: contact appears in HubSpot, fields mapped correctly, lifecycle stage set, UTM populated, Mailchimp subscriber added with correct tags.
Open the Typeform link with UTM params: ?utm_source=test&utm_campaign=test.
Submit with a real email you control. Use realistic data, not 'asdf asdf.'
Within 60 seconds: open HubSpot → Contacts → search the test email. Confirm: name, email, company-size, lifecycle stage, UTM properties all set.
Within 2 minutes: open Mailchimp → Audience → search the test email. Confirm subscribed with correct tags.
Submit again with the same email. Confirm HubSpot updates the existing contact (not duplicates) and Mailchimp does not duplicate.
Delete the test contact from HubSpot and Mailchimp to keep analytics clean.
Common mistakes
Trusting auto-mapping for custom fields
What goes wrong: Custom fields like "company_size" or "budget" silently stay unmapped. Sales team gets contacts with no qualification data. Lead routing breaks.
How to avoid: Always review field mapping screen explicitly. Map every Typeform field — including custom ones — to a specific HubSpot/Mailchimp field.
No dedupe setting — duplicates accumulate
What goes wrong: Same person submits twice → two HubSpot contacts. Reports overcount leads by 20-30% over 12 months. CRM cleanup project takes 8-16 hours.
How to avoid: Set "Update existing contact if email matches" in HubSpot integration. Set "Update existing subscriber" in Mailchimp.
No UTM hidden fields
What goes wrong: Every lead in HubSpot shows source as "unknown" or "direct." Marketing reports cannot attribute spend. Decisions made on bad data for months.
How to avoid: Add utm_source, utm_medium, utm_campaign as hidden fields in Typeform. Map to HubSpot UTM properties. Append UTMs to every campaign link.
Setting up native AND Zapier for the same form
What goes wrong: Every submission creates two HubSpot contacts. Doubles every count, breaks dedupe, triples cleanup work.
How to avoid: Pick ONE integration path per form — native preferred. Audit Settings → Connected apps for duplicates.
Skipping the end-to-end test
What goes wrong: Form goes live, integration is silently broken (wrong API token, expired auth, mapping gap). You lose 50-200 leads before noticing.
How to avoid: Always submit a real test response with real-looking data. Verify in HubSpot AND Mailchimp before sharing the form link.
Recap
Done — what's next
How to build a Typeform survey that actually gets completed
Read the next tutorial
Hand it off
CRM integration is where Typeform value compounds — or leaks. A specialist sets up 5-10 forms with correct mapping, dedupe, lifecycle, and UTM in 3-4 hours. Most builds land at $80-200; ongoing optimization (new forms, mapping updates) is $200-600/mo.
See specialist rates
Yes. Set up both native integrations on the same form. Each fires independently on submit. Map fields separately in each integration's settings.
No. The Typeform → HubSpot native integration works on the free HubSpot tier. You get the same contact + property mapping. Workflows (auto-routing post-creation) require Marketing Hub Professional+.
Check the HubSpot integration setting "Update existing contact if email matches." If off, every submission creates a new contact. Turn on.
Native integration: typically under 30 seconds. Zapier: 30 seconds to 5 minutes depending on Zap tier. If lag exceeds 5 minutes, the integration is throttled or failing — check logs.
Typeform
Typeform's one-question-at-a-time UX is what makes it convert — and what makes it brittle. This walks through how to structure questions, pick the right field types, and ship a survey that hits 60%+ completion rate.
Typeform
Logic jumps are what turn Typeform from a survey into a smart funnel. Done right, they route every respondent to a personalized path. Done wrong, they create dead ends and respondents stuck on the wrong branch.
Typeform
Typeform Insights shows you where respondents drop off. Most teams glance at it once and miss the patterns. This walks through the diagnostic sequence specialists use to lift completion 15-30%.
Tally
Tally's native Notion and Airtable integrations are some of the cleanest in SaaS — when set up right. When set up wrong, you end up with 200 rows of mis-mapped fields. This walks through the schema-first approach.