The question a subscription raises
A 20% discount on a one-off product is unambiguous. On a subscription it is not: does it buy the first payment, or every renewal for the life of the subscription? Get that wrong in the generous direction and you discover, from a subscription that has been renewing for a year, that a link you made once granted a permanent discount.What the free build does
The first payment, with the sign-up fee charged. Always, whatever the item’s stored settings say. That is the conservative reading, and it is what shared code performs with nothing attached. The asymmetry is the point: a merchant who cannot see the controls must not be surprised by a permanent discount.The two settings are stored on both builds. Upgrading turns your existing answers on rather than asking you to set them up again.
Choosing on Pro
Each subscription item in the editor gets a Payments field and a Waive the sign-up fee switch.Payments
Payments are counted the way WooCommerce Subscriptions counts them, including the first one. “Three payments” means the initial order and two renewals.
When the discount runs out
The line is actively restored to the product’s own live price — restored, not merely skipped, because the initial pass has already stamped the discounted price onto the line. The price renewals return to is the same baseline the editor quoted. If the item uses the regular price, renewals bill the regular price even if a sale is running at the time, so a sale cannot stamp a lower renewal price than you configured.Waive the sign-up fee
Zeroes the product’s sign-up fee for that line only. The mark travels in memory and is never saved to the product, so other customers buying the same product outside this preset still pay the fee. On the free build the switch shows off, because the fee is always charged there. Off is the honest reading of what will happen.The preset-wide discount is first-order only
Whatever its type, the additional discount belongs to the first order. A recurring cart holds only the subscription lines. Recomputing a fixed amount or a target total against that smaller subtotal would land the whole preset discount on the recurring lines at every renewal — which is not what “20 off the kit” meant. Per-item discounts are the ones that can follow a subscription into its renewals.Renewal protections
Three things hold automatically:- Renewal orders never consume a purchase-limit slot. They inherit the preset’s meta from the subscription, and without the guard one subscriber’s renewals would exhaust a capped preset alone.
- A renewal paid through the cart is never repriced. The subscription decides what a renewal costs, not the preset.
- Products that may only be bought as a subscription plan — All Products for Subscriptions’ forced mode — are refused as preset items. A preset adds by product ID with no plan, and two pricing engines fighting over one line means one of the two prices shown is a lie.
A known limitation
Where a discount covers a fixed number of payments, WooCommerce’s cart line still renders a recurring price string — “36.00 every month” — that the discount will not hold for the whole life of the subscription. The string comes from Subscriptions’ own templates, built before the preset’s terms are resolved. The order confirmation and the subscription record are correct. Say so in your offer copy if the distinction matters to your customers.Settings reference
For developers
Both are resolved throughcartpresets_item_subscription_terms, returning [ 'scope' => 'first'|'all', 'waive_fee' => bool ]. Seeded conservatively — first, fee charged — and safety-clamped: a returned scope that is not exactly all reads as first, so no listener can make a subscription cheaper by accident. See the hooks reference.