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.

Ordinary Written by The Ordinary Team · Updated

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=facebook
  • utm_source=Facebook
  • utm_source=fb
  • utm_source=meta
  • utm_source=facebook_ads
  • utm_source=FB
  • utm_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:

  1. Per-org overrides — your customized mappings (highest priority).
  2. Global defaults — seed mappings that apply to every org (cover common aliases like fb → facebook, ig → instagram).
  3. 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, metafacebook
  • Source: ig, instainstagram
  • Source: ytyoutube
  • Medium: cpc, ppcpaid
  • Medium: em, e-mailemail

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, kind source, canonical tiktok — collapses your paid TikTok variants.
  • Alias influencer_X, kind source, canonical influencer — groups all your influencer campaigns under one source.
  • Alias newsletter, kind medium, canonical email — 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_source at 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.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles