Should You Use UTM Parameters on Internal Links?
Quick Answer: No. UTM parameters belong on links that point to
your site from somewhere else — email, ads, social posts. Put them on internal links and your
analytics tool replaces the visitor's real traffic source with your internal "campaign." The visitor
who arrived from a $40-per-click Google ad now shows up in your reports as
homepage-banner. Track internal clicks with GA4 events instead.
What Happens When You Tag an Internal Link?
Walk through it. A prospect clicks your LinkedIn ad and lands on your homepage. GA4 records the
session: source linkedin, medium paid_social. So far, so good.
Then she clicks a promo banner you tagged with
?utm_source=homepage&utm_medium=banner. Now there's a second campaign inside the same
visit, and it's one you invented. When she fills out your demo form, attribution has two candidates:
the LinkedIn ad that cost you real money, or a banner on your own site. If the banner wins, your
reports say the ad produced nothing.
The old version of Google Analytics was even harsher. Universal Analytics started a brand-new session every time campaign parameters changed, so one visit became two and your session counts inflated. GA4 dropped that behavior, but the core damage remains: Google's own campaign URL documentation tells you to keep UTM tags off internal links.
Multiply that one visitor by every person who clicks a tagged banner, nav link, or footer CTA, and the
pattern is a slow poisoning of your acquisition data. Paid channels look weaker than they are.
Made-up sources like homepage and sidebar climb your reports. Nobody
notices for months, because nothing looks broken. The numbers are just quietly wrong.
How Do You Track Internal Clicks the Right Way?
Use events, not URL tags. Events describe what happened during the session without touching where the session came from.
- Start with what GA4 already gives you. Enhanced measurement tracks outbound clicks, scrolls, and file downloads with no setup. Turn it on and check what's already answered.
- Add one custom event for internal CTAs. A click event with two parameters —
link_textandlink_url— covers most banners and buttons. Fire it from Google Tag Manager on the clicks you care about. - Register the parameter as a custom dimension. Do this once in GA4 admin and you can compare placements in any report: banner vs. sidebar vs. footer, same conversion column.
- Answer "which page sends traffic where" with Path exploration. GA4's Explore section shows internal flow between pages. That's the question people usually want internal UTMs to answer, and it's already in the product.
The division of labor is simple. UTM parameters answer "how do people reach my site?" Events answer "what do they do once they're here?" Keep each tool on its own side of that line.
How Do You Find Internal UTM Tags You Already Have?
Three places to look:
- Your GA4 traffic reports. Sources that match your own site sections —
homepage,nav,blog-sidebar, your own domain name — are internal tags leaking in. - A site crawl. Crawl your site with any SEO crawler and filter URLs containing
utm_. Every internal page that shows up is a link to fix. - Spot checks. Paste suspect links into our free UTM Link Validator. It flags the parameters so you can see exactly what a tagged link will report before you fix it.
Remove the parameters from internal links, replace any tracking need with an event, and give the reports a few weeks to clean up. Historical data stays polluted — GA4 doesn't rewrite the past — so note the cleanup date and compare periods after it.
When Are UTMs Between Your Own Properties Okay?
"Internal" means within the same measured site, not within the same company. Two cases worth separating:
Separate domains, separate GA4 properties. Your microsite links to your main site the same way any external referrer would. Tag away. That's exactly how we tag the links from this tool back to Bootstrap Creative.
Separate domains, one GA4 property. Don't use UTMs. Set up cross-domain measurement so the session carries across domains without resetting. UTM tags here cause the same self-attribution problem as any internal link.
Subdomains under one property — blog.example.com to www.example.com — count
as internal. No tags.
Tag the Right Links, Cleanly
For the links that should carry UTM parameters — your emails, ads, and social posts — use the free UTM Builder Tool to keep naming consistent, then check your work with the UTM Link Validator.
Build a Clean UTM LinkFrequently Asked Questions
Do UTM parameters on internal links start a new session in Google Analytics?
In Universal Analytics, yes — any campaign change split the visit into a new session. GA4 doesn't force a new session, but the internal tag competes with the visitor's real source in attribution, so conversions can be credited to your internal "campaign" instead of the ad or email that actually earned the visit.
Can I use UTM parameters to track clicks on my homepage banner?
No. A homepage banner is an internal link, so tagging it overwrites the visitor's original traffic
source. Track banner clicks with a GA4 event instead — record the click with parameters like
link_text and link_url, and your acquisition data stays intact.
What should I use instead of UTM parameters for internal promotions?
Use GA4 events. Enhanced measurement already tracks outbound clicks automatically, and a small custom event covers internal CTAs and banners. If you need to compare placements, pass the placement name as an event parameter and register it as a custom dimension.
Do UTM parameters on links between my own websites count as internal?
Separate domains are separate sites. If your blog and your main site are different domains in different GA4 properties, UTM tags between them are fine and useful. If both domains share one GA4 property, set up cross-domain measurement instead of UTMs so the session carries over without resetting attribution.