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.
On this page
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 → facebook). - 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,instagram→facebook— Instagram is part of Meta, so Instagram traffic groups with Facebook under the Meta label in reports. - Source:
gads,adwords→google - Source:
yt→youtube - Medium:
cpc,ppc,paid,paid_social→cpc - Medium:
email,eml→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
- Channel reports — Marketing Mix and the attribution reports
look up your source mappings when they load, so a new source mapping
regroups past orders there straight away. If you add an override
tomorrow for
fb → facebook, historical orders whose touch hadutm_source=fbconsolidate under “facebook” in those reports. No backfill needed. - Visit-level data — each visit is stored with the canonical values that applied when it was recorded. A new mapping applies to visits recorded after you save it; earlier visits keep their original value in visit-level views.
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.