Typeform is a popular SaaS form platform known for its user experience focused design. But creating forms is just the beginning; the real value lies in accurately tracking form submissions and flowing that data into your CRM.
This guide covers end-to-end conversion tracking for Typeform: dataLayer events, Google Tag Manager integration, cross-domain tracking, hidden fields, UTM parameters, and source attribution in HubSpot.
Typeform and dataLayer Events
Typeform pushes TypeformQuestionPassed after each question is completed and TypeformSubmit when the form is successfully submitted, both via dataLayer.push()1 2. These events form the foundation of conversion tracking.
Event structure:
- Event Category: Typeform ID
- Event Action:
TypeformSubmit(form submission) orTypeformQuestionPassed(question completion) - Event Label: Form title
When these events fire, you can trigger conversion tags for Google Ads, GA4, or any other platform.
GTM Integration and Cross-domain Tracking
Typeform has its own Google Analytics integration3. However, for full control and customization, Google Tag Manager is the best option.
Why Cross-domain Is Necessary
Typeform forms typically live on a different domain. A typical flow looks like:
example.com(main site)example.typeform.com(form)app.example.com(post-form redirect)
Without cross-domain setup, each domain transition starts a new session, and conversions cannot be attributed to the correct source.
GTM Cross-domain Setup
Steps for cross-domain tracking:
- Store all domains in a GTM constant variable
- Enable
linkersettings and automatic domain linking in your GA4 tag configuration - Verify GTM connection continuity in Preview mode
With these steps, the _ga parameter is carried across domains and session integrity is preserved. If domains appear as direct/(none) in the source/medium field, add the relevant domain to the Referral Exclusion list.
Creating Conversion Tags in GTM
Define TypeformSubmit as a custom event trigger in GTM. Create tags (GA4 Event, Google Ads Conversion, etc.) that fire when this trigger activates.
Test the entire flow using GTM Preview mode. Google Tag Assistant can record the full event sequence and generate reports for both GTM and GA4.
Enriching Data with Hidden Fields
Typeform lets you create hidden fields that don’t appear in the form flow but capture values through URL parameters and pass them along with the form submission4 5. These fields are created via Logic > Advanced > Hidden Fields.
Source Tracking
Define a source hidden field to track which channel drove the form submission:
https://example.typeform.com/to/formID?source=email
https://example.typeform.com/to/formID?source=facebook
https://example.typeform.com/to/formID?source=linkedin
Personalization
When sharing form links in email newsletters, you can pass recipient details as parameters. Typeform’s recall feature lets you use these values within the form itself6:
https://example.typeform.com/to/formID?name=Joe+Doe&email=joe@example.com
Hidden fields are grouped and displayed in Typeform reports. You can directly see which channel generates more form submissions.
UTM Parameters and Source Attribution
Typeform supports UTM (Urchin Traffic Monitor) parameters7. These are critical for attributing ad campaign traffic to form conversions.
Enabling UTM Tracking
Enable UTM tracking from the form’s Settings > UTM Tracking page.
Usage with Ad Campaigns
To track traffic from Google Ads or other platforms through Typeform, use UTM parameters on the landing page8 9:
https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=brand&gclid=...
Typeform captures these parameters and includes them with the form submission. UTM and hidden fields can be combined:
https://example.typeform.com/to/formID?utm_source=google&utm_medium=paid&utm_campaign=ppc#source=cpc
CRM Integration: HubSpot
Passing source data alongside form submissions into your CRM ensures sales and marketing teams work with accurate attribution data. HubSpot is one of the most common integrations for this10.
Integration Setup
Set up the integration via Typeform > Connect > HubSpot. Map fields across three categories:
- Standard fields: Email, first name, last name
- UTM fields:
utm_source,utm_medium,utm_campaign - Hidden fields:
sourceand other custom fields
This process may require reconfiguring existing Typeform-HubSpot integration fields. In that case, the current integration must be removed and reconnected.
Source Tracking and Traffic Analytics
Add Source columns under HubSpot Contacts to see where each contact originated11. Without proper integration, incoming data gets labeled as (not set), undefined, or direct.
When UTM parameters are properly configured, HubSpot Traffic Analytics also categorizes form entries by source12 13.
Google Ads Integration
HubSpot can also be linked to your Google Ads account14. This allows you to optimize campaign performance and ad spend tied to HubSpot Pages, and attribute form conversions back to specific ad campaigns.
Testing and Verification
After completing all setup, run through these checks:
- GTM Preview: Verify
TypeformSubmitappears in the dataLayer when the form is submitted - Cross-domain: Confirm the
_gaparameter carries in the URL across domain transitions - Hidden fields: Add parameters to the form URL (e.g.,
?source=test), submit, and verify they appear in Typeform reports - UTM: Navigate to the form through an ad link with UTM parameters and confirm they transfer to Typeform
- CRM: Check that the new HubSpot contact shows the correct source information
Use Google Tag Assistant to record the full flow and generate reports for both GTM and GA4.
Footnotes
- How to add Facebook pixel to a typeform. Typeform Help Center ↩
- Google Analytics and tracking. Typeform Help Center ↩
- Connect. Typeform ↩
- Hidden fields explained. Typeform Help Center ↩
- How to use Hidden Fields (Classic builder) ↩
- Recall Information (Classic builder) ↩
- What is UTM tracking? Typeform Help Center ↩
- Tagging your Google Ads final URLs. Google Ads Help ↩
- About automatic tagging. Google Ads Help ↩
- HubSpot. Typeform Connect ↩
- Contact’s ‘Original source’ value changed ↩
- Understand HubSpot’s traffic sources in the traffic analytics tool. HubSpot Knowledge Base ↩
- Understand ‘Original source drill-down’ properties ↩
- Connect your Google Ads account to HubSpot. HubSpot Knowledge Base ↩
- 01 Typeform automatically fires TypeformSubmit and TypeformQuestionPassed events via dataLayer.push()
- 02 Without cross-domain tracking, each domain transition starts a new session and conversion attribution breaks
- 03 Hidden fields carry source, email, and campaign data through the form URL into the submission payload
- 04 UTM parameters combined with hidden fields enable ad campaign attribution to form conversions
- 05 HubSpot contacts appear as (not set) or direct when UTM and hidden field mapping is not configured during integration
+ How do I set up Typeform conversion tracking with GTM?
Typeform pushes a TypeformSubmit event to the dataLayer when a form is submitted. Create a Custom Event trigger in GTM for this event, then attach GA4 Event or Google Ads Conversion tags. For cross-domain tracking, enable linker settings in your GA4 tag configuration.
+ What are Typeform hidden fields used for?
Hidden fields are invisible form fields that capture values from URL parameters and pass them with the submission. You can add source, utm_source, email, and other data to the form URL. These values appear in Typeform reports and flow into CRM integrations as source attribution data.
+ Why does HubSpot show (not set) as the source for Typeform contacts?
When the integration is set up without proper UTM and hidden field mapping, HubSpot creates contacts without source information. The integration setup requires field mapping across three categories: standard fields, UTM fields, and hidden fields.
+ Why is cross-domain tracking necessary for Typeform?
Typeform forms typically live on a different domain (example.typeform.com). Without cross-domain setup, the user session breaks across domain transitions, each transition starts a new session, and conversion source attribution is lost.