How to Use UTM Parameters in HubSpot Campaigns

Your HubSpot dashboard says a lead came from “Email Marketing.” GA4 swears it was “Organic Social.” Both can’t be right. And when your VP asks which channel actually drove the pipeline, you’re stuck guessing.
I’ve watched this exact fight play out with dozens of HubSpot teams. The culprit is almost never HubSpot. It’s inconsistent UTM parameters feeding two systems that bucket traffic differently.
Here’s the thing. HubSpot doesn’t just pass UTMs along to Google Analytics. It reads them itself. Your utm_medium decides which source bucket a contact lands in. Your utm_campaign shows up in attribution reports. Get the tags wrong and every report downstream inherits the mess.
This guide goes deep on UTM parameters in HubSpot specifically. If you want the wide-angle tour of how each platform handles UTMs across GA4, Meta, LinkedIn, and Mailchimp, I already wrote how each platform handles UTMs. This one stays inside HubSpot and gets into the plumbing most guides skip.
How Does HubSpot Use UTM Parameters?
HubSpot uses UTM parameters to categorize traffic and attribute contacts to campaigns. It reads the tags on inbound URLs, then files each session into a source bucket and stamps it onto the contact record.
Two things happen when someone clicks a tagged link:
- HubSpot sorts the session into a source category using utm_medium. This drives your Traffic Analytics and Sources reports.
- HubSpot stamps the contact with Original Source (their first touch ever) and Latest Source (their most recent touch). These properties are permanent context for every deal that contact touches.
So a single sloppy tag doesn’t just skew one report. It writes bad data onto the contact forever. That’s why hubspot utm tracking matters more here than in a pure analytics tool.
One honest limitation. HubSpot’s Original Source is sticky. Once it’s set on a contact, standard reports won’t rewrite it, even if you fix the UTM later. You get one clean shot at first-touch data per contact.

How utm_medium Maps to HubSpot Source Buckets
This is the part nobody documents clearly, so here it is. HubSpot reads your utm_medium value and maps it to a fixed set of source categories. Use a value it recognizes and you land in the right bucket. Use anything else and you fall into “Other Campaigns.”
| utm_medium value | HubSpot source bucket |
|---|---|
email |
Email Marketing |
social, organic_social |
Social Media |
paidsocial, paid-social |
Paid Social |
cpc, ppc, paidsearch |
Paid Search |
referral |
Referrals |
| anything unrecognized | Other Campaigns |
Real talk. “Other Campaigns” is where attribution goes to die. If half your paid LinkedIn traffic uses utm_medium=linkedin instead of paidsocial, HubSpot can’t tell it’s paid. Your paid social ROI looks like zero. This one field decides whether your channel reporting is usable.
That mapping is also why HubSpot and GA4 disagree. GA4 uses its own Default Channel Grouping rules, which read the medium differently. Same link, two classification systems. Consistent tags are the only thing that keeps them aligned.
Does HubSpot Marketing Hub Support Multi-Channel Marketing Campaigns?
Yes. HubSpot Marketing Hub supports multi-channel marketing campaigns through the Campaigns tool, which ties every asset to one campaign for unified reporting. Email, social posts, paid ads, blog posts, landing pages, CTAs, and workflows all associate to a single campaign.
The Campaigns tool is the reason UTMs matter so much in HubSpot. When you associate assets, HubSpot groups their performance. When you tag the external links pointing at those assets, HubSpot connects outside traffic to the same campaign. Together, you see the full picture: internal HubSpot activity plus external clicks in one view.
Here’s how I set up a multi-channel HubSpot campaign so the reporting actually holds together:
- Create the campaign first. Give it a clean name you’ll reuse as your utm_campaign value. Pick the name once, use it everywhere.
- Associate every internal asset. Emails, landing pages, social posts, forms. This captures HubSpot-native activity automatically.
- Tag every external link pointing into the campaign with matching UTMs. Ads, partner placements, guest posts.
- Standardize utm_campaign across all of it. One campaign, one value. No “q3launch” here and “Q3-Launch” there.
The honest trade-off. HubSpot’s asset association only tracks what lives inside HubSpot. A LinkedIn ad or a sponsor newsletter isn’t a HubSpot asset. UTMs are the only bridge between those outside clicks and your campaign report. Skip them and your “multi-channel” campaign silently becomes a “HubSpot-only” campaign.
If you want the broader strategy behind grouping assets and channels, attribution models explained covers how first-touch, last-touch, and multi-touch models credit each channel.
How to Track UTM Parameters in HubSpot
To track UTM parameters in HubSpot, use the built-in Tracking URL Builder, then verify the tags land in your Sources report. HubSpot recognizes the five standard UTM parameters, so you don’t need custom fields.
Find it under Reports > Analytics Tools > Tracking URL Builder. Here’s the five-step flow:
- Paste your destination URL. The HubSpot landing page or web page you’re sending traffic to.
- Set utm_campaign. Match your HubSpot campaign name exactly.
- Set utm_source. The specific platform:
linkedin,newsletter,partner_site. - Set utm_medium. Use a value from the mapping table above. This is the field that decides your source bucket.
- Add utm_content or utm_term if needed. Use utm_content to split two links in the same asset. Skip it otherwise.
HubSpot generates the tracking URL and files it under the campaign you named. That’s your hubspot campaign url, ready to drop into any external channel.
If you’re new to what each tag does, the five UTM parameters breaks down source, medium, campaign, content, and term with examples.
The Problem: HubSpot’s Builder Doesn’t Enforce Anything
The Tracking URL Builder generates links, but it won’t stop you from typing Email in one link and email in the next. It doesn’t know your naming rules. It doesn’t dedupe across your team. Three marketers building links in three tabs will produce three variations of the same campaign. And HubSpot treats every variation as a separate source.
That’s the real reason HubSpot and GA4 drift apart, and why “Other Campaigns” fills up. Not a HubSpot bug. A governance gap. HubSpot builds the URL but nobody’s enforcing consistency at the point of creation.
> ### Stop the naming chaos before it hits HubSpot
> linkutm builds every HubSpot campaign URL with your naming rules baked in. Lowercase enforced. Mediums locked to values HubSpot recognizes. No more “Other Campaigns” black hole.
>
> Build clean HubSpot links with the linkutm HubSpot UTM builder →
>
> Your team creates links in seconds. Every one lands in the right source bucket, in HubSpot and GA4, the first time.
You can also enforce UTM rules automatically so a link that breaks convention never gets created. That’s the difference between fixing bad data monthly and never generating it.

