flowsk.com
UTM Taxonomy Validator

Your campaign report has more channels than you run

Paste your campaign URLs. We find the casing drift, the synonyms, the stray spaces and the missing parameters that split one campaign into three rows — and hand you the vocabulary you should have used. Everything runs in your browser.

Quick answer

lowercase · hyphens · one canonical value per channel · never empty

Analytics groups on the exact string. Facebook and facebook are two sources; spring-sale and Spring Sale are two campaigns. Nothing errors — your numbers just split in half.

The fix is a written vocabulary plus a validator you actually run before launching a campaign.

Your campaign URLs — one per line

Nothing leaves your browser. Paste real URLs — we never see them.

The vocabulary in these URLs
Taxonomy score
/ 100

Issues found
# OK Host Source Medium Campaign Content

The taxonomy that survives a marketing team

Parameter Rule Good Bad
utm_source The platform. One canonical value each. facebook FB, Facebook, facebook.com
utm_medium The delivery mechanism, from a closed list. cpc paid-social, PPC, paid_search
utm_campaign The initiative. Lowercase, hyphenated, dated. spring-sale-2026 Spring Sale, spring sale
utm_content The creative or placement variant. video-a Video A (final v2)
utm_term Keyword, for search only. running-shoes Running Shoes
utm_id Stable platform campaign id, if available. 23851234567 (left empty)

Want this enforced instead of remembered? The taxonomy workspace in Signals stores your canonical vocabulary, flags drift as it happens, and builds compliant links.

Frequently asked questions

Why do my campaigns split into multiple rows?

Because analytics groups on the exact string. "Facebook" and "facebook" are two different sources. "spring-sale" and "Spring Sale" are two different campaigns. Nothing warns you — the report just quietly reports half the numbers, twice.

What should my UTM convention be?

Lowercase everything, hyphens instead of spaces or underscores, one canonical value per channel, and never leave utm_source, utm_medium or utm_campaign empty. Write it down once and validate against it, because a convention nobody can check is a convention nobody follows.

What is the difference between source and medium?

Source is where the traffic came from (facebook, google, newsletter). Medium is how it got there (cpc, email, social, referral). The most common mistake is putting the platform in both, which makes medium useless for grouping.

Should I use utm_id?

If your ad platform supports it, yes — it survives better than a hand-typed campaign name and gives you a stable join key against the platform's own reporting.

Do UTMs survive redirects?

Not always. Link shorteners, 301 chains and some consent flows drop query parameters. Capture them server-side on the first request that lands, before any redirect can eat them.

Is this tool sending my URLs anywhere?

No. The parsing runs entirely in your browser. Nothing is uploaded, stored or logged.