> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Coupon Stacking Abuse (>2 coupons / order), WooCommerce

> Coupon Stacking Abuse (>2 coupons / order). Tracks orders where customers redeemed three or more coupons on a single order, a signal that coupon restrictions are misconfigured. How to read it, why it matters, and how to act on it.

**Card class:** [Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> Orders with >2 stacked coupons indicate WC > Marketing > Coupons restrictions misconfigured. Each stacked coupon usually = unintended margin erosion.

## At a glance

> The count of orders in the period that carried three or more coupon redemptions. WooCommerce lets customers apply multiple coupons unless each coupon has its "Individual use only" flag set, so a high count here almost always means coupon restrictions were left open. Every stacked coupon compounds the discount and erodes margin on that order.

|                                 |                                                                                                                                                                                                                                                                                                       |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**              | `COUNT(orders WHERE size(coupon_lines) > 2)` over the period. Each order in WC records every applied coupon as a row in its `coupon_lines` array; this card counts orders where that array has three or more entries.                                                                                 |
| **REST API endpoint**           | `GET /wp-json/wc/v3/orders` and inspect each order's `coupon_lines[]` (each line carries `code`, `discount`, `discount_tax`). Coupon definitions themselves come from `GET /wp-json/wc/v3/coupons`, where the `individual_use` flag governs whether a coupon may be stacked.                          |
| **What "stacking" means in WC** | WooCommerce permits multiple coupons on one cart by default. The only native guard is the per-coupon **Individual use only** flag (`individual_use: true`), which forbids that coupon from being combined with any other. If none of your coupons set it, customers can pile on as many as they hold. |
| **Discount fields**             | Each `coupon_lines` entry exposes the per-coupon `discount` applied. The order-level `discount_total` is the sum of all coupon discounts on the order. A stacked order shows a large `discount_total` relative to its `total`.                                                                        |
| **Status filter**               | Counts orders in real revenue statuses (`completed`, `processing`, `on-hold`); excludes `pending` cart skeletons and `failed` attempts so the figure reflects discounts that actually shipped or are about to.                                                                                        |
| **Self-hosted vs managed-Woo**  | Identical definition on self-hosted LAMP, WordPress.com, or managed-Woo (Woo.com Cloud, WP Engine, Pressable, Kinsta). Self-hosted stores running coupon-extension plugins (Smart Coupons, Advanced Coupons) change stacking behaviour, see FAQs. Self-hosted hosts add sync-lag risk during outages. |
| **Time window**                 | `30D vsP` (default 30D vs the prior 30D)                                                                                                                                                                                                                                                              |
| **Alert trigger**               | `>10 orders with 3+ coupons`, driven by `sentiment_key: wc_coupon_stacking_abuse_alert`                                                                                                                                                                                                               |
| **Roles**                       | owner, finance, marketing                                                                                                                                                                                                                                                                             |

## 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 and the Advanced Coupons extension. A "WELCOME10" first-order code, a "FREESHIP" shipping code, and a "VIP15" loyalty code are all live. None of the three has "Individual use only" ticked. The 30-day window covers 22 May 26 to 20 Jun 26.

| Coupons applied per order      | Order count | Avg `discount_total` | Counts in this card? |
| ------------------------------ | ----------- | -------------------- | -------------------- |
| 0 coupons                      | 1,420       | £0.00                | No                   |
| 1 coupon                       | 610         | £6.40                | No                   |
| 2 coupons                      | 188         | £13.10               | No                   |
| 3 coupons                      | 41          | £28.70               | Yes                  |
| 4+ coupons                     | 6           | £41.20               | Yes                  |
| **Stacked orders (this card)** | **47**      |                      |                      |

The card reads **47** stacked orders, above the `>10 orders with 3+ coupons` threshold, so Vortex IQ Nerve Centre raises an alert. Four things to notice:

1. **The root cause is a missing flag, not customer fraud.** All three coupons were created without "Individual use only". WooCommerce did exactly what it was told and let customers combine them. The fix lives in WP Admin > Marketing > Coupons: open each coupon, Usage restriction tab, tick **Individual use only**. This is the single most common cause of unintended stacking.
2. **Margin erosion compounds.** The 47 stacked orders averaged £30+ in `discount_total` versus £6.40 on single-coupon orders. On a £55 average basket that is over half the order value discounted away. Pair with [Discount as % of Revenue](/nerve-centre/kpi-cards/woocommerce/discount-as-of-revenue) to see the blended impact.
3. **The Advanced Coupons plugin changes the rules.** This brand runs Advanced Coupons, which adds its own "scheduling" and "cart conditions" but does not override the native `individual_use` flag. Some coupon plugins (Smart Coupons) add an explicit "exclude coupons" matrix; if you run one, check its settings too, not just core WC.
4. **The prior 30D had 9 stacked orders.** The card shows a jump from 9 to 47 vsP, which coincided with the launch of the VIP15 code on 28 May 26. That launch is the proximate trigger: a third stackable code multiplied the combinations customers could assemble.

## Sibling cards merchants should reference together

| Card                                                                                          | Why pair it with Coupon Stacking Abuse                                                                                                 |
| --------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| [WC Top Coupons by Usage (30d)](/nerve-centre/kpi-cards/woocommerce/top-coupons-by-usage-30d) | Tells you which codes are being stacked. A code that suddenly climbs the usage chart is often the one customers are combining.         |
| [WC Discount as % of Revenue](/nerve-centre/kpi-cards/woocommerce/discount-as-of-revenue)     | The blended margin impact. Stacking pushes this ratio up; pair to quantify the financial cost.                                         |
| [WC Active Coupons](/nerve-centre/kpi-cards/woocommerce/active-coupons)                       | How many coupons are live right now. The more stackable codes are active at once, the more combinations customers can assemble.        |
| [WC Gross Margin](/nerve-centre/kpi-cards/woocommerce/gross-margin)                           | Where the erosion lands. Persistent stacking shows up as a margin dip even when revenue looks healthy.                                 |
| [WC Average Order Value](/nerve-centre/kpi-cards/woocommerce/average-order-value)             | Stacked orders carry a lower net AOV. A falling AOV alongside rising stacking confirms discounts are doing the damage.                 |
| [BC Top Coupons](/nerve-centre/kpi-cards/bigcommerce/top-coupons)                             | Cross-platform peer for agencies running a multi-platform book.                                                                        |
| [Shopify Top Discount Codes](/nerve-centre/kpi-cards/shopify/top-discount-codes)              | SaaS-platform peer. Shopify enforces single-discount-per-order natively, so stacking is a Woo-specific failure mode worth contrasting. |

## Reconciling against WooCommerce

**Where to look in WooCommerce Admin:**

[WP Admin > Marketing > Coupons](/wp-admin/edit.php?post_type=shop_coupon) lists every coupon. Open each one and check the **Usage restriction** tab for the "Individual use only" checkbox. To find the offending orders themselves, go to [WP Admin > WooCommerce > Orders](/wp-admin/admin.php?page=wc-orders) and open individual orders, the applied coupons appear in the order line-item table. WooCommerce has no native "orders with N coupons" report, so this card exists precisely because the count is invisible in stock WP Admin.

Other WP Admin views that look related but are not:

* **WP Admin > WooCommerce > Reports > Orders > Coupons by date**: totals discount value per coupon, but does not show how many coupons were combined on a single order.
* **Marketing > Coupons "Usage / Limit" column**: shows how many times each code was redeemed in total, not whether it was redeemed alongside other codes.

**Why our number may legitimately differ from a manual WP Admin count:**

| Reason                                                                                                                                                                                                                                                                                                                           | Direction of divergence                            |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| **Time-zone**. WC stores order timestamps in WP-site timezone (*Settings > General > Timezone*); Vortex IQ runs on UTC by default. Orders near midnight on the boundary days fall on different sides.                                                                                                                            | +/- a day's orders at the boundary                 |
| **Self-hosted server uptime**. If the WP host suffered an outage during the indexer poll, recent stacked orders may be missing for up to 24 hours. Self-hosted Woo on shared hosting (Bluehost, GoDaddy) shows this most; managed hosts (Woo.com Cloud, WP Engine, Pressable, Kinsta) are steadier.                              | Ours temporarily lower; self-resolves at next sync |
| **HPOS vs legacy storage**. WC's High-Performance Order Storage keeps coupon lines in the `wc_order_coupon_lookup` table; legacy stores keep them in post-meta. The Vortex IQ engine reads `coupon_lines` via the REST API so both are covered, but a half-migrated store (HPOS sync in progress) can briefly show stale counts. | Either; self-resolves once HPOS sync completes     |
| **Coupon-plugin behaviour**. Smart Coupons and Advanced Coupons can bundle multiple discounts under one "coupon" or auto-apply codes. Auto-applied coupons still appear in `coupon_lines`, so an auto-apply rule can inflate the per-order count even if the customer typed only one code.                                       | Ours higher than the merchant's mental model       |
| **Status filter**. This card counts real-revenue statuses; a manual count that includes `pending` cart skeletons will read higher.                                                                                                                                                                                               | Manual count higher                                |

WooCommerce treats coupon stacking as a configuration choice, not an error, so there is no vendor dashboard "abuse" figure to reconcile against. This card is the detection layer for a gap WP Admin does not surface.

## Known limitations / merchant FAQs

**Why does WooCommerce allow stacking at all?**
By design. Core WC assumes merchants may want to combine, say, a free-shipping code with a percentage code. The only native control is the per-coupon "Individual use only" flag. If you never want codes combined, tick that flag on every coupon. There is no global "no stacking ever" switch in core WC; you set it coupon by coupon (or use a coupon-management plugin that adds a global rule).

**Is stacking always abuse?**
No. Some merchants intentionally allow a loyalty code plus a shipping code. The card is named for the common case where stacking is unintended, but the threshold is configurable in the Sensitivity tab. Raise it if your store runs deliberate multi-coupon promotions, or lower it to zero-tolerance if you never combine codes.

**Does this count auto-applied coupons?**
Yes. Plugins like Advanced Coupons and Smart Coupons can auto-apply a code (for example, a cart-condition discount). Auto-applied codes land in `coupon_lines` exactly like typed codes, so an order with one typed code plus two auto-applied codes counts as a 3-coupon order here. If your count is surprisingly high, audit your auto-apply rules first.

**How does HPOS affect this card?**
WooCommerce High-Performance Order Storage moves order data out of post-meta into dedicated tables, including coupon lookups. The Vortex IQ engine reads coupon lines through the REST API, which abstracts both storage modes, so the count is correct on HPOS and legacy stores alike. During an in-progress HPOS migration the lookup table can briefly lag; counts settle once the sync completes.

**A coupon plugin bundles several discounts into one code, does that count as stacking?**
It depends on how the plugin records the discount. If the plugin writes one `coupon_lines` entry, it counts as a single coupon here even though it applied multiple discounts. If it writes one line per underlying discount, it inflates the count. Check your plugin's behaviour in a test order. Reach out to [support@vortexiq.ai](mailto:support@vortexiq.ai) if a plugin's data shape is producing misleading counts.

**My WP Admin shows no obvious problem, why is this card flagging?**
WP Admin has no "orders with 3+ coupons" view, so the problem is genuinely invisible there. Open three or four of the flagged orders from the Orders list and look at the coupon line items. You will typically find the same two or three stackable codes recurring, fix the "Individual use only" flag on those and the count drops at the next promotion cycle.

***

### Tracked live in Vortex IQ Nerve Centre

*Coupon Stacking Abuse (>2 coupons / order)* is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
