Guide
When you should not use UTM parameters
A campaign URL is for a click that starts somewhere else. Tagging everything “so we have data” is how paid search becomes utm_source=homepage and a spring sale becomes nineteen campaigns.
Do not tag links on your own site
Internal UTMs overwrite the session source. A person arrives from Google Ads, clicks “See pricing” in the header, and GA4 now thinks the source is the homepage. That is not a richer report. That is a lie with a query string. Leave site nav, hero blocks, app menus, and in-article CTAs alone. If you need on-site path analysis, use events — not campaign tags.
Do not invent a campaign per button
utm_campaign is the initiative. The button, the subject line, the creative belong in utm_content or utm_term. A newsletter with eight campaign names is eight rows you will add by hand in a slide. Keep one name for the send or the flow. Details: UTM for email.
Do not strip Google click IDs to look tidy
Auto-tagging adds gclid. A tracking template can add UTMs next to it. Deleting the click ID so the URL “looks clean” breaks import into a linked GA4 property. Inspect what is already on the URL with the click ID inspector. Policy: UTM vs auto-tagging.
Do not tag pages that are not campaigns
Password reset, cookie settings, invoice PDFs, and “unsubscribe” are not media. If a vendor forces a tagged link on a system email, keep utm_medium=email and a boring campaign such as account-transactional — or ask them to stop. Transactional noise in Paid Social is how people lose trust in the property.
Do not tag because a tool offered a field
ESPs, QR generators, and “smart links” will happily fill source with your company name and medium with link. That is Unassigned with extra steps. If you cannot name the platform and the channel in one breath, do not ship the tag. Use the launch checklist or skip the parameters.
Worked example: the homepage hero
Someone arrives from google / cpc / brand-search. They click a hero button tagged utm_source=homepage&utm_medium=internal&utm_campaign=see-pricing. GA4’s session source becomes homepage. Paid Search looks like it bounced. The hero “converted.” That is the whole case against internal tags. Path analysis belongs in events (click_header_pricing), not campaign parameters.
A quick filter: starts off-site?
If the click starts in an ad account, an inbox, a social app, a partner site, an SMS, or a printed code — tag it. If the click starts on a page you already tagged or on a page the person typed — do not. When the answer is fuzzy, skip the UTM. A missing tag on an internal link is harmless. A present tag on an internal link is not.
When you should tag
Ads, email, social posts, partner placements, SMS, and print that open a browser. That list is in why you should track campaign traffic. How to write the values: best practices. The error catalog: common mistakes.