From reading numbers to making them
Last session (b1) you learned what Mango Lane records: the five-event trail and the counting rules. Today those events become metrics. Everything is arithmetic a twelve-year-old can do - division, mostly - and that is the point. The core four (conversion rate, AOV, GMV, and units per transaction x item price) are the spine of every review pack you will ever build, so you should be able to produce them from raw counts on the back of a napkin.
The month's raw counts 8 min live
Here is everything Mango Lane's event trail recorded last month, before anyone divided anything. Five counts. Every metric in this session is built from exactly these - if a number on this page cannot be traced back to this table, it does not belong on this page.
| Raw count | Value | Where it comes from |
|---|---|---|
| Distinct visitors | 240,000 | unique people, however often they returned |
| Sessions | 360,000 | one per visit; expires after ~30 min idle (b1) |
| Purchase events | 9,720 | orders - each purchase event is one order |
| Total item revenue | $660,960 | summed from every purchase event's line items |
| Units sold | 19,440 | items across all those orders |
LiveWhy we start from raw counts, not from the dashboard4 min▶
A dashboard shows you a 2.7% and asks you to trust it. Raw counts let you make the 2.7% and check it. The difference matters because tracking breaks quietly: a checkout script update drops purchase events for a week, a bot filter changes and session counts jump, a currency setting doubles revenue. The analyst who can recompute a metric from raw counts notices; everyone else presents the wrong number confidently.
- Counts are facts, metrics are choices. 9,720 purchase events happened - fact. Whether you divide them by sessions or visitors is a definition choice (b1's denominator lesson).
- Every metric today is one division away from this table, or one division and one multiplication.
- Keep the table. The homework asks you to build the same five-row table for your own store.
Conversion rate - both denominators ★ 8 min · pens out
Conversion rate is orders divided by traffic - but b1 taught you that "traffic" has two honest meanings. So we compute both, and see with real numbers why they differ.
LiveSession CR, then visitor CR, step by step6 min▶
Session CR = purchase events ÷ sessions = 9,720 ÷ 360,000. Divide: 9,720 ÷ 360,000 = 0.027 = 2.7%. This is Shopify's "online store conversion rate" definition, and this course's default.
Visitor CR needs buying people, not orders. Roughly 9,300 distinct visitors placed those 9,720 orders - some people bought twice in the month. So buying visitors < orders, always.
Visitor CR = buying visitors ÷ distinct visitors = 9,300 ÷ 240,000 ≈ 0.0388 = ~3.9%. Same store, same month, and both numbers are correct.
Notice you could NOT compute visitor CR from the raw-counts table alone - "buying visitors" is a sixth count, a people-level dedupe of the purchase events. When a tool reports visitor CR, that dedupe is happening behind the curtain.
Which one do the tools give you? Shopify's "online store conversion rate" is session-based, exactly like our 2.7%. GA4's purchase journey funnel counts users, so its top-to-bottom rate behaves like our visitor CR. Put a Shopify dashboard and a GA4 funnel side by side and they will disagree on "conversion rate" every single day - correctly. Teams have run week-long "data quality investigations" over exactly this gap.
AOV and the two factors inside it ★ 8 min · pens out
Average order value is revenue per order - one division. But AOV has its own mini driver tree: an order's value is how many items it holds times what each item costs. Splitting AOV into those two factors is what turns "AOV moved" from a fact into a diagnosis.
LiveAOV, then its two-factor split6 min▶
AOV = total item revenue ÷ orders = $660,960 ÷ 9,720 = $68. Every order averaged sixty-eight dollars.
Units per transaction = units sold ÷ orders = 19,440 ÷ 9,720 = 2. The average basket holds two items.
Average item price = revenue ÷ units = $660,960 ÷ 19,440 = $34. Cross-check the tree: 2 units x $34 = $68 = AOV. It closes exactly - it always must, because the two factors are just AOV's own numerator and denominator rearranged.
Shopify's fine print: Shopify computes AOV as revenue ÷ orders excluding gift cards and post-order adjustments (refunds and edits made after the order). So a Shopify AOV can disagree with your own revenue-÷-orders arithmetic without either being wrong - they netted differently. This is the session's recurring theme, and Demo 3 makes it the whole lesson.
GMV and the ladder down to real money ★ 12 min · pens out
GMV - gross merchandise value - is the headline number: everything shoppers ordered. Compute it two ways: sum the purchase events ($660,960 from the raw table) or multiply orders x AOV (9,720 x $68 = $660,960). Same answer, as it must be. But GMV is not money in the bank. Between "ordered" and "kept revenue" sits a ladder of deductions, and every rung is a place two reports can honestly disagree.
LiveWalk the ladder with the actual arithmetic6 min▶
Start at GMV $660,960 - the value of everything ordered, the moment it was ordered.
Cancellations (orders killed before shipping - payment failed, stock out): 2% of GMV = $13,219. Left: $660,960 - $13,219 = $647,741.
Returns and refunds (shipped, then sent back or refunded): 8% = $52,877. Left: $647,741 - $52,877 = $594,864. Eight percent is realistic for fashion - wrong size, wrong color, "ordered three, kept one".
Discounts (promo codes, markdowns applied at checkout): 5% = $33,048. Left: $594,864 - $33,048 = $561,816 net revenue. The store keeps about 85 cents of every headline GMV dollar.
The core four on one page 3 min live
Everything you computed today, in the format you should keep at your desk: metric, formula, this month's value, and the one thing that makes each number lie to you.
LiveMetric · formula · value · watch-out3 min▶
| Metric | Formula | Mango Lane | Watch out for |
|---|---|---|---|
| Conversion rate | orders ÷ sessions (or buying visitors ÷ visitors) | 2.7% session / ~3.9% visitor | Undeclared denominator - the b1 trap |
| AOV | revenue ÷ orders | $68 | Platform exclusions (Shopify: gift cards, post-order adjustments) |
| AOV's factors | units ÷ orders, then revenue ÷ units | 2 units x $34 | Reporting AOV moves without saying which factor moved |
| GMV | orders x AOV = summed order value | $660,960 | Nobody agrees what it nets out - always ask |
Next session (b3) these four stop being separate rows: you assemble them into one GMV driver tree in a live simulator, where wiggling any input recomputes everything downstream - the arithmetic you did by hand today, running continuously.
Two sanity habits that catch broken numbers 5 min live
The core four are easy. Keeping them trustworthy is the actual job. Two habits do most of the work.
LiveHabit 1 - cross-foot everything3 min▶
Cross-footing is accountant-speak for checking that a table's parts sum to its total. For metrics: orders x AOV must equal summed revenue (9,720 x $68 = $660,960 ✓), units per transaction x item price must equal AOV (2 x $34 = $68 ✓), and channel revenues must sum to total GMV. If two of these disagree, one of the source counts is wrong - and you found out at your desk, not in the Monday meeting.
The check that pays for itself: a team celebrates a 12% AOV jump. A cross-foot shows orders x new AOV overshoots summed revenue by 9%. Cause: a deploy started double-firing the revenue parameter on some purchase events. Revenue was fine; the metric was broken. Ten seconds of multiplication beat a week of wrong decisions.
Self-studyHabit 2 - recompute one metric from raw counts monthly2 min read▶
Once a month, pick one core metric and rebuild it from raw event counts, exactly as you did today, then compare against the dashboard. A small standing drift (dashboard says 2.65%, you get 2.7%) usually means a definition difference - find it once, write it down (b8's spec sheet). A new drift means tracking broke: an event stopped firing, a filter changed, a script update ate the purchase pixel. Tracking rot is silent; this habit is the smoke alarm.
Try it yourself - this week ◐ 20-30 min total
- Build your own five-row raw-counts table for last month: visitors, sessions, orders, revenue, units. Pull the counts from wherever your store records them.
- Compute your core four by hand: session CR, AOV, GMV, and AOV's split into units per transaction x average item price. Cross-foot: orders x AOV should equal revenue.
- Compare each against your dashboard's version. Any mismatch over ~1% deserves an investigation: different denominator? gift cards excluded? refunds netted out? Write down what you find.
- Ask one colleague what your company's "revenue" number nets out (cancellations? returns? discounts?). If nobody knows for sure, you have just discovered why b8 exists.
Sources this session draws on
The formulas are arithmetic, but the definitions - what gets excluded, what gets netted - come from the platforms' own documentation. This page draws on:
Three questions before you go 🎯 ◐ 90 seconds
1 · Mango Lane has 9,720 orders, 360,000 sessions, and ~9,300 buying visitors out of 240,000. Why is visitor CR (~3.9%) higher than session CR (2.7%)?
Each visitor averages 1.5 sessions, so switching from sessions to visitors shrinks the denominator by a third. The numerator shrinks only slightly (repeat buyers dedupe 9,720 orders to ~9,300 people). Smaller denominator, similar numerator, bigger rate. Note repeat buying makes buying-visitors SMALLER than orders, not bigger - that is why A is wrong.
2 · AOV drops from $68 to $61. Units per transaction is still exactly 2. What moved, and roughly to what?
AOV = units per transaction x average item price. If units held at 2, then price = $61 ÷ 2 = $30.50, down from $34. The two-factor split turns "AOV is down" into a specific question with a specific owner (pricing, promo, or merchandising mix - not the cross-sell widget).
3 · A partner announces "$660,960 GMV". Which of these is definitely NOT yet deducted from that number?
Trick question, deliberately. No standards body defines GMV: some companies quote it before cancellations, some net out discounts, some do not. Shopify avoids the term entirely (Gross sales → Net sales → Total sales). The only safe move is the question: "what is netted out of this number?"