UTM validation and QA
Most UTM data problems are preventable with a validation step before links go live. This page describes what to check on every tagged URL — presence of the core parameters, lowercase consistency, proper URL encoding, no double question marks — and a lightweight QA workflow so broken or inconsistent tags never reach production.
What to validate
Run every tagged URL through the same checks before launch. The goal is structural correctness and consistency, not just 'does it load'.
- utm_source, utm_medium, utm_campaign present (the core three)
- All values lowercase and matching your naming convention
- Spaces encoded (%20) or replaced with hyphens — never a raw space
- A single ? begins the query string; extra parameters use &
- No duplicate parameters (utm_source appearing twice)
- Values use your controlled vocabulary, not free text
A lightweight QA workflow
Validation does not need tooling to start. A reviewer pastes the URL, confirms it redirects to the right page with parameters intact, and checks the list above. For volume, a spreadsheet formula or a small script can flag uppercase characters, missing core parameters, and unescaped spaces.
Worked example of a broken URL to catch:
https://example.com/pricing?utm_source=Email?utm_medium=newsletter
The second ? should be &, and Email should be lowercase. Both are silent failures in analytics if shipped.
Validate after redirects too
A URL that is correct when built can lose its parameters in a redirect chain. Part of QA is confirming the parameters survive to the final landing page, because a redirect that drops the query string erases the attribution even though the link 'works'.
How it appears in analytics and logs
An invalid UTM (missing source, uppercase variant, unencoded space, or a second ? instead of &) means a click that should be attributed lands in the wrong bucket or is dropped. Validation turns those silent failures into pre-launch errors.
Diagnostic use case
Catch malformed or inconsistent UTM tags before a campaign launches, so analytics does not silently mis-bucket traffic for the life of the campaign.
What WebmasterID can help detect
WebmasterID's link builder produces consistent, pre-validated UTM URLs, reducing the casing and encoding mistakes that QA would otherwise have to catch by hand.
Common mistakes
- Validating that the link loads but not that the parameters survive redirects.
- Allowing free-text values instead of a controlled vocabulary.
- Shipping uppercase variants that split one source into two report lines.
- Using a second ? instead of & to join parameters.
Privacy and accuracy notes
Validation inspects the structure of the URL, not the visitor. Check that values are generic campaign labels and contain no personal data before approving a link.
Frequently asked questions
- What are the minimum required UTM parameters?
- utm_source, utm_medium, and utm_campaign are the practical core. Many tools attribute on source and medium alone, so missing either is the most damaging error to catch in QA.
Related pages
- UTM casing and consistency
Casing is the single most common UTM data bug. Because tools match values as exact strings, utm_source=Reddit and reddit are two separate rows, so one campaign quietly fragments. This page makes the lowercase rule concrete and shows how to deepen it into real consistency.
- UTM parameters in redirects
Redirects are where UTM attribution quietly dies. A 301/302 or a link shortener that does not forward the query string strips your tags before the visitor reaches the landing page. This page explains how to preserve UTM parameters through redirects, shorteners, and vanity URLs.
- UTM governance and templates
UTM data degrades when everyone builds links by hand. This page covers the governance that prevents it: a shared builder or spreadsheet, documented allow-lists for source and medium, and a review step so new values are deliberate rather than ad-hoc.
- Campaign links (docs)
Build pre-validated UTM URLs instead of hand-editing them.
Sources and verification notes
- Google Analytics Help — Collect campaign data with custom URLsDefines the standard utm_ parameters that validation checks for.
Last reviewed 2026-06-24. Facts are checked against primary/official sources where available; uncertain specifics are marked “Data not yet verified” rather than guessed.