Channel taxonomy — sources and mediums
How Ordinary maps raw UTM values to canonical channel names so reports consolidate variant spellings, and how to customize the mapping.
Channel taxonomy — sources and mediums
A channel taxonomy is a rule book that turns messy UTM values from the real world into clean, consistent labels in your reports.
The problem
Marketers (and agencies, and influencers, and Meta’s auto-UTM generator, and your own past self a year ago) don’t agree on how to tag URLs. Real examples from a single merchant’s attribution data:
utm_source=facebookutm_source=Facebookutm_source=fbutm_source=metautm_source=facebook_adsutm_source=FButm_source=facebook_paid
All are the same thing. Without consolidation, your UTM breakdown shows 7 separate rows and each looks smaller than the real Facebook spend.
What Ordinary does
Every UTM value gets resolved through a 3-step lookup:
- Per-org overrides — your customized mappings (highest priority).
- Global defaults — seed mappings that apply to every org (cover
common aliases like
fb → facebook,ig → instagram). - Fallback to raw lowercased value — if no rule matches, the raw value is used as-is, lowercased.
The resolved value is a canonical name. Reports group by the canonical name, so all Facebook variants collapse into one row.
Global defaults
Ordinary ships with a seed set covering the usual aliases. Examples:
- Source:
fb,facebook_ads,meta→facebook - Source:
ig,insta→instagram - Source:
yt→youtube - Medium:
cpc,ppc→paid - Medium:
em,e-mail→email
These are read-only from your side. If you need a different canonical on any of them, add a per-org override that wins.
Per-org overrides
Add on Settings → Channel Taxonomy. Starter and higher only.
Fields:
- Alias — the raw UTM value you want to rewrite (case-insensitive).
- Kind — source or medium.
- Canonical — what it should become in reports.
Examples:
- Alias
tiktok_paid, kindsource, canonicaltiktok— collapses your paid TikTok variants. - Alias
influencer_X, kindsource, canonicalinfluencer— groups all your influencer campaigns under one source. - Alias
newsletter, kindmedium, canonicalemail— so “newsletter” and “email” don’t split into separate rows.
When mappings apply
- New events immediately — the pixel’s processing pipeline reads the taxonomy on ingest. Any new event with a mapped alias is written with the canonical value.
- Historical events — unaffected. Past events keep their raw values in the underlying database. Reports that aggregate use the live taxonomy for future reads, so historical rows with mapped aliases DO collapse into their canonical in reports.
That last point matters: if you add an override tomorrow for
fb → facebook, every historical row where utm_source=fb will
consolidate under “facebook” in reports starting immediately. No
backfill needed.
The “direct” and “unknown” buckets
- Rows with no
utm_sourceat all fall under direct/none — usually direct URL visits, email clients that strip tracking, or customers reopening a browser tab. - Rows where the source resolves to an empty string or “null” are lumped into unknown. Usually a tagging accident.
Both are visible in the attribution report so you can size how much of your traffic isn’t attributable to a source.
Related articles
- Custom channel taxonomy — step-by-step walkthrough for setting up your overrides.
- Attribution reports — where the resolved channels show up.