ReCurr Plus Tutorial Series — Part 7: Variable Subscription Products
ReCurr Plus feature (v2.8.0) — Requires an active ReCurr Plus (or Pro) licence and the Variable subscription products setting turned on.
A variable product is WooCommerce’s way of selling one product in several options — a hoodie in sizes S, M and L, a plan as Monthly or Annual, a box as “Buy once” or “Subscribe”. From version 2.8.0, ReCurr can sell each of those options as a subscription, and every option can have its own price, billing period, trial and discount.
If you have never built a variable product before, this tutorial walks through the WooCommerce side as well. If something does not behave as described, the companion page Plus Tutorial 8: Troubleshooting Variable Subscriptions lists every message you can meet and what it means.
Before You Begin
- ReCurr 2.8.0 or later is installed and your Plus (or Pro) licence key is active
- You know how a simple subscription product is set up (Tutorial 2: Creating Subscription Products) — every setting here works the same way, per option
- PayFast is configured (Tutorial 3), in sandbox while you test
- If you can, try this on a staging copy of your store first
Five words you will meet
| Word | What it means |
|---|---|
| Attribute | A property the customer chooses, such as Size or Colour, with its values (S, M, L) |
| Variation | One option of the product — for example Size M — with its own price and stock. This tutorial also calls it an option |
| Parent product | The variable product itself. Its settings are the defaults every variation uses |
| “Any …” | A variation can leave an attribute open, for example Size S, Any Colour: the customer picks the colour, and ReCurr remembers the choice on every renewal |
| Same as parent | ReCurr’s default for every setting on a variation: use the parent product’s setting |
Step 1: Turn On Variable Subscription Products
- Go to Subscriptions > Settings > General
- Find Variable subscription products and switch it On
- Click Save Changes
While this setting is Off (the default), only simple products are sold as subscriptions, exactly as before 2.8.0, and a variable product marked as a subscription cannot be bought — see Plus Tutorial 8.
Important — once you sell variable subscriptions, leave this setting on. If you turn it off again, subscriptions already sold keep renewing at the same amount on the same dates, but each renewal order names the parent product without the options the customer chose, stock is taken from the parent product, and My Account no longer lists those options. Your variable subscription products can then not be bought until you turn it back on.
Screenshot 1: Subscriptions > Settings > General with Variable subscription products switched on.
Step 2: Create the Variable Product and Its Attributes
- Go to Products > Add New and enter the product name (e.g., “Hoodie”)
- In the Product data box, set the product type dropdown to Variable product
- Open the Attributes tab:
- Choose an attribute you created under Products > Attributes (a global attribute, reusable on other products), or add a custom product attribute for this product only
- Enter its values — for example S | M | L for Size
- Tick Used for variations
- Click Save attributes
- Repeat for a second attribute if you need one (e.g., Colour: Pink | Blue)
Screenshot 2: The Attributes tab with Size (S, M, L) and Colour (Pink, Blue), both marked Used for variations.
Step 3: Set the Parent’s Subscription Defaults
Open the General tab. With the setting on and a Plus licence, the ReCurr subscription fields you know from simple products appear here too. On a variable product they are the defaults for every variation:
- Tick Enable Subscription if the options are subscriptions by default
- Set the Billing Interval and Billing Period most of your options use (e.g., 1 × Month(s))
- Set a Free Trial or an annual / quarterly discount here only if most options should have it
There is no Regular price on the parent — on a variable product, WooCommerce keeps the price on each variation.
Two things stay on the parent and cannot be set per option:
- Plan Group (plan switching) — set it here if you use plan groups
- Billing Cycle Toggle — not available on a variable product. A variable product offers its billing cycles as variations, each with its own billing period (see Example 2). If the toggle was on, saving turns it off and says why
Selling some options once-off and some as a subscription? Leave Enable Subscription unticked here and switch the subscription on per option in Step 5 (see Example 3).
Screenshot 3: The parent product’s General tab with Enable Subscription ticked and the Billing Period set.
Step 4: Create the Variations
Open the Variations tab:
- Click WooCommerce’s Generate variations button to create one variation for every combination of values — or Add manually to create them one at a time
- Click a variation to expand it, and set:
- The attribute values it stands for. Leave an attribute on Any … to let the customer choose that value
- Its Regular price — a variation with no price is not offered to customers
- Stock, if you manage stock per option
- Click Save changes at the bottom of the Variations tab
Screenshot 4: The Variations tab with three variations (S, M, L), one expanded.
Step 5: Set Each Variation’s Subscription Terms
Inside an expanded variation, under WooCommerce’s own fields, you’ll find the ReCurr subscription block: “Every setting is the same as the parent product unless set here.”
Every field starts at Same as parent, with a small Parent: … hint showing the value the variation uses from the parent. Change a field only where this option differs.
| Field | What it does on the variation |
|---|---|
| Subscription | Same as parent, Yes or No. Yes makes this option a subscription even if the parent is not; No sells it once-off |
| Billing Interval | How many periods between charges (e.g., 1 = every period) |
| Billing Period | Day(s), Week(s), Month(s), Quarter(s) or Year(s) — lets one option bill yearly while the others bill monthly |
| Custom Annual Price (R), Annual Discount, Annual Discount Type, Annual Discount Value | Shown when the option bills yearly. Same meaning as on a simple product |
| Custom Quarterly Price (R), Quarterly Discount, Quarterly Discount Type, Quarterly Discount Value | Shown when the option bills quarterly |
| Plan Rank | Shown on licences with plan switching. Same meaning as on a simple product |
| Free Trial / Trial Duration | In the row of checkboxes near the top of the variation (beside Enabled, Virtual and the rest): a trial for this option, and its length (7, 14, 21 or 28 days) |
The fields show and hide as you choose: the annual fields appear when the option’s billing period — its own, or the parent’s it uses — is Year(s), the quarterly fields when it is Quarter(s), and the terms only when the option is a subscription.
Click Save changes. If ReCurr cannot save a setting it says so at the top of the page, names the variation, and leaves the stored setting as it was — Plus Tutorial 8 explains each message.
Screenshot 5: An expanded variation showing the ReCurr subscription block, with Same as parent and the Parent: … hints.
What each option charges
Each variation’s Regular price follows the same rule as a simple product (Tutorial 2):
- Monthly option: the Regular price is charged every month
- Yearly or quarterly option with no discount and no custom price: the Regular price is charged as it stands, once per period — enter the yearly (or quarterly) price
- With Annual Discount (or Quarterly Discount) switched on: the Regular price is the monthly base; ReCurr charges 12 (or 3) times it, less the discount
- A Custom Annual (or Quarterly) Price: charged as entered
The product page, checkout, the subscription, every renewal and every manual EFT invoice use the same figure.
Step 6: Publish and Check the Product Page
- Click Publish (or Update)
- Open the product page as a visitor
Before an option is chosen, the price shows a range: the cheapest and the dearest option, each with its own period. Options are compared by their price per month (a year counts as 12 months), and a once-off option counts at face value, with no period. For example:
- Size M at R1,000 a year and Size L at R110 a month: R1,000.00/year – R110.00/month (R1,000 a year is R83.33 a month, the cheaper of the two)
- Subscribe at R200 a month and Buy once at R500: R200.00/month – R500.00
When the customer chooses an option, the price changes to that option’s price and period (e.g., R90.00/month), and the add-to-cart button adds that option.
Screenshot 6: A variable subscription product page showing the price range.
Screenshot 7: The same page after choosing an option, showing its price and period.
Step 7: Test a Purchase
In PayFast sandbox, buy one option as a customer, then check:
| Where | What you should see |
|---|---|
| WooCommerce > Orders | The order line is the option (e.g., Hoodie – S) with the chosen attributes under it (Size: S, Colour: Pink) |
| Subscriptions > All Subscriptions | One new subscription at the option’s price and period — not the parent’s, and never R0.00 |
| My Account > Subscriptions (as the customer) | The option’s name and its attributes |
| The first renewal order | The same option and attributes, at the same price. If the option’s stock is managed, the renewal takes stock from the option, with WooCommerce’s usual “Stock levels reduced” order note |
Example 1: A Hoodie in Three Sizes, Billed Monthly
| Where | Setting |
|---|---|
| Parent (General tab) | Enable Subscription ticked · Billing Interval 1 · Billing Period Month(s) |
| Attributes | Size: S, M, L · Colour: Pink, Blue — both Used for variations |
| Variation S (Colour: Any) | Regular price 90 · everything else Same as parent |
| Variation M (Colour: Any) | Regular price 100 · everything else Same as parent |
| Variation L (Colour: Any) | Regular price 110 · Manage stock, 10 in stock |
Result: the page shows R90.00/month – R110.00/month. A customer choosing S, Pink is billed R90.00 every month, and every renewal order reads Hoodie – S, Size: S, Colour: Pink.
Example 2: One Plan, Monthly or Yearly
This replaces two separate products (or the billing cycle toggle, which a variable product does not use).
| Where | Setting |
|---|---|
| Parent | “Website Hosting” · Enable Subscription ticked · Billing Period Month(s) |
| Attribute | Billing: Monthly, Yearly — Used for variations |
| Variation Monthly | Regular price 299 · everything else Same as parent |
| Variation Yearly | Regular price 299 · Billing Period: Year(s) · Annual Discount: Yes, Percentage, 15 |
Result: Monthly bills R299.00 a month; Yearly bills R299 × 12 less 15% = R3,049.80 a year. The page shows the range and each choice shows its own price and period.
Example 3: Buy Once or Subscribe
| Where | Setting |
|---|---|
| Parent | “Coffee Box” · Enable Subscription unticked |
| Attribute | Plan: Subscribe, Buy once — Used for variations |
| Variation Subscribe | Regular price 200 · Subscription: Yes · Billing Interval 1 · Billing Period Month(s) |
| Variation Buy once | Regular price 500 · Subscription Same as parent (No) |
Result: Buy once checks out as an ordinary product with every payment method your store offers, and creates no subscription. Subscribe checks out as a monthly subscription at R200.00.
Adding a Variable Subscription by Hand (Manual EFT)
On Subscriptions > Add New (Tutorial 5), the Product list includes your variable subscription products. When you choose one, a Variation dropdown appears — “This product is sold as variations. Choose the one the customer is subscribing to: its own billing period and price apply.” Choose the option before you click Create Subscription.
This screen has no field for an attribute an option leaves as Any …: the subscription records the option’s own attributes only.
On ReCurr Standard
Variable subscription products need Plus or higher. On a Standard licence (or when a Plus licence lapses):
- A subscription option’s variation row shows a note instead of the fields: “Variable subscriptions are available on ReCurr Plus and above. Existing subscriptions keep renewing.” with an Upgrade to Plus link
- A variable product’s General tab shows the same note instead of the subscription fields, and saving the product keeps its stored subscription settings as they are
- Customers cannot buy a variable subscription product: on most themes the option shows WooCommerce’s “Sorry, this product is unavailable”; otherwise the cart refuses it with “Sorry, “(product)” cannot be bought as a subscription on this store at the moment.”
- Subscriptions already sold keep renewing, on every plan, exactly as on Plus
- Once-off options, simple products, grouped and external products are sold as usual
Things to Know
- Changing option on an existing subscription (moving a customer from S to M) is not available yet. To change option, cancel the subscription and subscribe again.
- One order, one renewal schedule. Options on different schedules (e.g., a monthly and a yearly option) cannot be checked out together; the cart explains and asks the customer to order them separately.
- Don’t delete a variation that has subscribers. Their subscriptions keep renewing at the price they recorded, but the renewal order then names the parent product (with an order note saying the option no longer exists) and stock comes off the parent.
- A variable product converted from a simple subscription product keeps the subscription setting it had. With Variable subscription products off it cannot be bought — see Plus Tutorial 8 for how to sell it again.
- Block themes: on the Add to Cart with Options block, a product that cannot be bought keeps its button, and the refusal comes when the customer clicks it.
What’s Next?
Keep Plus Tutorial 8: Troubleshooting Variable Subscriptions at hand while you set up your first products — it lists every message, what causes it, and where to look.
Quick Checklist
- [ ] Variable subscription products switched on (Subscriptions > Settings > General), Plus licence active
- [ ] Variable product created, attributes marked Used for variations
- [ ] Parent’s subscription defaults set on the General tab (or Enable Subscription left unticked for buy-once-or-subscribe)
- [ ] Variations created, each with a Regular price
- [ ] Each option’s ReCurr subscription block checked — changed only where the option differs from the parent
- [ ] Product page shows the range; choosing an option shows its price and period
- [ ] Sandbox purchase: the order line, the subscription and My Account name the option and its attributes
- [ ] First renewal names the same option at the same price
Need Help?
- Email: [email protected]
- Support Hours: Monday to Thursday, 9:00 AM – 4:00 PM (SAST)
Friday, 09:00 AM – 12:00 PM (SAST) - Website: cyberdummies.co.za/recurr
This is Part 7 of the ReCurr Plus Tutorial Series.
| Tutorial | Topic |
|---|---|
| Plus 1. Billing Cycle Toggle | Monthly/annual toggle on one product |
| Plus 2. Flexible Trials | 7/14/21/28-day trial options |
| Plus 3. Quarterly Discounts | Configuring quarterly pricing and discounts |
| Plus 4. Plan Switching | Plan groups, customer upgrades and downgrades |
| Plus 5. Cancellation, Refund & Retention | Pro-rata refunds on cancel + retention save flow |
| Plus 6. Pause & Resume | Freeze a subscription and resume later |
| Plus 7. Variable Subscription Products | Sizes, plans and buy-once-or-subscribe as subscription options (you are here) |
| Plus 8. Troubleshooting Variable Subscriptions | Every message, what causes it, where to look |
We Are Here To Help!
Office
Queenswood
Pretoria
SA
Hours
M-T: 9am – 4pm
F: 9am – 12pm
S-S: Closed