Documentation · Analytics · Conversion Rate

Conversion Rate — three lenses, three answers

Site-wide CR, marketing CR, and funnel-step CR all answer different questions. Same date range, different numbers — that's by design. Here's how to pick the right one.

Three variants compared How to pick (3 steps) FAQ

Why three CRs, not one

The same fundamental ratio — orders divided by something — answers three different questions depending on what "something" is.

All three are correct. None of them is THE conversion rate. The right metric depends on the question.

Three variants compared

The active surface determines which CR you're reading. The tooltip on every CR chip says which formula is being used.

Variant Formula Where it lives Question it answers Watch out for
Site-wide CR orders / unique_visitors /dashboard hero, /dashboard/analytics HeroCard Of every unique visitor who arrived in this window, what share converted? Uses the de-duplicated visitor count, NOT raw sessions. Returning visitors counted once. Use this as the headline KPI when you want a population-stable metric.
Marketing CR orders / sessions /marketing-acquisition source/medium table, channel breakdown Of every session that arrived from a given source/medium, what share ended in an order? Uses raw sessions (a returning visitor counts once per session). Higher than site-wide CR when traffic is sticky. Source/medium granularity makes this the default for paid-channel optimization.
Funnel-step CR next_step_unique_visitors / current_step_unique_visitors /funnel cards (Landing → ATC → Checkout → Purchase) Of the visitors who completed step N, what share completed step N+1? Step-conditional, not population-wide. The product of all funnel-step CRs equals the funnel's overall conversion (start-to-finish), which is NOT the same as site-wide CR — funnel CR has a hard step gate (e.g. Add-to-Cart required before Checkout) that site-wide CR does not.

The unique-visitors number on /dashboard is NOT the same as session count on /marketing-acquisition. Returning visitors collapse to one in the unique-visitors count; they expand to one-per-session in the session count. That's the structural reason CRs differ even when the order count is identical.

The numerator: what counts as a conversion?

