# Why channel and campaign totals don't add up

> Under linear and time-decay attribution, the sum of credit across your Meta campaigns won't match the total credit attributed to Meta as a channel. This is by design and matches how every other multi-touch tool works — here's why.

Source: https://help.tryordinary.com/concepts/channel-vs-campaign-attribution

---

If you've ever compared your **Sources** page (channels) with your
**Campaigns** page (individual campaigns), you may notice that under
**linear** or **time-decay** attribution, the numbers don't tie out:
the sum of credit across every Meta campaign doesn't equal the credit
Meta gets as a channel.

This is intentional, mathematically correct, and matches how every
other multi-touch attribution tool on the market behaves. Here's the
intuition.

## The simplest example

Imagine a customer's journey to a $100 order looks like this:

1. Clicked a **Meta** ad for **Campaign A**
2. Clicked a **Meta** ad for **Campaign B**
3. Clicked a **Google** search ad
4. Bought.

Three distinct ad clicks across two channels (Meta and Google).

### What the **Campaigns** view tells you

Under **linear** attribution, each of the three campaign touches gets
equal credit:

- Campaign A: 1/3 of the order = $33.33
- Campaign B: 1/3 of the order = $33.33
- Google campaign: 1/3 of the order = $33.34

Total credit across all campaigns = $100. ✓

### What the **Sources** view tells you

Under **linear** attribution applied at the **channel** level, what
matters is which *channels* touched the journey, not how many ad
clicks within each channel. The customer "engaged with Meta" once and
"engaged with Google" once — two channels.

- Meta: 1/2 of the order = $50
- Google: 1/2 of the order = $50

Total credit across all channels = $100. ✓

### So the sum of Meta's campaigns = $66.66, but Meta as a channel = $50

Both numbers are correct. They answer different questions:

- **Campaign-level**: "If I had to choose which of my **specific
  campaigns** drove this purchase, how would I split the credit?"
  → Each Meta campaign is its own distinct touchpoint.
- **Channel-level**: "If I had to choose which **channel** drove this
  purchase, how would I split the credit?"
  → Meta is one channel, regardless of how many of your Meta campaigns
  the customer saw.

You can't have it both ways. If we *didn't* collapse Meta's two
campaigns into one channel-touch at the channel level, Meta would
get a 2-of-3 "vote" against Google's 1-of-3 in the channel weighting,
purely because Meta had more ad clicks in the journey. That would
systematically over-weight channels that run more campaigns — which
isn't a property of marketing effectiveness, it's a property of how
many ad sets a marketer chose to run.

## Why this only happens under linear and time-decay

Single-touch models — **first-click** and **last-click** — reconcile
cleanly across channels and campaigns, because only one touch gets
credit and that touch belongs to exactly one channel and exactly one
campaign.

- Under **last-click**, if Campaign B was the final ad-tagged touch,
  Campaign B gets the full $100 *and* Meta gets the full $100.
- Sum of campaigns = $100. Meta channel = $100. They match. ✓

The non-reconciliation is unique to the **fractional** models (linear
and time-decay), because they need to split credit somehow — and a
$1 split four ways across four campaigns inside one channel is not the
same as a $1 split two ways across two channels.

## How to think about it

When you're comparing channel-level and campaign-level numbers,
remember that **the underlying data is the same**. The same orders,
the same customer journeys, the same touchpoints. What differs is
which dimension we're collapsing on:

- The **Sources** page collapses on **channel**. Meta is one column.
- The **Campaigns** page expands every individual campaign into its
  own row.

If you want the numbers to tie out exactly, look at them under
**last-click** or **first-click**. Those are the lossless reconciliation
models — every touch contributes to one channel and one campaign, and
the rollups match.

If you want to evaluate which **specific campaign** is pulling its
weight inside Meta, use the campaign-level fractional credit on the
**Campaigns** page.

If you want to evaluate **Meta as a channel** against **Google as a
channel**, use the channel-level fractional credit on the **Sources**
page. Don't try to derive one from the other by summing the rows —
the math doesn't work that way, and any tool that claims it does is
quietly making the same trade-off and not telling you.

## This isn't a bug or a quirk

Every multi-touch attribution tool collapses touches at the dimension
you're rolling up to — they have to, otherwise channels with more
campaigns systematically out-weight channels with fewer, regardless of
actual performance. Most tools just don't surface the math. We do,
because reconciling totals across dimensions is the single most common
attribution-tool support question, and the honest answer is "they're
not supposed to tie out under fractional models."

## Related reading

- **Attribution models explained** — the four models Ordinary supports
  and what each one answers.
- **Multi-touch vs single-touch attribution** — when to reach for
  fractional models vs single-touch.
- **Channel taxonomy** — how Ordinary categorises traffic into
  channels.
