When an order reaches the status you choose, the customer is emailed a coupon for their next one. Each code is minted for that person: restricted to the billing address that earned it, usable once, and never stackable with another coupon.
Three things this plugin gets right
* One order mints one coupon, whatever happens. WooCommerce fires a status hook more than once in ordinary operation — a merchant who moves an order back to processing and completes it again has fired it twice. The claim is written onto the order *before* the coupon exists, so only the call that won it creates anything. A plugin that checks and then creates loses that race, and the merchant finds out from their margin. * "First order" is asked of the store, not guessed from the session. Whether this is somebody's first order is a question about their order history by email address. A guest who has bought twice has bought twice, and a customer who created an account after their third order did not become new. Plugins that read a login or a cookie send the welcome discount to a regular every time they check out in a private window. * A code nobody can read is a code nobody uses. The email carries the code, what it is worth and the last day it works, written in your store's own date format — not "your coupon is attached" with the expiry buried in a screen the customer cannot see.
What you get
* A coupon on a customer's first order, on every order, or both * Earned at Completed or at Processing — your call, because they are different promises about whether you have been paid * A percentage off, or a fixed amount off the cart * An expiry in days, counted in your store's own timezone, or none at all * A minimum an order must be worth to earn a coupon, and a separate minimum the *next* order must be worth to spend it * Your own subject and message for the welcome email and the thank-you email, with {code}, {amount}, {expiry}, {first_name} and {site_title} * Your own prefix on the codes, with the rest random so nobody can guess a working code from their own * The code an order earned, shown on that order
Careful about the details
* Every coupon is email-restricted, limited to one use in total and one per customer, and marked individual-use, so it cannot be posted on a deals forum or stacked on top of a sale. * An order that earns nothing is told nothing: below your minimum, or with no valid billing address, there is no coupon and no email — rather than a code that is refused at the next checkout and reads as a bug. * A failed email never mints a second coupon. The claim is already on the order by then, so a mail server having a bad afternoon costs one message. * Coupons are ordinary WooCommerce coupons, so they work at the classic checkout, the block checkout and the Store API with nothing to configure.
Every license includes
- One year of updates and priority support, delivered straight to your WordPress dashboard.
- Use on 1, 5 or 25 sites depending on your license — local, staging and development sites are always free.
- 30-day money-back guarantee — full refund, no questions asked.
- Keeps working after expiry — if you choose not to renew, the plugin keeps running exactly as installed; it simply stops receiving updates and support until you do.
Requires WordPress 6.4+ · PHP 7.4+ · tested up to WordPress 6.8. Works with the classic and block checkout alike.

I. Collins (verified owner) –
Nothing wrong with it. Nothing that made me sit up either. One of the better Pricing & Promotions plugins I have tried.
Ryan C (verified owner) –
Decent, and I’d still buy it. Next Order Coupons hasn’t broken anything, which is the first bar. Fine purchase.
kevin j (verified owner) –
Sensible about edge cases, from what I have thrown at it. I have not touched the Next Order Coupons settings since the day I set them. That is a yes from me.
Nuria N. (verified owner) –
Código limpio, valores por defecto sensatos, sin insistencias. Next Order Coupons lleva en producción sin ningún problema.
R. Vincent (verified owner) –
It’s good. It isn’t magic. Been running Next Order Coupons a few weeks now with no trouble.