Discounted-order AOV vs full-price-order AOV, exposes whether promos cannibalise margin.
At a glance
Two AOV figures side-by-side: orders that used a discount code or automatic discount vs orders that didn’t. Tells you whether promotions are growing baskets or just cutting margin.
| What it counts | Two parallel calculations: AVG(totalPrice WHERE discountCode IS NOT NULL OR totalDiscounts > 0) and AVG(totalPrice WHERE discountCode IS NULL AND totalDiscounts = 0). The card surfaces both numbers and the spread between them. |
| VAT / tax treatment | Both sides inherit taxesIncluded mode of the store; comparable apples-to-apples. |
| Shipping | Included (sits in totalPrice). |
| Discounts | The discount-side reflects post-discount totals; the spread between full vs discounted AOV understates the gross-line-item gap. |
| Refunds | NOT deducted on either side. |
| Cancelled / voided orders | Included if Shopify indexed them. |
| Currency | Multi-currency arithmetic without FX. Filter to one currency for clean reads. |
| Channels / sources | All channels. POS often has manual discounts that look like discount-orders here. B2B with contracted pricing technically counts as “discounted”. |
| Time window | 30D (default 30D rolling) |
| Alert trigger | None; descriptive comparison. |
| Roles | owner, marketing |
Calculation
Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US activewear DTC brand on Shopify Plus, runs WELCOME10 + monthly seasonal codes. 30D window 12 Apr 26 to 12 May 26.| Cohort | Orders | AOV | Note |
|---|---|---|---|
| Discounted orders | 4,280 | $112 | WELCOME10, FRIENDS25, TRAINING20 codes |
| Full-price orders | 6,150 | $87 | No code, no automatic discount |
| All orders | 10,430 | $97 | Blended |
- Discounted orders are larger. 87 = customers using codes spend 28.7% more. Common pattern; codes act as bundling triggers (people add items to qualify, or use the code on bigger pre-planned purchases).
- The naive read is wrong. “Discounted AOV is higher” doesn’t mean “discounts grow basket”. The gap reflects code self-selection: customers who plan a £100 purchase look up codes; impulse buyers don’t. Codes don’t cause the larger basket; they attract the larger-basket cohort.
- The margin question. A WELCOME10 (10% off) on a 11 discount. If product margin is 50%, customer gross margin per order goes from 87) to 112 - 56 COGS). Marginally better. But the comparison should be: would the customer have bought at 11.
- First-time buyer cohorts are different. New-customer code redemptions are usually true incremental; the customer wouldn’t have bought without it. Existing-customer code redemptions are mostly cannibalistic.
- Stacked codes inflate the discount-AOV. If your store allows code stacking, the inflation in discounted-AOV is over-counted; customers stacking 3 codes appear in the discount cohort but their $-discount is much higher.
- The spread shrinks during sales. During a 25%-off site-wide event, the full-price cohort shrinks (everyone uses the code) and the spread becomes meaningless. Use this card outside major-promo windows for clean reads.
Sibling cards merchants should reference together
The discount-vs-full-price comparison is one slice. The companions:| Card | Why pair it with AOV with/without Discount |
|---|---|
| Average Order Value | The blended cousin. Mathematical relationship: AOV = (discount_AOV × discount_orders + full_AOV × full_orders) / total_orders. |
| Total Discount Used | The £-cost of the discount-cohort. Pair to compute net margin per cohort. |
| Top Discount Codes | Drills into which codes drove the discount cohort. |
| Discount % of Revenue | The ratio version; helps frame the discount-cohort spend in context of total revenue. |
| Repeat Customer Rate | Cohort overlap: discount-buyers often skew first-time; repeat-buyers skew full-price. |
| New Customers | Cohort overlap; new customers heavily use first-order codes. |
| Discount Over Time | Trend cousin; spike in discount cohort tied to specific promo events. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Shopify doesn’t expose a direct discount-vs-full-price AOV comparison; reconstruct from:- Analytics → Reports → “Discounts”: shows discount-code usage and value. Use to identify the discount-cohort population.
- Orders → Filter by “has discount”: order list scoped to discount-cohort. Sum totals and divide by count for AOV.
- Reports → Sales attributed to first-time vs returning customers: tangentially useful, since first-time customers use codes more.
| Reason | Direction | Why |
|---|---|---|
| Definition of “discounted” | Either | We flag any order with totalDiscounts > 0 OR a discount code. Shopify reports may use just code-based or just automatic-discount-based depending on the report. |
| B2B contracted pricing | Theirs may differ | We treat B2B price-list discounts as “discounts”; Shopify Plus reports may treat them as separate price-tier orders, not discounts. |
| Shipping discounts | We include | Shipping-only discount codes contribute to the discount cohort here; some Shopify reports separate shipping-discounts. |
| Time zone | Boundary | UTC vs store time zone. |
| Sync lag | Ours lower for “today” | Most-recent 5 to 15 minutes of orders may not be in. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
klaviyo.kl_revenue_from_email (when connected) | Indirect | Klaviyo flow emails often carry discount codes; the discount cohort here usually contains a high share of email-attributed orders. |
google_ads.gads_promo_attributed_revenue | Indirect | Paid-search-driven promo orders contribute to the discount cohort. |
Known limitations / merchant FAQs
Why is my discount AOV higher than full-price AOV? Self-selection. Customers planning a larger purchase actively look up codes; impulse and small-basket buyers often don’t bother. The code didn’t cause the larger basket; the larger-basket-intent customers found the code. Should I take this as proof discounts are profitable? No. The right comparison is: would the discount-cohort customers have bought at full price without the code? For first-timers, often no (incremental). For repeats, often yes (cannibalistic). The blended profitability depends on the cohort mix. My discount AOV is lower than full-price AOV. What’s that mean? Either:- Mass-market codes (BLACK20, sale-wide events) attract impulse buyers who would have spent less anyway. Heavy first-time-buyer skew on small baskets.
- Free-shipping-threshold codes that customers use to buy small things just below the threshold (use code instead of adding filler). The code subverts the threshold rather than complementing it.
- Affiliate / influencer codes with broad audiences and low-intent traffic. The cohort behaves like cold-acquisition.
- Compute average $-discount per redemption (code rate × code AOV).
- Compute incremental orders (redemptions that wouldn’t have happened without the code; estimate via attribution data).
- Net profitability = incremental_orders × avg_margin_per_order − total_discount_cost.
- If discount-AOV >> full-price-AOV by 20%+: codes attract premium-basket buyers. Lean into bigger bundle codes (“Save 20% over $200”).
- If discount-AOV ≈ full-price-AOV: codes are doing nothing for basket size. Either reposition (welcome-only) or sunset.
- If discount-AOV << full-price-AOV by 15%+: codes are cannibalising small baskets. Tighten code usage rules (one-time-per-customer, minimum-basket).
- Audit code-stacking allowance: stacking inflates the discount-AOV without delivering corresponding margin.
- Segment by code source: welcome codes vs reactivation codes vs influencer codes have very different economics. The blended view hides which.