Automatic coupons are a Pro feature. On the free build the stored code is kept but not applied — see What the free build does with a stored code.
Setting one
In the editor, enter an existing WooCommerce coupon code. It is applied as though the customer had entered it, which means every rule you set on the coupon itself still holds — usage limits, expiry, minimum spend, product restrictions, individual-use.A code that no longer exists
Ignored. The preset still works and the rest of the cart is unaffected. This is deliberate: a deleted or expired coupon is a reason for the discount not to apply, not a reason for the whole link to fail in front of a customer who did nothing wrong.Coupons and preset discounts together
These are two independent layers and they stack unless you stop them. A preset’s own discount is applied to its lines. A coupon then applies on top, to whichever lines allow it. By default preset items refuse coupons — so an automatic coupon on a preset whose items all refuse coupons will apply, and discount nothing. Turn on Allow coupons on this item for the lines you want the coupon to reach. See Items.Customers entering codes by hand
Unaffected, on both builds. This feature is about codes the preset applies for them, not about whether coupons work at all.What the free build does with a stored code
It is kept and not applied. This is the one place where moving to the free build changes what a stored setting does, and the reasoning is worth stating: an automatic coupon you can no longer see or switch off would keep discounting every order that followed the link, indefinitely, with no control anywhere in your admin to stop it. The code stays on the record. Reinstalling Pro turns it back on rather than asking you to set it up again. The editor on free shows the field locked, with a note saying the answer is kept and not applied — rather than showing an empty field, which would suggest there was nothing there.Settings reference
For developers
The code is resolved throughcartpresets_preset_coupon, seeded empty. Shared code never reads the stored setting itself, so with nothing attached a preset applies no coupon — the absence of a rule rather than a rule that refuses. Pro attaches at priority 10 like anyone else. See the hooks reference.