Title: Coupon Audit and Analytics for WooCommerce
Author: David Marín Carreño (DaveFX)
Published: <strong>August 22, 2026</strong>
Last modified: August 22, 2026

---

Search plugins

![](https://ps.w.org/coupon-audit-and-analytics-for-woocommerce/assets/banner-772x250.
png?rev=3660201)

![](https://ps.w.org/coupon-audit-and-analytics-for-woocommerce/assets/icon.svg?
rev=3660201)

# Coupon Audit and Analytics for WooCommerce

 By [David Marín Carreño (DaveFX)](https://profiles.wordpress.org/davefx/)

[Download](https://downloads.wordpress.org/plugin/coupon-audit-and-analytics-for-woocommerce.0.4.1.zip)

 * [Details](https://wordpress.org/plugins/coupon-audit-and-analytics-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/coupon-audit-and-analytics-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/coupon-audit-and-analytics-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/coupon-audit-and-analytics-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/coupon-audit-and-analytics-for-woocommerce/)

## Description

Most shops accumulate coupons. A launch code from two years ago, a partner
 discount
nobody switched off, three variations of the same campaign where only one was meant
to survive. WooCommerce will happily keep honouring all of them, and it will not
tell you.

This plugin reads your coupons and says what is wrong with them.

#### The audit

Works on day one, in every shop, with no setup and no cost data:

 * **Never expires** — live, with nothing scheduled to ever turn it off.
 * **Dormant** — live, but nobody has redeemed it in months.
 * **Dead campaign** — live, while every other code from its campaign has expired.
 * **Applies to everything** — live, with no product or category restriction at 
   all.
 * **Overlaps** — two live coupons that can both apply to the same product.
    Nothing
   in WooCommerce compares one coupon against another, so this is not a finding 
   you can reach any other way.

Status is worked out when you look, never stored, so a coupon that expired
 overnight
says so the next morning.

Filter the list by discount type, or by whether a coupon expires at all — a shop

with four hundred coupons cannot be read top to bottom, and “show me everything 
that never expires” is the question worth asking first.

#### The warning where it matters

The same findings appear on the coupon edit screen, against the coupon in front

of you. They never block a save. You are told, and you decide.

#### The margin

For each coupon: revenue, what it gave away, the cost of the goods it moved, and

the gross margin left over. Over the last 30 days.

This half needs cost data, and it is honest about not having it. WooCommerce’s
 
own cost-of-goods feature is off by default, so the plugin also reads the cost plugins
shops actually use:

 * WooCommerce’s built-in Cost of Goods (10.3 and later)
 * Cost of Goods for WooCommerce, by WPFactory
 * WooCommerce Cost of Goods
 * Booster for WooCommerce

Figures come from **one** of these, never a mixture — a margin blended from two

sets of books reconciles with neither. If several are installed you choose which
one to believe.

Where cost is only partly known, the margin says so and states how much of it is

real. Where no cost is known at all, no margin is shown. A wrong number in a financial
dashboard destroys trust far faster than a missing number builds it.

#### What it does not do

No tracking. No external requests of any kind. No account. It reads your shop’s

own database and shows you what is in it.

## Screenshots

[⌊The coupon audit: every coupon, its real status, what it applies to, and what 
is wrong with it — expired, exhausted, dormant, dead campaign, no expiry date, and
overlapping. Filter by discount type or by whether it expires.⌉⌊The coupon audit:
every coupon, its real status, what it applies to, and what is wrong with it — expired,
exhausted, dormant, dead campaign, no expiry date, and overlapping. Filter by discount
type or by whether it expires.⌉[

The coupon audit: every coupon, its real status, what it applies to, and what is
wrong with it — expired, exhausted, dormant, dead campaign, no expiry date, and 
overlapping. Filter by discount type or by whether it expires.

[⌊Per-coupon margin. Cost coverage is stated rather than assumed: one coupon's margin
is exact, one is an estimate over half its lines, and one has no cost recorded at
all and so shows no margin.⌉⌊Per-coupon margin. Cost coverage is stated rather than
assumed: one coupon's margin is exact, one is an estimate over half its lines, and
one has no cost recorded at all and so shows no margin.⌉[

Per-coupon margin. Cost coverage is stated rather than assumed: one coupon’s margin
is exact, one is an estimate over half its lines, and one has no cost recorded at
all and so shows no margin.

[⌊Warnings on the coupon edit screen, against the coupon in front of you. They never
block a save.⌉⌊Warnings on the coupon edit screen, against the coupon in front of
you. They never block a save.⌉[

Warnings on the coupon edit screen, against the coupon in front of you. They never
block a save.

[⌊Settings: which cost-of-goods system to read, and whether uninstalling should 
take the data with it.⌉⌊Settings: which cost-of-goods system to read, and whether
uninstalling should take the data with it.⌉[

Settings: which cost-of-goods system to read, and whether uninstalling should take
the data with it.

## Installation

 1. Install and activate the plugin.
 2. Go to **WooCommerce  Coupon Audit**. The audit works immediately.
 3. For margins, make sure your shop records product costs — either through WooCommerce’s
    own Cost of Goods feature or one of the supported plugins — then look at **WooCommerce
    Coupon Margin**.

Past orders are read in the background after activation, so margins for older periods
fill in over a few minutes rather than all at once.

## FAQ

### Do I need a cost-of-goods plugin?

No. The audit half — expiry, overlaps, orphans, scope — needs no cost data at
 all
and works the moment you activate.

Margins do need cost data, but not necessarily another plugin: WooCommerce has
 
included its own Cost of Goods feature since 10.3, and it only needs switching on.
If your shop already records cost in one of the third-party plugins listed above,
this reads that instead — whichever one you tell it to believe.

### Why does a coupon show no margin?

Because none of its orders has a cost recorded against it. The plugin will not
 
guess, and it will not quietly treat an unknown cost as zero, because that would
report your revenue as your profit.

### Why are some margins marked as an estimate?

Either some order lines have no cost recorded, in which case the covered share
 
is stated alongside; or your cost plugin only stores what a product costs today 
rather than what it cost when each order was placed. Both are useful. Neither is
exact, and the screen says so.

### I use two cost plugins. Which one does it read?

One of them, chosen by you under **WooCommerce  Coupon Audit Settings**. It
 never
mixes them.

### Does it slow my shop down?

It does not run on the storefront at all. Aggregation happens in the background

through Action Scheduler, and the admin screens read precomputed figures.

### Does it send my data anywhere?

No. The plugin makes no external requests.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Coupon Audit and Analytics for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ David Marín Carreño (DaveFX) ](https://profiles.wordpress.org/davefx/)

[Translate “Coupon Audit and Analytics for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/coupon-audit-and-analytics-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/coupon-audit-and-analytics-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/coupon-audit-and-analytics-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/coupon-audit-and-analytics-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/coupon-audit-and-analytics-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.4.1

 * Clearer answer on cost data: WooCommerce has included its own Cost of Goods
    
   feature since 10.3, so no separate plugin is needed for margins — the third-party
   ones are still read if your shop already uses one.
 * A banner and an icon for the plugin directory.

#### 0.4.0

 * Filter the audit by discount type, and by whether a coupon expires at all.
    The
   summary tiles keep describing the whole store, so the counts do not move as you
   narrow the list.

#### 0.3.1

 * Tested against WordPress 7.1 and WooCommerce 11. No code changes.

#### 0.3.0

 * The margin window is now a documented filter, `dfxcaaw_margin_window_days`,
    
   rather than a fixed cap. Thirty days remains the default; anything can change
   it, including a snippet in your own theme.
 * Removed the internal feature-gate layer. Nothing in this plugin is withheld.

#### 0.2.1

 * Fixed the basket column, which read “0.00 to 0.00” against every coupon that
   
   has no spend limits. It now says “any”, which is what it means.
 * Fixed a warning that never appeared: a fixed discount with no minimum spend
    
   was not reported, because every coupon looked as though it required a basket 
   of at least zero.

#### 0.2.0

 * The overview now shows what each coupon actually is: the discount, the basket
   
   it requires, free shipping, individual use, and the usage caps per customer and
   per basket.
 * “Applies to” names the products and categories, prices them, and strikes
    through
   anything a customer cannot currently buy.
 * New finding: a fixed discount worth more than the minimum spend it demands, or
   
   more than something it applies to. WooCommerce applies these without comment.
 * Support for WooCommerce Extended Coupon Features, including coupons it applies
   
   automatically — which is what makes a high-severity overlap possible at all.
 * Support for YITH WooCommerce Points and Rewards: its generated reward coupons
   
   are kept out of the audit, where tens of thousands of them would bury the coupons
   you chose.
 * Filters for other plugins to add columns, fill them, and shape the coupon query.
 * Much faster on shops with a lot of coupons. The overview used to read every
    
   coupon’s settings one at a time and weigh each coupon against every other by 
   searching the list afresh; both are now done once. On a test shop of 500 coupons
   and 300 products the screen went from 737 database queries to 27, and from roughly
   3.7 seconds to 0.6.

#### 0.1.0

 * First release: coupon audit, overlap detection, pre-publish warnings and
    30-
   day gross margin.

## Meta

 *  Version **0.4.1**
 *  Last updated **2 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [analytics](https://wordpress.org/plugins/tags/analytics/)[coupons](https://wordpress.org/plugins/tags/coupons/)
   [discounts](https://wordpress.org/plugins/tags/discounts/)[profit](https://wordpress.org/plugins/tags/profit/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/coupon-audit-and-analytics-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/coupon-audit-and-analytics-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/coupon-audit-and-analytics-for-woocommerce/reviews/)

## Contributors

 *   [ David Marín Carreño (DaveFX) ](https://profiles.wordpress.org/davefx/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/coupon-audit-and-analytics-for-woocommerce/)