# Custom channel taxonomy

> Define your own rules for how traffic sources map to marketing channels in Ordinary.

Source: https://help.tryordinary.com/integrations/custom-channel-taxonomy

---

> Custom channel taxonomy is available on **Starter and higher**.
> Free-tier stores use Ordinary's default rules.

Out of the box, Ordinary maps traffic sources to channels using a
default taxonomy based on common UTM conventions (e.g. `utm_source=google` +
`utm_medium=cpc` → **Google Ads**). Settings → **Channel taxonomy**
lets you override or extend that.


## Why customize

- **You use non-standard UTM conventions.** Maybe your paid social
  uses `utm_source=fb` instead of `facebook`. The default rules won't
  catch that.
- **You want finer-grained channels.** Default rules bucket "paid
  social" — but you might want separate Meta vs. TikTok vs. Pinterest
  buckets.
- **You run affiliate or influencer programs** with custom UTM
  signatures that should roll up to their own channel.

## How rules work

Each rule is:

```
IF source matches <X> AND medium matches <Y>
THEN channel = <name>
```

Rules are evaluated in priority order (top to bottom). The first
match wins. If no custom rule matches, Ordinary falls back to the
default taxonomy.

## Creating a rule

1. Settings → **Channel taxonomy**.
2. Click **Add rule**.
3. Fill in:
   - **Source pattern** — exact match or glob (`google*`).
   - **Medium pattern** — same syntax.
   - **Channel name** — freeform; this becomes the channel label in
     Attribution, Trends, Campaigns views.
   - **Color** — optional; shows up in charts and channel badges.
4. Drag to reorder priority.
5. Click **Save**.

## Examples

**Your "Klaviyo email flow" campaigns all use utm_source=klaviyo:**

```
source = "klaviyo*"   medium = "email"   →  Klaviyo Email
```

**Your influencer code "JENNA20" floats in a handful of UTM variants:**

```
source = "instagram"  medium = "*JENNA*"  →  Influencer — Jenna
source = "ig"         medium = "*JENNA*"  →  Influencer — Jenna
```

**Your paid TikTok separate from paid Meta:**

```
source = "tiktok"     medium = "cpc"      →  TikTok Ads
source = "facebook"   medium = "cpc"      →  Meta Ads
source = "instagram"  medium = "cpc"      →  Meta Ads
```

## Applying to historical data

When you save a new rule, Ordinary re-runs the taxonomy over the
last **90 days** of sessions so your existing reports reflect the
new channel mapping immediately.

Older sessions keep whatever channel they were assigned at the time.
If you need to rebuild further back, contact support —
[sales@tryordinary.com](mailto:sales@tryordinary.com) can trigger a
fuller re-taxonomy run.

## Deleting a rule

Rules can be deleted from the list. After delete, the next 90 days'
taxonomy is recomputed using the remaining rules + defaults.

## Tips

- **Start with one or two rules, not twenty.** You can add more as
  edge cases surface in the data.
- **Use descriptive channel names.** "Paid Social — Meta" is more
  readable in charts than "FB / IG CPC".
- **Avoid overly broad patterns** like `source = "*"` — they'll
  accidentally catch traffic you didn't mean to recategorize.
- **Don't duplicate the defaults.** If the default already correctly
  maps google / cpc → Google Ads, you don't need a rule for it.

## Related articles

- [Channel taxonomy — sources and mediums](https://help.tryordinary.com/concepts/channel-taxonomy)
  — how the default rules work.
- [Attribution reports](https://help.tryordinary.com/features/attribution) — where the
  channel label appears.
