Typeform and HubSpot are a popular combination for lead qualification: beautifully designed forms with branching logic collect data, and the CRM processes and routes it. The native integration exists and can be connected in a few minutes. But when you try to build real automation, a critical limitation quickly becomes apparent: Typeform submissions are not logged as Form Submissions in HubSpot, Workflows are not triggered, and popular question types — Matrix, Ranking, Checkbox — simply don’t transfer. Here’s a detailed breakdown.
What the Native Integration Can Do
The official Typeform + HubSpot connector covers the basic lead capture scenario:
- Creating a new contact in HubSpot on every Typeform submission
- Updating an existing contact if the email matches
- Basic mapping of standard fields: name, email, phone, company
- Passing text answers to custom questions as contact properties
For a simple lead form with basic fields, this is sufficient. But as soon as the form is used for lead qualification with branching logic — the integration starts breaking processes.
Where the Native Integration Breaks
Submissions are not logged as Form Submissions — Workflows don’t work.
This is the most critical limitation. HubSpot has two types of Workflow triggers: the Form Submission event and a contact property change. The native Typeform integration updates contact properties but does not create a Form Submission record. This means the trigger “Contact submitted a form” in Workflows is unavailable. To launch automation, workarounds via property changes must be used — fragile and non-obvious solutions.
Matrix, Ranking, and Checkbox questions don’t transfer.
These are exactly the question types used for lead qualification: “What is your budget?” (Ranking), “Which features are important to you?” (Checkbox), “Rate the importance of these factors” (Matrix). The native integration doesn’t support them — answers to these questions never reach HubSpot. The team collects qualification data in Typeform and loses it during transfer to the CRM.
Mapping is fragile and breaks with changes.
Renaming a question in Typeform, changing field order, or adding a new question can silently break existing mapping. The team discovers the issue when they notice new contacts are being created without key data. This is a systemic problem widely discussed by users.
No lead routing based on answers.
Typeform allows collecting answers that determine the type of client: small business or enterprise, new or existing customer, interest in product A or B. The native integration passes data to the contact, but cannot automatically assign the lead to the right manager or place it in the right pipeline based on a specific answer.
No partial response handling.
Typeform supports the form_response_partial webhook — an event triggered when a user starts filling out a form but doesn’t complete it. This is a valuable follow-up trigger: “You started filling out our form — can I help?” The native integration only passes completed submissions.
No deduplication on repeat submissions.
If an existing client submits a form again — for example, a demo request form — the native integration either creates a duplicate contact or overwrites data unpredictably. There is no logic to “update the existing contact and create a new activity.”
What Exceltic.dev’s Custom Integration Solves
- Form Submission registration — every Typeform submission is logged as an official Form Submission event in HubSpot via the Engagements API, enabling standard Workflow triggers without workarounds
- All question types transferred — Matrix, Ranking, Checkbox, File Upload are mapped to custom HubSpot properties with full answer structure preserved
- Conditional routing — based on a specific answer to a qualification question, the lead is automatically placed in the correct pipeline, assigned to the right manager, and tagged accordingly
- Deduplication — before creating a contact, the system checks for an existing one by email; a repeat submission updates the contact and creates a new activity without duplication
- Partial response handling — the
form_response_partialwebhook creates a contact tagged “Incomplete Form” and triggers a follow-up Workflow - Stable mapping — mapping is built on the Typeform
field_id, not the question name; renaming a question does not break the integration - Multi-form architecture — multiple Typeform forms (lead form, qualification form, onboarding form, NPS) are mapped to different HubSpot objects and pipelines with unified deduplication logic
How the Integration Works — Technical Process
Connection Architecture
The integration is built on Typeform Webhooks → Exceltic middleware → HubSpot CRM API v3 + Engagements API. On every Typeform submission, a form_response webhook event is sent with the full response payload. Incoming events are verified via HMAC-SHA256 signature in the Typeform-Signature header with the sha256= prefix. Authentication with HubSpot via Private App Token.
Step-by-Step Scenario: Qualification Form with Routing
- Lead fills out the Typeform qualifier —
form_responsewebhook is sent - Middleware verifies the signature and parses the payload by
field_id(not by name) - All answer types are extracted: text, email, Checkbox (array), Ranking (ordered list), Matrix (object)
- System looks up existing contact:
GET /crm/v3/objects/contacts?email={email} - If found — contact properties are updated, a new activity is created
- If not found — a new contact is created with the full set of answers
- Based on the answer to the qualification question (e.g., “Company size”), the pipeline is determined: up to 10 employees → “SMB”, 10–100 → “Mid-Market”, 100+ → “Enterprise”
- A Deal is created in the appropriate pipeline:
POST /crm/v3/objects/deals - Deal is linked to the contact via the Association API
- A Form Submission record is created via the Engagements API:
POST /engagements/v1/engagements— this activates standard HubSpot Workflow triggers - Based on other qualification answers, an owner is assigned:
hubspot_owner_idis updated in contact properties
Mapping Complex Question Types
text
Typeform Checkbox → HubSpot Multi-select property ["Email marketing", "SEO", "PPC"] → "Email marketing;SEO;PPC" Typeform Ranking → HubSpot Text property (ordered string) [1: "Price", 2: "Quality", 3: "Speed"] → "1. Price, 2. Quality, 3. Speed" Typeform Matrix → multiple HubSpot Number properties {"Price": 4, "Quality": 5, "Speed": 3} → separate properties per row
Scenario: Partial Response and Follow-Up
- User opens the form, fills in 3 of 7 questions, and closes it
- Typeform sends a
form_response_partialwebhook after the configured interval - Middleware creates a contact with available data and the tag
Incomplete Form - A Task is created in HubSpot for the manager: “Lead started filling out a form — follow up”
- A Workflow launches with a follow-up email after 2 hours
What Happens on Error
Typeform retries webhook delivery every 2–3 minutes for up to 10 hours on statuses 429, 408, 503, 423. Middleware uses idempotency keys based on the Typeform response_id — redelivery does not create a duplicate contact. If the HubSpot API is unavailable, the event is stored in a queue with exponential backoff.
Real-World Case Study
SaaS company, 4 sales managers, ~80 leads per month via a demo request form.
The company used Typeform for a pre-demo qualification form: 8 questions including Checkbox (needed features), Ranking (priorities), and a text field (current stack). The native HubSpot integration only passed text answers — Checkbox and Ranking data was lost. Managers saw a lead in HubSpot without qualification data and had to go look at the answers directly in Typeform before every call.
Main problem: the Workflow for automatically sending a confirmation email and assigning a manager didn’t work — Typeform submissions didn’t trigger HubSpot Workflows. The team set up a trigger via custom property change — it broke with every mapping update.
After the custom integration was deployed, all qualification answers are passed to HubSpot, submissions are logged as Form Submissions, Workflows run reliably, and routing by company size automatically assigns the lead to the right manager.
Result: managers see full qualification data directly in the HubSpot card, demo prep time dropped from 15 to 3 minutes, 0 Workflow failures in 4 months after implementation.
Which Businesses Benefit Most
The custom integration is most valuable for SaaS and service companies using Typeform to qualify leads before demos, onboarding, or consultations — where answers to complex question types (Checkbox, Matrix, Ranking) are key data for manager prep and communication personalization.
It is critically important for companies with automated Workflows in HubSpot — without proper Form Submission registration, automation based on Typeform submissions either doesn’t work at all or relies on fragile workarounds that break with every form change.
Frequently Asked Questions
Why doesn’t the native Typeform + HubSpot integration trigger Workflows?
The native integration updates contact properties but does not create a Form Submission record in HubSpot. Workflows with the trigger “Contact submitted a form” require exactly this record — it is only created via the HubSpot Engagements API, which the native connector does not use. Exceltic.dev’s custom integration creates a Form Submission record via the Engagements API on every submission.
Which Typeform question types does the custom integration support?
All types: Short Text, Long Text, Email, Number, Dropdown, Multiple Choice, Checkbox, Ranking, Matrix, Rating, Opinion Scale, Date, File Upload, Payment. Each type is mapped to the corresponding HubSpot property type with data structure preserved.
How does lead routing based on Typeform answers work?
Routing rules are configured in the integration settings: “If the answer to question X equals Y — place the Deal in pipeline Z and assign owner W.” Rules support conditions for all question types including Checkbox (contains value) and Ranking (first place).
Does the integration support multiple Typeform forms?
Yes. Each form is registered with its own mapping and routing rules. For example, a demo request form creates a Deal in the “Sales” pipeline, an onboarding form creates a Task, and an NPS form updates the NPS Score contact property.
How long does Typeform + HubSpot integration development take?
Basic integration with all question type transfer and Form Submission — 2–3 business days. Version with conditional routing, partial responses, and multi-form architecture — 4–6 business days. Exceltic.dev confirms exact timelines after a technical briefing.
If the native Typeform + HubSpot integration is breaking your automation — describe your use case to the Exceltic.dev team. We’ll review your form structure and configure routing for your processes.