Cherry Seed

Why shouldn't I use UTMs on internal links?

internal links utm parameters self-referral ga4 session attribution override campaign tracking

Quick Answer

UTM parameters on internal links override the original traffic source, replacing the real attribution data with a self-referral that tells you nothing useful. When a visitor arrives via a Facebook ad and then clicks an internal link tagged with utm_source=homepage_banner, GA4 starts a new session attributed to homepage_banner instead of facebook/cpc. The original paid click disappears from your attribution reports. Google's Analytics documentation explicitly warns against internal UTM tagging because it inflates session counts, fragments user journeys, and makes campaign ROI calculations unreliable. UTMs are designed to tag inbound traffic from external sources — never navigation within your own site.

Full Answer

The technical reason is how GA4 processes UTM parameters. Every time a page loads with utm_ parameters in the URL, GA4 treats it as a new campaign entry point and starts a new session. This behaviour is by design for external traffic: when someone clicks a newsletter link, you want GA4 to credit that session to the newsletter. But when that same logic applies to an internal link — say, a banner on your homepage linking to a product page with utm_source=homepage — it restarts the session mid-visit and overwrites the original traffic source.

The downstream consequences are significant. First, session counts inflate because a single visit generates multiple sessions. Second, attribution fractures because the original source (the Facebook ad, the Google search, the email campaign) is replaced by internal labels that describe navigation, not acquisition. Third, conversion attribution becomes unreliable because the purchase is credited to the last internal UTM the visitor encountered rather than the external campaign that actually brought them to the site.

For WooCommerce stores running paid campaigns, this is particularly damaging. If a visitor arrives via a $3 CPC ad click but their conversion gets attributed to an internal banner, the ad platform never receives a conversion signal for that click. ROAS calculations undercount the campaign's true performance, and optimisation algorithms learn from distorted data.

The correct approach for tracking internal engagement is GA4 events — custom events attached to button clicks, banner impressions, and navigation actions. Events record what the visitor interacted with without overwriting where they came from.

Sources

Programmatic Access

GET https://seresa.io/wp-json/cherry-tree-by-seresa/v1/seeds/759

Cite This Answer

Cherry Tree by Seresa - https://seresa.io/seed/utm-attribution/protect-utm-internal-utm-mistake