Question from Reddit user:
Hi guys,
Our site is running on Webflow and we would like to use our custom form.
I can automatically pass leads from WF to Hubspot using Zapier and some custom mapping.
So I can pass simple stuff like name/email/etc and hidden fields (like utm parameters).
But how do I pass stuff that is collected in Hubspot tag?
Like first page visited, last page visited, inbound source, etc.?
Is it possible to do?
I’ve heard something about user tokens, maybe I could somehow pass user token ID and it would populate all the contact data?
Answer from Nabil:
The short answer is:
You are correct about the user token.
The unique identifier you need is the HubSpot cookie value, specifically the hubspotutk
cookie.
This cookie is what ties a visitor’s browser session data (like first page visited, inbound source, etc.) to a new contact record.
You need to use a small piece of custom JavaScript on your Webflow site to read the value of this hubspotutk
cookie and automatically populate a hidden field in your custom form.
You then map that hidden field through Zapier to the HubSpot Contact property called hubspotutk
(or a similar field you create).
When HubSpot receives this cookie value on form submission, it recognizes the user and automatically associates all the existing tracking history with the new contact record, populating all those rich lifecycle properties.
The long answer is:
The reason you can’t simply map properties like “First Page Seen” or “Inbound Source” directly from your Webflow form is that those properties are not data fields the browser collects.
They are complex properties HubSpot calculates and stores on its servers based on the entire user history linked to a specific browser cookie.
Your Webflow form and Zapier are only passing the data you explicitly enter or capture in the form itself.
To bridge the gap, you must pass the key that unlocks that history, which is the hubspotutk
cookie.
To implement this, you’ll add custom JavaScript to your Webflow page that executes before the form loads.
This script reads the value of the hubspotutk
cookie from the user’s browser, then automatically inserts that value into a hidden field on your Webflow form.
You map this hidden field in your Zapier configuration to a corresponding custom property in HubSpot, which is also named hubspotutk
for clarity.
The moment Zapier passes the form submission, including this cookie value, to the HubSpot API to create or update a contact, HubSpot’s backend system performs a lookup.
It finds the tracking history tied to that cookie ID and instantly populates the new contact record with all the rich data you want, such as Original Source Type, Original Source Drill-Down 1, First Conversion Date, and all page view history.
Using the HubSpot API directly for this is a better and ultimately cheaper solution than relying entirely on Zapier, especially as volume grows.
By using the HubSpot API and the Webflow Forms API (or simply the hidden fields) in conjunction with Google Tag Manager and a server-side setup like Stape or Google Cloud Platform, you can eliminate Zapier entirely.
This server-side pipeline gives you full control.
It can receive the form data from Webflow, execute the logic to grab the hubspotutk
value, and then make a direct, consolidated, and highly efficient API call to HubSpot.
This method is cheaper because it reduces reliance on Zapier task limits, more reliable because it bypasses potential browser tracking issues, and more flexible for future complex data needs.