How UTM Parameters Work in a HubSpot Email Campaign
In a HubSpot email campaign, UTM parameters tag the links inside your email so clicks attribute correctly in both HubSpot and GA4. But HubSpot email tracking has a wrinkle that trips up almost everyone: the _hsenc and _hsmi tokens.
When HubSpot sends an email, it automatically appends _hsenc and _hsmi to your links. Those are HubSpot’s internal email tracking tokens. They tell HubSpot which contact clicked and which email sent them. Useful inside HubSpot.
Here’s the catch. Those tokens are not UTM parameters. GA4 ignores them completely. So a HubSpot email with only _hsenc and _hsmi shows up in GA4 as… direct or unassigned traffic. Your beautiful email campaign looks like nobody sent it.
The fix is simple once you know it. Add UTMs on top of HubSpot’s tokens:
https://yoursite.com/offer?utm_source=newsletter&utm_medium=email&utm_campaign=q3_launch&_hsenc=xxxx&_hsmi=xxxx
HubSpot reads its tokens. GA4 reads your UTMs. Both systems get what they need from the same link. You can set default UTMs at the email level in the email tool, or build the links with the Tracking URL Builder before you paste them in.
One limitation worth flagging. HubSpot’s automatic email link editing can occasionally reorder or re-encode query strings. Always click a live test send and confirm your UTMs survived the trip. I’ve seen “&” turn into “&” and quietly break a campaign. When in doubt, test your links for GA4 before the send goes out.
HubSpot Campaign Influence and Attribution Reporting
HubSpot campaign influence measures how each campaign touched the contacts and deals in your pipeline, not just who clicked last. It’s HubSpot’s answer to “which campaigns actually moved revenue.” Available on Marketing Hub Professional and Enterprise.
UTMs feed this directly. Every tagged interaction becomes a data point HubSpot can credit. Without consistent tags, campaign influence reporting has nothing clean to attribute, so it defaults to vague buckets and your revenue reports get fuzzy.
Two reports do the heavy lifting:
- Campaign influence shows every campaign a contact interacted with on their path to becoming a customer. Great for long B2B cycles with many touches.
- Revenue attribution distributes deal revenue across those touches using a model you pick: first touch, last touch, linear, or others.
The B2B reality is that deals take months and a dozen touches. Last-click attribution gives all the credit to the final email and ignores the webinar, the ebook, and the retargeting ad that did the real convincing. Campaign influence exists to fix that. But it only works if the touches are tagged consistently enough for HubSpot to recognize them as the same campaign.
Once your HubSpot data is clean, you can reconcile it against GA4. I walk through that in build a UTM campaign report in GA4, which pairs nicely with HubSpot’s attribution view for a two-system sanity check.

