Skip to main content
Metrics type: Supporting MetricsCategory: Ecommerce Platform
Discount leakage as a share of revenue. Persistent >25% means the business depends on promos.

At a glance

Total discount given as a percentage of total revenue, an indicator of how much of your top-line is being given away to drive purchases. Sustained values above 25% indicate the business is structurally promo-dependent, a margin and brand risk.

Calculation

Worked example

A US apparel brand on Shopify Plus. Period: 12 Apr 26 to 11 May 26. vs the prior 30D where this card read 18%. The card flags an 12.3 ppt jump and trips the >25% sentiment threshold. Five things to notice:
  1. The jump is the alert. A move from 18% to 30% in 30 days is structural, not a single sale. Either a promo extended longer than planned, an evergreen-discount mechanic launched, or a margin-killing influencer code went viral. Cross-reference Top Discount Codes.
  2. 30% on this metric ≠ 30% off list. Because totalPrice is post-discount, the intuition “everything is 30% off” is wrong. The list-price discount is 23.3%, still high but better than the headline. When communicating to non-technical stakeholders, explain both views.
  3. Margin impact compounds. If gross margin is 60% (typical apparel), a 30% revenue-share discount means net margin drops from 60% × 370,600=370,600 = 222,360 to (60% - 23%) × 370,600=370,600 = 137,122. A $85k margin hit relative to a no-discount baseline. The card is a margin warning, not just a “the customer paid less” warning.
  4. Promo dependence has long-term costs. Brands that hover at 30%+ discount-to-revenue for 6+ months condition customers to wait for sales. AOV at full price drops, repeat rate becomes promo-anchored, and pulling the discount mid-year produces a worse drop than expected. The metric is a strategic-positioning canary.
  5. Channel mix can confound. A pop-up retail event with 20% staff-discount allocations, a B2B catalogue with standing 15% wholesale pricing, and DTC at full price all blend into one number. To filter B2B and staff out, use the per-channel breakdown in Shopify Admin (this card aggregates).

Sibling cards merchants should reference together

Discount % of revenue is a strategy alarm. Pair with these to find cause and fix:

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin: Shopify Admin does not have a single discount-as-share-of-revenue tile. Reconstruct from: Other Shopify Admin views:
  • Reports → Net sales: Shopify’s “net sales” report deducts discounts already; useful for comparing post-discount vs gross.
  • Apps like Lifetimely: surface discount-share-of-revenue with margin overlay.
Why our number may legitimately differ from Shopify Admin: Cross-connector reconciliation:

Known limitations / merchant FAQs

Why is my number higher than my “discount %”? Because totalPrice is post-discount. A 30% off promo applied to 100list=100 list = 70 paid + $30 discount, the card reads 30/70 = 43%, not 30%. The metric measures discount-as-share-of-net-revenue, not discount-off-list. Both views are useful; they answer different questions. Is 25% a sensible threshold? For most non-fashion DTC, yes. Fashion and beauty often run structurally at 20 to 35% promo intensity. Adjust the threshold to your industry baseline plus 5 ppt; that catches genuine moves rather than seasonal noise. Are B2B and wholesale discounts counted? Yes. The card aggregates across channels. A B2B-heavy store with standing 15% wholesale discount sees a permanently elevated baseline. Filter to DTC-only via channel filter (manual today; on roadmap) for clean retail-promo analysis. What about staff and influencer discounts? Counted. Both contribute to the numerator. If you want to isolate marketing discounts only, exclude staff / influencer codes via tag-based filtering (on roadmap as a configuration option). Why does my Shopify number differ? Most often, time zone or filter scope. Shopify uses store time zone for window edges; Vortex IQ uses UTC. Shopify reports can be filtered by channel; this card aggregates. Multi-currency, any impact? Yes, the ratio across mixed currencies is meaningless without FX. Filter to single presentment currency for accurate reads. Shopify Plus vs basic? Plus stores running Shopify Functions for custom discounts may not record some logic in the standard totalDiscounts field; in that case, the card under-reports. Audit Functions implementation if numbers seem too low. Refresh cadence? 5 to 15 minute index lag. The 30-day rolling window updates each cycle. The card alerted (>25%), what should I do?
  1. Open Discount Over Time. Find the days driving the rise.
  2. Open Top Discount Codes. Identify the responsible codes.
  3. Audit code expiry; an unintended-still-live code is the most common cause of a sustained rise.
  4. Check whether a campaign was extended without updating internal forecasts.
  5. Evaluate whether the discount is paying back: revenue lift vs margin hit. If margin damage outweighs revenue gain, plan exit.
  6. Long-term: build the brand-led narrative back; reduce promo dependence over 6 to 12 months by gradually replacing discounts with non-price levers (loyalty perks, exclusive access, content).

Tracked live in Vortex IQ Nerve Centre

Discount % of Revenue is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.