How attribution is measured

How Ordinary counts attributed orders and revenue — refunds, cross-session journeys, tracking blockers, URL tagging and click- vs view-through gaps.

Ordinary Written by The Ordinary Team · Updated
On this page

This article covers how the numbers on Marketing Mix and the channel pages are counted. For reading the report itself, see Attribution reports.

Revenue is net of refunds

All revenue figures on Marketing Mix — under every model and on every channel card — are net of refunds. A $100 order where a $20 item was later returned contributes $80 to its attributed channel’s revenue, so ROAS reflects realized payback.

What counts as a refund matches Shopify’s Sales report exactly: returned items, refunded tax, refunded shipping and refunded duties. A cash refund where nothing was returned — a goodwill credit or a partial refund to settle a complaint — isn’t a return in Shopify’s report, so it doesn’t reduce revenue here either. On a store whose prices include tax, a returned item comes off once, at the price the customer paid.

Refunds reduce the revenue of the period the purchase was placed in, because each refund comes off the order it belongs to. Shopify’s Sales report records a return on the day it happens instead, so a single day’s figures can differ between the two while the orders and refunds are the same.

Date coverage nuances

Attribution relies on our first-party pixel being live. The very first day after install may show 0 sessions even if you have orders — the pixel has to observe a session to attribute it. By day two, the numbers align.

If you installed Ordinary mid-month and asked for the whole month, expect sessions/ATC to be lower than orders for the pre-install days.

Early-funnel session stitching

Customers don’t always buy in the same session they first land in. Ordinary stitches a shopper’s first session to their later converting session via a stable browser-side identifier the pixel emits on every event — so a shopper who clicks a Meta ad on Tuesday, browses, leaves, and returns on Friday to buy is still credited to the original Meta touch instead of falling into the “Direct” bucket on Friday. This stitch is automatic and merchants don’t need to configure anything.

Orders from blocked-browser shoppers

For a small slice of shoppers (typically Brave with default shields, Safari with strict tracking protection, iOS content blockers), our pixel doesn’t run on their device. Their orders still arrive — Shopify sends them to us server-side, which browser blocking doesn’t affect — and their channel comes from the campaign tags (UTMs) that Ordinary’s theme bridge saves onto the cart while they shop. Those tags travel with the order, so these orders show up in your channel breakdowns alongside pixel-tracked orders.

Cleaner Meta attribution with the URL-tag template

Meta’s auto-generated UTMs aren’t always reliable — utm_campaign in particular can collapse to the campaign objective rather than the campaign name, and individual ad / ad-set identity gets lost on the way to the storefront. To fix this at the source, the Meta Conversions API card on Settings → Meta shows a recommended URL-tag template that includes both the standard utm_* parameters and direct identifiers for the campaign, ad set, and ad (fb_campaign_id={{campaign.id}} and friends).

When a merchant pastes this template into Meta’s “URL parameters” field on each ad — or applies it at the ad-account level — every click that lands on the storefront carries enough information for Ordinary to attribute the resulting order back to the exact ad, even if the visitor’s UTMs get mangled by a meta-redirect or a mobile-browser stripping. The Meta CAPI card surfaces a per-token audit so you can see how much of your ad inventory currently matches the template.

Cleaner Google attribution with utm_id

If you run Google Ads, add utm_id={campaignid} to your account-level Final URL suffix (type it literally — Google fills in the real campaign ID on each click). This is the Google counterpart to the Meta template above: it puts the campaign’s identity directly on every landing URL, so Ordinary ties a click to the exact campaign even when the Google click ID is stripped or the click is older than Google’s reporting window. Keep your own readable utm_campaign labels alongside it — Ordinary reads the campaign ID from utm_id and leaves your labels as-is.

Click-through vs view-through (the conversion gap)

Ad platforms count two kinds of conversions, and they aren’t the same:

  • Click-through — someone clicked your ad and bought. Ordinary confirms these against your own store, so the campaigns you see driving revenue are ones you can verify.
  • View-through — someone saw your ad, didn’t click, and bought later. Only the platform can see these, so Ordinary reports the platform’s figure.

On Channels → Meta and on the Meta panel on Brand Pulse, the Click-through / View-through toggle switches between the two: Click-through is what your store can verify; View-through adds the platform’s view-attributed sales on top. View-through is the default, because it’s the figure the platforms and most agencies quote.

They almost never match — 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. The only way to know is to test it, and Ordinary measures the true incremental lift of your spend — so “is view-through worth it?” stops being a guess.

When you open a Meta campaign, the Store-attributed analysis section on its Overview tab plots Meta-reported and store-attributed conversions day by day, so you can watch the gap over time.

Cohort and lifetime-value view (per campaign)

Each Meta campaign’s Overview tab also has a cohort and lifetime-value summary for the customers that campaign acquired: customers acquired, first-order revenue, their repeat spend at fixed ages, projected 12-month value, estimated acquisition cost, LTV / CAC and payback period. Revenue is net of refunds, counted the same way as Marketing Mix revenue above. Useful for answering “did this campaign acquire customers who come back, or one-and-done buyers?” without leaving the campaign.

Did this answer your question?

Thanks for your feedback! 🙌

Related articles