Try this. Open Marketing → Coupons in any WooCommerce shop that has been running for a couple of years and count how many codes are still live. Then ask yourself how many of them should be.
Exactly.
Shops collect coupons the way drawers collect cables. There’s the launch code from two years ago. There’s the partner discount that nobody switched off after the partnership ended. And there are three variations of the same campaign, when only one of them was ever meant to survive. WooCommerce keeps honouring every single one of them, happily… and it tells you nothing.
The thing is, WooCommerce lets you create coupons, but it doesn’t help you review them. It won’t tell you which ones never expire, or which ones nobody has used in months. Above all, it never compares one coupon with another: if two live coupons can both apply to the same product, you’ll find out when a customer stacks them. Or you’ll never find out, which is worse.
So I built a plugin that does: Coupon Audit and Analytics for WooCommerce. It’s in the WordPress.org directory, and it’s free.
The audit: nothing to set up
The first half of the plugin works from minute one, in any shop, with no cost data and no configuration. It reads your coupons and tells you what’s wrong with them:
- Never expires: it’s live, and nothing is scheduled to ever turn it off.
- Dormant: it’s live, but nobody has redeemed it in months.
- Dead campaign: it’s live, and every other code from its campaign has already expired.
- Applies to everything: it’s live, with no product or category restriction at all.
- Overlaps: two live coupons can both apply to the same product.
Status is worked out when you look, never stored. So if a coupon expired last night, it shows as expired this morning.
With four hundred coupons, reading the list top to bottom isn’t an option, so you can filter it by discount type or by whether a coupon expires at all. IMHO, “show me everything that never expires” is the first question to ask any shop.
The same warnings appear on the coupon edit screen, next to the coupon in front of you. They never stop you from saving: they tell you, and you decide.
The margin: real data, or no number at all
The second half answers the awkward question: how much does each coupon actually earn you? For each one it shows the revenue, what the discount gave away, the cost of the goods it moved and the gross margin that’s left, all over the last 30 days.
The obvious problem is that a margin needs a cost, and plenty of shops don’t record one. WooCommerce has shipped its own Cost of Goods feature since version 10.3, but it’s switched off by default. That’s why the plugin also reads the cost plugins shops really use: Cost of Goods for WooCommerce (the WPFactory one), WooCommerce Cost of Goods and Booster for WooCommerce.
Mind you, it reads from one of them, never a mix. A margin blended from two sets of books reconciles with neither. If you have several installed, you choose which one to believe.
And when the cost is missing, it says so. If only some of the order lines have a cost, the margin is shown as an estimate, along with how much of it is real. If no cost is known at all, there’s no margin: not zero, not a guess. Nothing.
Because a wrong number on a financial dashboard destroys trust far faster than a missing number builds it. Treating an unknown cost as zero would show you your revenue as if it were profit… and that isn’t analytics, it’s wishful thinking with charts.
What it doesn’t do
It doesn’t run on the storefront. The figures are aggregated in the background through Action Scheduler, and the admin screens read numbers that are already worked out. In other words, your shop won’t get one bit slower for your customers.
And your data never leaves your server: not a coupon, not an order, not a customer. Every figure is computed from your own database. The plugin does connect to Freemius to check for updates (and to license the paid version), and when you activate it, it asks whether you’d like to send diagnostics about the site. It asks once, you can say no, and saying no changes nothing.
Free, plus a Premium version for those who need it
Everything above is free, with nothing held back: the full audit and the gross margin for the last 30 days.
The Premium version costs $49.99 a year per site and adds three things:
- a full year of margin history;
- CSV export of the audit and the margins;
- net margin, which is the gross margin minus the fee your payment gateway kept. The fee is read from the gateway itself (Stripe, WooPayments and PayPal). Where no fee was recorded, or it was settled in a different currency, the figure says so instead of making one up. Same principle as before.
Installing Premium deactivates the free version automatically, and your settings and the figures already gathered carry straight over.
Give it a go
You’ll need WordPress 6.4, WooCommerce 10.3 and PHP 7.4, or anything newer. Get it from the WordPress.org directory or from the terminal:
wp plugin install coupon-audit-and-analytics-for-woocommerce --activate
Then go to WooCommerce → Coupon Audit. And brace yourself, because the first time round there’s usually more than one warning…
If you try it, I’d love to hear what it found. And if you find it useful, a review on WordPress.org helps a lot so that others can find it too. Any feedback is more than welcome.

Leave a Reply