Eloqua vs HubSpot vs Marketo: Capterra Reviews on Complex B2B Campaigns
For complex B2B campaigns, Capterra reviewers consistently rank HubSpot highest for ease of use, Marketo strongest for enterprise lead management, and Eloqua best for deep segmentation but hardest to learn. All three handle UTMs. They differ wildly on who can actually operate them.
Here’s how they stack up on Capterra at the time of writing. Treat the ratings as approximate; they shift as new reviews land.
| Platform | Capterra rating (approx.) | Best for | Learning curve | UTM handling |
|---|---|---|---|---|
| HubSpot Marketing Hub | ~4.5 / 5 | All-in-one, fast onboarding, SMB to mid-market | Gentle | Built-in Tracking URL Builder, native source mapping |
| Adobe Marketo Engage | ~4.3 / 5 | Enterprise B2B lead management and scoring | Steep | Flexible, but tracking setup lives in program tokens |
| Oracle Eloqua | ~4.1 / 5 | Large enterprise, complex segmentation | Steepest | Powerful, requires technical setup |
The pattern in the reviews is clear. HubSpot wins on time-to-value. Marketers get campaigns and UTM tracking live in days, not quarters. Marketo and Eloqua win on raw power for enterprises with dedicated ops teams, but reviewers repeatedly flag the learning curve and cost.
My take, and I’ll be upfront about the bias since I build a UTM tool. The platform barely matters for tag quality. All three will happily record inconsistent UTMs and produce garbage attribution. The differentiator is whether your team enforces consistent naming conventions at link creation. A disciplined team on HubSpot beats a sloppy team on Eloqua every single time.
One honest limitation on this comparison. Capterra scores blend companies of very different sizes. A five-person startup and a 5,000-person enterprise rate “ease of use” on totally different scales. Read the reviews from companies your size, not the aggregate star count.
Reconciling HubSpot and GA4 Without Losing Your Mind
When HubSpot and GA4 disagree, it’s usually classification, not a tracking failure. Both systems saw the click. They just filed it in different buckets. Knowing that saves hours of pointless debugging.
Three mismatches cause almost all of it:
- Different channel rules. HubSpot maps utm_medium to its buckets. GA4 uses Default Channel Grouping.
utm_medium=emailis safe in both. Custom mediums drift. - Different attribution windows. HubSpot’s Original Source is first-touch and sticky. GA4 leans last-touch by default. Same contact, different “source.”
- Different sessions. HubSpot and GA4 define a session slightly differently, so totals rarely match to the exact click.
You won’t get the two systems to match perfectly. Don’t chase that. Aim for directional agreement: both should name the same top channels in roughly the same order. If HubSpot says email is your best channel and GA4 says email is invisible, that’s a tagging problem, not a rounding difference.
The fix is always upstream. Clean, consistent UTMs at creation. One utm_medium vocabulary. One campaign name per campaign. Do that and both systems tell the same story, even if the exact numbers differ.
Frequently Asked Questions
How does HubSpot use UTM parameters?
HubSpot reads UTM parameters to categorize traffic and attribute contacts to campaigns. utm_medium decides which source bucket a session lands in, like Email Marketing or Paid Social. utm_campaign feeds campaign and attribution reports. The tags also stamp Original Source and Latest Source onto each contact record.
Do UTM parameters work in HubSpot emails?
Yes, but you have to add them yourself. HubSpot automatically appends its own _hsenc and _hsmi tokens for internal email tracking, and GA4 ignores those. Add standard UTMs on top so GA4 attributes the clicks to your email campaign instead of showing them as direct traffic.
Why does HubSpot show a different source than GA4?
Because they classify the same click with different rules. HubSpot maps utm_medium to its own source buckets, while GA4 uses its Default Channel Grouping. They also use different attribution windows and session definitions. Consistent UTMs get them to directional agreement, though exact numbers rarely match.
What is HubSpot campaign influence?
Campaign influence is a HubSpot report showing every campaign that touched a contact on their path to becoming a customer. It’s built for long B2B journeys with many touches. It relies on consistently tagged interactions, so clean UTMs are what make the report trustworthy. It’s available on Professional and Enterprise.
Can I use one UTM link across multiple HubSpot assets?
You can, but you usually shouldn’t. Reusing one link across an email and a social post makes the two indistinguishable in reporting. Keep utm_campaign identical to group them, but change utm_source or utm_content so you can still tell each asset apart.
Is HubSpot or Marketo better for complex B2B campaigns?
Capterra reviewers favor HubSpot for ease of use and faster setup, and Marketo for enterprise-grade lead scoring and segmentation at scale. Marketo suits large teams with dedicated marketing ops. HubSpot suits teams that want multi-channel campaigns and UTM tracking live quickly without a long implementation.
Start Tracking HubSpot Campaigns the Right Way
UTM parameters in HubSpot aren’t just GA4 plumbing. They decide your source buckets, your contact properties, and your entire campaign influence story. One consistent naming system fixes the HubSpot-versus-GA4 fight at the root.
Do these three things this week:
- Lock one utm_medium vocabulary that matches HubSpot’s source buckets.
- Build every campaign link from one place so nothing drifts.
- Test one live email before it sends.
Fix the tagging and every downstream report follows. Then watch it land in real-time click analytics alongside your HubSpot and GA4 numbers, so you catch a broken campaign the day it launches, not at month-end.