For all three lenses, the numerator is orders — a row in orders_enriched_mv tied to the workspace and the date window. Refunded and partially-refunded orders are still counted at the order grain (a refund is a separate event); revenue numbers in companion KPI cards are partial-refund-aware (per GL#359), but the order count is not. If you need refund-aware order counting, see the Net Orders metric in the Metric Glossary.

"Orders" never includes carts, view-content events, or page-views — it always means a deduped purchase event. Cross-platform deduping uses click-IDs first (90-day persistence per GL#361), then UTM-tuple match, then session-cookie continuity.

The denominator: visitors vs sessions vs prior step

unique_visitors (site-wide CR)

A unique visitor is a deduped visitor_id in the active window. Same browser across the window = one visitor. Different devices for the same human = different visitors (we don't have a deterministic cross-device identifier without a logged-in user, which most DTC stores don't have at the visitor stage). The /dashboard hero CR uses this denominator because it's the population-stable number — the answer to "what share of our audience converts?"

sessions (marketing CR)

A session is a 30-minute-of-inactivity-bounded sequence of pageviews from the same visitor. One returning visitor with three discrete browsing windows = three sessions. Source/medium attribution is computed at the session grain, not the visitor grain — so a visitor whose first session was via paid Meta and second was via organic search gets attributed to TWO different source/medium rows in /marketing-acquisition. Marketing CR is the right denominator for paid optimization because it answers "of every session of attention this channel paid for, what share converted?"

visitors at the prior step (funnel-step CR)

The /funnel page is a sequential gate: a visitor only counts in step N's denominator if they cleared step N-1 first. So Checkout's denominator is the visitors who completed Add-to-Cart, NOT all site visitors. The product of all funnel-step CRs equals the funnel's overall conversion (start to finish), which itself is a different number from site-wide CR — funnel CR has hard step gates that site-wide CR does not.

How to pick the right CR — 3 steps

  1. Step 1. Identify the question you're answering. Population health → site-wide CR (orders / unique_visitors). Per-channel optimization → marketing CR (orders / sessions). Where are visitors dropping off → funnel-step CR (next_step / current_step). The same number on the same date range will read differently in each lens — that's the point.
  2. Step 2. Read the tooltip on the CR chip you're looking at. Every CR cell in Admaxxer carries a tooltip with the exact formula. /dashboard hero says 'orders / unique_visitors'. /marketing-acquisition source/medium says 'orders / sessions'. /funnel cards say 'visitors at this step / visitors at the previous step'. If two cells disagree, the tooltips will tell you why.
  3. Step 3. Use the right CR for the right action. Optimization target → marketing CR. Health KPI → site-wide CR. Funnel diagnosis → funnel-step CR. Don't compare apples and oranges. If you're noticing a CR drop, isolate the lens first — site-wide drops point to traffic-quality shifts (more cold reach, less brand search); marketing CR drops point to channel-specific issues; funnel-step drops point to a checkout-flow regression.

FAQ

Why does my dashboard show 2.7% CR but /marketing-acquisition shows 4.1% on the same date range?
Because they're answering different questions and use different denominators. The /dashboard hero CR is `orders / unique_visitors` — a population-stable metric counting each visitor once even if they returned three times in the window. The /marketing-acquisition source/medium CR is `orders / sessions` — counted at the session grain, so one returning visitor with three sessions counts three times in the denominator. When traffic is sticky (returning visitors are a meaningful share), session CR will read higher because the same converting visitor's sessions all count toward the order. Both numbers are correct — they're just different lenses. Use site-wide CR as the headline KPI when the question is 'what's our overall site health?' Use marketing CR when the question is 'which paid channel converts best per session of attention?'
Which conversion rate is THE conversion rate?
There isn't one. DTC analytics has settled on three lenses for the same fundamental ratio because each answers a different question: site-wide (population health, GA4-style), marketing (per-channel optimization), and funnel-step (where in the journey are visitors dropping off). Industry tools differ on default: Triple Whale defaults to session-based marketing CR; GA4 defaults to user-based site-wide CR; Datafast surfaces both. Admaxxer surfaces all three and labels each with its formula in the tooltip so you always know which one you're reading.
Why is funnel CR sometimes higher than marketing CR?
Funnel-step CR is conditional — it only counts visitors who already completed the prior step. Of every Add-to-Cart visitor (who already self-selected for purchase intent), maybe 40% reach Checkout. Of every random session arriving from Facebook, maybe 4% reach Add-to-Cart in the first place. Both are CR, but funnel-step CR is gated on prior commitment, so it will almost always be higher than the corresponding population-wide CR for any non-trivial funnel.
Should I optimize for site-wide CR or marketing CR?
Marketing CR is the right optimization target for paid acquisition because it isolates per-channel quality. A 1% CR on Meta vs. a 4% CR on Google isn't 'Google is 4x better' — it depends on session intent (Meta sessions are often top-of-funnel browse; Google sessions are often bottom-of-funnel intent). Use marketing CR to compare WITHIN a channel over time (is Meta's CR rising?), and use the marginal-ROAS column on /marketing-acquisition's MMM card to compare ACROSS channels. Site-wide CR is the right health KPI — track it as a trend line, not a per-channel optimization signal.
What conversion rate does the Conv Rate column show on the source/medium table?
Marketing CR — `orders / sessions` per source/medium row. Each row's CR is computed within its own source/medium bucket (so '(direct) / (none)' has its own session base, distinct from 'facebook / paid'). The pipe is `tinybird/pipes/source_medium_breakdown.pipe`. The value is already in 0–100 percent range from the SQL (per GL#318) — the React side renders it as `n.toFixed(2) + '%'` without re-multiplying.
Why doesn't site-wide CR equal the average of all marketing CRs?
Because they have different denominators (unique_visitors vs sessions) and a population-weighted average wouldn't reduce to the site-wide metric anyway. The right reconciliation: convert each metric back to absolute counts (orders + the appropriate denominator), then look at totals. The /marketing-acquisition Reconciliation Panel (described in /documentation/attribution-models) does this for revenue and order counts — it's the canonical surface for 'why don't my numbers add up?'