Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
Active Coupons for the selected period.

At a glance

The number of coupon codes that are live and redeemable in your store at this moment. A coupon counts as active when it is published (not in draft or trash) and has not passed its expiry date. Fetched in real time from GET /wp-json/wc/v3/coupons and filtered against each coupon’s date_expires field.
What it countsThe number of coupon objects whose status is publish and whose date_expires is null or in the future. Each live, redeemable code contributes 1 to the count.
REST API endpointGET /wp-json/wc/v3/coupons. Fields used: status (must be publish), date_expires (null or future), and code. Coupons are stored in WordPress as a custom post type (shop_coupon).
Status / filter treatmentCounts only publish coupons that have not expired. Coupons in draft, pending, private, or trash are excluded. A coupon with a date_expires in the past is excluded even though it remains in the database. Usage-limit exhaustion (usage_limit reached) is NOT factored in by default, see the FAQs.
Expiry handlingWooCommerce stores date_expires in the WP site timezone but exposes date_expires_gmt in UTC. The card evaluates expiry against UTC, so a coupon expiring at local midnight may flip a few hours off your WP Admin view (see Reconcile).
Usage limitsA coupon with usage_limit set and fully consumed is still publish and may still be counted here unless your store auto-expires it. WooCommerce core does not change coupon status when a usage limit is hit; it simply rejects further redemptions at checkout.
Self-hosted vs managed-WooIdentical behaviour on self-hosted LAMP stacks, WordPress.com Business and Commerce plans, and managed-Woo hosts (Woo.com Cloud, WP Engine, Pressable, Kinsta). Self-hosted hosts introduce sync-lag risk during outages; managed hosts are steadier.
Time windowRT (real time, the current live count)
Alert triggerNone. This is an informational inventory count, not an alerting card.
Rolesowner, 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 homeware brand on managed WooCommerce (WP Engine) is mid-way through a spring promotion. On 14 Mar 26 the marketing lead opens the card to confirm what is live.
Coupon codeStatusdate_expires (WP timezone)Counts as active?
SPRING15publish31 Mar 26Yes
WELCOME10publishnull (no expiry)Yes
VIP-EARLYpublish10 Mar 26No (expired)
BLACKFRIDAY24publish30 Nov 25No (expired)
NEWSLETTER5draftnullNo (not published)
STAFF-TESTpublishnullYes
Active Coupons (this card)3
Three things to notice:
  1. Expired codes still live in the database. VIP-EARLY and BLACKFRIDAY24 are both publish but past their expiry, so they drop out of the count. WooCommerce never deletes them; they sit dormant. The card reflects what a customer could actually redeem today, which is the number that matters for promotion hygiene.
  2. STAFF-TEST is counted and should not exist. Test coupons left in publish state are a common leak. They count here because they are technically redeemable. A jump in this card that the marketing team did not plan often traces to a forgotten test code or a staging coupon promoted to production. Pair with Top Coupons by Usage (30D) to see whether any unexpected code is actually being redeemed.
  3. Timezone can shift the boundary. SPRING15 expires at 23:59 on 31 Mar 26 in WP site timezone (Europe/London). The card evaluates against UTC, so during BST the code can appear active for up to an hour after WP Admin shows it expired. For a live count this is rarely material, but it explains a transient off-by-one against the WP Admin coupons screen.

Sibling cards merchants should reference together

CardWhy pair it with Active Coupons
WC Top Coupons by Usage (30D)Active Coupons tells you what is live; this tells you which live codes are actually pulling redemptions. A long active list with few redemptions signals dead promotions.
WC Discount as % of RevenueThe margin cost of your live coupons. A rising active count with rising discount share warns that promotions are eating into margin.
WC Coupon Stacking Abuse (2+ coupons / order)More active codes raises the surface area for stacking abuse. Watch both when you run overlapping promotions.
WC Total RevenueContext for whether your live coupon set is moving the headline number or just discounting orders that would have happened anyway.
WC Average Order ValueA spend-threshold coupon (for example, “10% off over £50”) should lift AOV. Watch AOV when you publish new codes.

Reconciling against WooCommerce

Where to look in WooCommerce Admin: WP Admin → Marketing → Coupons lists every coupon. Filter to the Published view and ignore anything in Draft or Trash. To match this card, mentally exclude any row whose expiry date has passed; the WP Admin list does not hide expired coupons automatically. Other WP Admin views that look like the same number but are not:
  • The “All (n)” count at the top of the Coupons screen: includes drafts, trashed, and expired coupons. Always higher than this card.
  • WooCommerce → Marketing → Coupons (Marketing hub view): same underlying data but a different layout; still does not filter out expired codes.
  • A coupons-management plugin (Advanced Coupons, Smart Coupons): these often add scheduling, auto-apply, and URL coupons that may or may not surface in the core REST endpoint. Verify the plugin writes to the standard shop_coupon post type.
Why our number may legitimately differ from WooCommerce Admin:
ReasonDirection of divergence
Expiry filtering. This card hides expired codes; the WP Admin Coupons list shows them.Ours lower than the raw Admin list
Timezone. WooCommerce stores date_expires in WP site timezone; this card evaluates against UTC. A coupon expiring at local midnight may count for a few hours longer or shorter here.+/- a small number around the expiry boundary
Draft / trash exclusion. Drafts and trashed coupons are excluded here but shown in the Admin “All” tab.Ours lower
Self-hosted server uptime. If the WP host was unreachable during the poll, a newly published coupon may take up to the next sync to appear.Ours temporarily lower; self-resolves
Plugin-created coupons. URL or auto-apply coupons from third-party plugins may not register as standard shop_coupon posts.Ours lower if the plugin bypasses the core post type

Known limitations / merchant FAQs

Does this count coupons that have hit their usage limit? By default, yes, because WooCommerce core does not change a coupon’s status when its usage_limit is reached. The code stays publish and simply gets rejected at checkout. So a fully consumed code can still appear in this count even though no customer can redeem it. If you want the count to reflect only truly redeemable codes, expire or unpublish exhausted coupons, or reach out to support@vortexiq.ai about usage-aware filtering. Why is this card real time rather than a 30-day window? Active Coupons is an inventory count, not a flow metric. It answers “what can a customer redeem right now”. A historical window would not make sense for a live promotion list. For redemption volume over time, use Top Coupons by Usage (30D). A test coupon is inflating my count, how do I clean it up? Set the coupon to Draft or move it to Trash in WP Admin → Marketing → Coupons. Once it leaves publish status it drops out of this card at the next sync. Leaving live test codes in production is a security and margin risk because anyone who guesses the code can redeem it. Does this include WooCommerce Subscriptions or recurring-discount coupons? If they are stored as standard shop_coupon posts with publish status and a future or null expiry, yes. Some subscription plugins store recurring-discount logic in custom meta on the subscription rather than as a coupon; those would not appear here. I unpublished a coupon but the card still shows it, why? Most likely sync lag. The Vortex IQ Woo indexer polls on a schedule, so a status change can take until the next successful poll to reflect, usually within an hour. If a self-hosted host was unreachable during the poll, it can take longer. Check WooCommerce → Settings → Advanced → REST API to confirm the Vortex IQ key is still active.

Tracked live in Vortex IQ Nerve Centre

Active Coupons 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 or book a demo to see this metric running on your own data.