How to pass UTM parameters into a HubSpot form
Improve attribution, reporting accuracy & campaign performance tracking with UTMs
If you rely on UTMs to understand what’s actually working in your marketing, don’t stop at the ad platform. Put them into HubSpot.
HubSpot captures source data via 'Original Source' and 'Latest Source,' but these use a proprietary bucketing logic that doesn't always show specific UTM values.
But if you’ve ever tried to reconcile that with your campaign reports, you know it doesn’t always tell the story you need.
The fix is simple: pass UTM parameters straight into HubSpot forms using hidden fields.
This post walks you through the process, step by step.
Create HubSpot properties for UTM parameters
Start by building properties to hold the UTM values. Go to:
Settings > Properties > Contact Properties > Create property
Create one for each of the five core UTMs you plan to capture:
- utm_campaign
- utm_content
- utm_medium
- utm_source
- utm_term
Ensure the Label or Internal Name is clear, but more importantly, set the Field Type to 'Single-line text' to prevent data truncation.
That alignment is what makes the values pass correctly.
Insert these properties as hidden fields
Next, edit the form you want to capture UTMs on.
Marketing > Lead Capture > Forms > Create form (or select an existing one)
Search for your UTM properties and drag them into the form.
For each one click the field in the form preview, and in the left-side editor, toggle the switch for 'Make this field hidden.
Ensure you do not set a 'Default Value' unless you want to override empty parameters.
This way, visitors never see or interact with the fields, but HubSpot will capture values behind the scenes.
Publish and test your form
Save and update the form. Place it on a live landing page.
Now test: append UTM parameters to the page URL and submit a test lead. For example:
www.yoursite.com/demo-form?utm_campaign=testcampaign&utm_source=linkedin&utm_medium=cpc&utm_term=revops&utm_content=carousel1
After submission, check the contact record in HubSpot. You should see the UTM values populate in the properties you created.
If you see the values flowing in, you’re set.
Tie this into reporting on form submissions
To get the most out of capturing UTMs, you’ll also want visibility over how different forms perform. Our guide, “How to report on form submissions in HubSpot,” outlines a powerful addition to your stack.
Use workflows to copy these UTM values into 'Static' attribution properties or custom objects to preserve a 'snapshot' of the lead source at the time of submission.
Then you can build custom reports in HubSpot that combine Contacts and Form Submission custom objects. That lets you compare performance across forms and tie back to UTMs to see which campaigns, sources, or content are driving what.
Bonus: you can layer in revenue or deals associated with those contacts, to see which UTMs and which forms are contributing to pipeline (provided your HubSpot plan supports custom objects.)
Why this matters
Passing UTMs directly into HubSpot closes the loop between campaign execution and pipeline reporting. Without it, your “what drove this opportunity?” conversations stay fuzzy. With it, you can build clean attribution reports that actually map to your ad spend.
UTMs aren’t perfect; they depend on consistent links and careful governance, but they’re still one of the simplest, lowest-lift ways to get clarity on performance.
For more technical detail, HubSpot’s official resource on tracking URLs and UTMs is worth bookmarking.
Bring it back to your stack
RevBlack works with high-growth teams that need their data infrastructure to match their ambitions. If you’re ready to turn attribution into something the board can actually trust, let’s talk.





