# Campaigns — Facebook / Meta ads

> How to read your Meta Ads spend, performance, and attribution in Ordinary once the Meta integration is connected.

Source: https://help.tryordinary.com/features/campaigns-meta

---

> Meta campaign reporting requires **Starter or higher** and a
> connected Meta Ads account. See [Connecting Meta Ads](https://help.tryordinary.com/integrations/meta).

Once Meta is connected, Ordinary pulls your campaign, ad-set, and
ad-level data and cross-references it with pixel-observed attribution.
Left nav → **Campaigns → Meta**.


## The list view

One row per campaign. Columns:

- **Campaign name**
- **Status** (Active / Paused / etc. — read directly from Meta)
- **Spend** — cumulative in the date range, in your display currency
- **Impressions, Clicks, CTR**
- **Orders attributed** — sessions that had this campaign in the UTM
  chain and led to an order, using the currently-selected attribution
  model
- **Revenue attributed** — sum of those orders' revenue
- **ROAS** — Revenue attributed / Spend

Click any row to drill down.

## The detail view


The campaign-detail page has tabs for:

- **Ad sets + ads** — same columns as the campaign row, drilling
  through to the ad-level view. Time-series chart of spend vs.
  revenue across the date range.
- **Creative Library** — thumbnails, copy text, and per-creative
  performance for every ad in the campaign. See
  [Meta deep analytics § Creative library](https://help.tryordinary.com/features/meta-deep-analytics#the-creative-library).
- **Placement Breakdown** — performance split across Facebook
  Feed, Instagram Feed, Stories, Reels, Audience Network, etc.
  See [Meta deep analytics § Placement breakdown](https://help.tryordinary.com/features/meta-deep-analytics#placement-breakdown).
- **Demographic Breakdown** — age and gender split for the
  campaign. See [Meta deep analytics § Demographic breakdown](https://help.tryordinary.com/features/meta-deep-analytics#demographic-breakdown).
- **Configuration History** — daily snapshots of budget, status,
  audience, and optimisation goal so you can correlate
  performance changes against config changes. See
  [Meta deep analytics § Campaign configuration history](https://help.tryordinary.com/features/meta-deep-analytics#campaign-configuration-history).
- **Conversion Gap** — Meta-reported vs. Ordinary store-attributed
  conversions side-by-side, so you can see how much of Meta's
  reported lift is view-through / cross-device modelled vs.
  click-driven against your authoritative orders. See
  [Attribution reports § Platform-reported vs store-attributed](https://help.tryordinary.com/features/attribution#platform-reported-vs-store-attributed-the-conversion-gap).
- **Cohort & LTV** — customers acquired by this campaign grouped
  by first-purchase month, with cumulative revenue forward.
  Answers "did this campaign acquire customers who come back?"
  See [Attribution reports § Cohort and lifetime-value view](https://help.tryordinary.com/features/attribution#cohort-and-lifetime-value-view-per-campaign).

## Attribution model

The model selector at the top of the page affects the "Orders
attributed" and "Revenue attributed" columns. Same four models as the
main attribution report — last-click (default), first-click, linear,
time-decay.

See [Attribution models explained](https://help.tryordinary.com/concepts/attribution-models).

## Click-through vs view-through (why Meta's numbers don't match)

Across your whole Meta account, Meta's reporting will usually show more
conversions than Ordinary's Click-through view — that's expected, the two
are counting different things:

- **Click-through** — someone clicked your ad and bought. Ordinary
  confirms these against your own store, so they're conversions you can
  verify.
- **View-through** — someone saw your ad, didn't click, and bought
  later. Only Meta can see these, so Ordinary reports Meta's figure.

The **Click-through / View-through** toggle — in the page header on
**Campaigns → Meta** and on the Meta scorecard on your home dashboard —
switches between the two. View-through is the default (it's the number
Meta's dashboard and most agencies quote); Click-through is the
store-verified floor underneath it.

A couple of other things move the numbers:

- **Attribution window** — Meta's default is **7-day click + 1-day
  view** (configurable per ad account). Ordinary doesn't truncate at a
  few days the way the platform does — it credits the actual last ad
  click in the customer's journey under your chosen model, looking back
  up to **180 days**. Different window *and* different method, so the
  counts won't line up one-to-one.
- **Cross-device** — Meta deduplicates users across devices via their
  identity graph. Ordinary treats each browser as its own session
  stream until the shopper authenticates at checkout and we can link
  them.
- **A single campaign can occasionally flip** — show *more*
  click-verified orders in Ordinary than Meta reports for it. That's
  last-click crediting the campaign that got the final click in the
  journey, while Meta spreads credit across everything the shopper saw.
  It evens out across your whole account, so compare totals there for
  the cleanest read; per-campaign, treat Ordinary's click-verified
  number as the one you can stand behind and the gap vs. Meta as
  directional.

They almost never match exactly, and the gap is where the real decision
lives: view-through might be genuinely driving demand, or it might be
sales you'd have made anyway. Ordinary's experiments measure the true
incremental lift of your spend, so "is view-through worth it?" stops
being a guess. For reconciliation, use Meta for delivery metrics
(impressions, CTR, CPC) and Ordinary for outcome metrics (orders,
revenue, ROAS).

## What if ad spend looks zero

- **Connection expired** — check Settings → Integrations → Meta.
  If it says "Needs reauth," click Reconnect.
- **Date range past your plan's lookback** — partial data badge will
  show.
- **Meta sync hasn't run yet** — initial sync can take 10-20 minutes.
  See [Meta data is stale or empty](https://help.tryordinary.com/troubleshooting/meta-stale).

## Related articles

- [Connecting Meta Ads](https://help.tryordinary.com/integrations/meta)
- [Meta data is stale or empty](https://help.tryordinary.com/troubleshooting/meta-stale)
- [Attribution reports](https://help.tryordinary.com/features/attribution)
