Discount as % of Revenue for the selected period.
At a glance
The proportion of gross revenue handed back to customers as discounts over the period, shown as a gauge. It is total discount value divided by total order value. A creeping ratio is the quiet way coupons erode margin, this is the card that makes the giveaway visible before it shows up as a margin problem.
| What it counts | SUM(order.discount_total) / SUM(order.total) x 100 over the period. The numerator is every coupon and cart discount applied; the denominator is gross customer-billed revenue. |
| REST API endpoint | GET /wp-json/wc/v3/orders. Fields used: discount_total (per-order discount, string-typed decimal) for the numerator and total for the denominator. Coupon definitions come from GET /wp-json/wc/v3/coupons for attribution. |
| Discount fields | discount_total is the order-level sum of all coupon discounts; discount_tax is stored separately and is not added here. Each individual coupon’s contribution sits in that order’s coupon_lines[]. The card sums discount_total across orders. |
| VAT / tax treatment | The denominator (total) is tax-inclusive, the WC standard. The numerator (discount_total) is the pre-tax discount value. For a directional ratio this is the conventional Woo reading; treat the gauge as an indicator, not a penny-exact accounting figure. |
| Status filter | Both numerator and denominator are summed over real revenue statuses (completed, processing); pending, failed, cancelled, and refunded are excluded so the ratio reflects discounts on revenue that was actually realised. |
| Refunds | The denominator is gross of refunds (WC stores refunds as separate objects and does not reduce order.total). A heavily refunded period can therefore understate the true discount burden slightly. |
| Self-hosted vs managed-Woo | Identical on self-hosted LAMP, WordPress.com, and managed-Woo (Woo.com Cloud, WP Engine, Pressable, Kinsta). Discount-extension plugins can store discounts outside discount_total, see FAQs. |
| Time window | 30D vsP (default 30D vs the prior 30D) |
| Alert trigger | >15%, driven by sentiment_key: wc_discount_total_pct |
| Roles | owner, finance |
Calculation
Calculated automatically from your WooCommerce 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 UK homeware brand on self-hosted WooCommerce 8.7 with the Stripe Gateway plugin. Three coupons ran in the window: WELCOME10 (10% off), FREESHIP (free shipping), and a flash SUMMER25 (25% off). The 30-day window covers 22 May 26 to 20 Jun 26.| Coupon | Orders using it | Discount given (discount_total contribution) |
|---|---|---|
| WELCOME10 | 318 | £8,140 |
| FREESHIP | 612 | £3,980 |
| SUMMER25 | 141 | £11,260 |
| (no coupon) | 1,420 | £0 |
| Total discount | £23,380 |
>15% threshold, so Vortex IQ Nerve Centre raises an alert. Four things to notice:
- One flash code did most of the damage. SUMMER25 was used on only 141 orders but contributed nearly half the discount value because it is a steep percentage off. A single aggressive code can push the whole ratio over threshold. Cross-check Top Coupons by Usage to confirm which code is driving the spike, usage rank alone would not have flagged SUMMER25 (it ranks third by count).
- The prior 30D was 11.2%. The ratio jumped from 11.2% to 16.4% vsP, tracking the SUMMER25 launch on 30 May 26. The vsP comparison is what turns a single high number into a trend the merchant can act on.
- Stacking inflates it further. If customers combined SUMMER25 with FREESHIP (no “Individual use only” flag), some orders carried both discounts. That is the link to Coupon Stacking Abuse: stacking is one of the mechanisms that pushes this ratio up.
- The margin impact is larger than the ratio looks. A 16.4% revenue giveaway on a brand with a 45% gross margin means roughly a third of the period’s gross profit went to discounts. Pair with Gross Margin to translate the ratio into profit terms before deciding whether the promotion paid for itself.
Sibling cards merchants should reference together
| Card | Why pair it with Discount as % of Revenue |
|---|---|
| WC Top Coupons by Usage (30d) | Tells you which codes are driving the ratio. A steep percentage code can dominate the discount value despite modest usage. |
| WC Coupon Stacking Abuse (>2 coupons / order) | One mechanism that pushes this ratio up. Stacked orders carry compounded discounts. |
| WC Active Coupons | The size of the live coupon pool. More aggressive codes live at once means more discount pressure. |
| WC Gross Margin | Translates the discount ratio into profit terms. A 15% giveaway can swallow a third of gross profit. |
| WC Average Order Value | Discounts pull net AOV down. Pair to see whether the giveaway is buying bigger baskets or just shrinking margin. |
| BC Discount of Revenue | Cross-platform peer for agencies running a multi-platform book. |
| Shopify Discount of Revenue | SaaS-platform peer with the same ratio definition. |
Reconciling against WooCommerce
Where to look in WooCommerce Admin: WP Admin > WooCommerce > Reports > Orders > Sales by date shows Coupons / Discounts as a line alongside Gross sales. Divide one by the other for the closest match to this gauge. The Coupons by date report breaks the discount total down per code so you can see which one is driving the ratio. Other WP Admin views that look related but are not:- WooCommerce Analytics > Coupons (WC 4.0+): uses the separate Analytics engine with its own status filtering and refund handling; it can read lower because it nets refunds differently.
- Home > Stats overview widget: shows revenue only, no discount ratio.
| Reason | Direction of divergence |
|---|---|
| Refund treatment. This card’s denominator is gross of refunds; WC Analytics nets refunds out, which changes the ratio. | Ours and WC Analytics differ; legacy Sales report is closer |
Tax treatment of the numerator. discount_total is pre-tax while total is tax-inclusive. A report that puts both on the same tax basis reads slightly differently. | Marginal; directionally identical |
| Time-zone. WC reports run on WP-site timezone (Settings > General > Timezone); Vortex IQ runs on UTC. Boundary-day orders fall on different sides. | +/- a day’s discounts at the boundary |
Status filter. This card sums completed + processing; a report including on-hold or pending shifts both numerator and denominator. | Variable; match the filter |
Plugin-stored discounts. Some discount plugins write their reduction outside discount_total (for example as a negative fee line). The Vortex IQ engine reads discount_total, so a plugin that bypasses it will be under-counted here. | Ours lower than the merchant expects |
| Self-hosted server uptime. An outage during the indexer poll delays recent orders by up to 24 hours. Managed hosts are steadier. | Ours temporarily lower; self-resolves at next sync |
Known limitations / merchant FAQs
Does this include tax in the discount figure? No. The numerator usesdiscount_total, which is the pre-tax discount value; discount_tax is stored separately and is not added. The denominator (total) is tax-inclusive, the WC standard. Treat the gauge as a directional indicator of giveaway pressure rather than a penny-exact accounting ratio. For exact accounting, use WC Analytics with a consistent tax basis.
Is the denominator net or gross of refunds?
Gross. WooCommerce stores refunds as separate objects and does not reduce order.total, so this card’s denominator is gross revenue. A heavily refunded period can therefore slightly understate the true discount burden. WC Analytics nets refunds out, which is why the two engines can disagree.
A discount plugin is not showing up in the ratio, why?
Some plugins apply their reduction outside the standard discount_total field, for example as a negative fee line or a price override. The Vortex IQ engine reads discount_total, so a plugin that bypasses it will be under-counted. If your real giveaway looks higher than this gauge, check how your discount plugin records its reduction and contact support@vortexiq.ai so the engine can be extended for your shape.
Why did the ratio jump when usage did not?
Because this card weights by value, not count. A steep percentage code used on a handful of orders can move the ratio far more than a small free-shipping code used on hundreds. Read it alongside Top Coupons by Usage: high value plus low count is the signature of an aggressive promotion.
What is a healthy discount ratio?
It is category-dependent. Fashion and homeware often run 10 to 20% in promotional months; commodity goods run lower. The >15% alert is a generic baseline. Set your own threshold in the Sensitivity tab to match your margin structure rather than relying on the default.
How does stacking affect this card?
Stacking compounds discounts on individual orders, which raises discount_total per order and pushes the ratio up. If this gauge is rising, check Coupon Stacking Abuse to see whether unrestricted coupon combinations are part of the cause.