Selling monthly coupons that expire

The Squirrel Jumping and Flying Academy offers a monthly subscription with jumping tips. Every subscriber also has the chance to get one review of his or her practical skills per month.

This means that after purchase, they see a Review Voucher in their account. It expires are 30 days if not used. Then, a new voucher will appear (after the new month’s payment) – again valid for one month.

Extensions needed to create this functionality:


Smart Coupons allows you to create coupon codes unique to your customers which then will show up on their account, like this:



To set this up, you need to create

  • 1 simple subscription product, which creates the monthly coupon
  • 1 smart coupon (renews monthly)
  • 1 bookeable product to schedule the sessions (optional)

You’ll have to create those in revers order

Step one: the Bookeable Product (or the products that can be bought with the vouchers)

Create this if you want to allow your customers to choose the day of their review.

jumping review session

Step two: the Smart Coupon

smart coupon

Note the following:

  • the 100 percent discount allows your customers to book the session for free
  • the validity makes sure the coupon expires as expected
  • autogeneration means the code is unique for each customer

To make sure the coupon can’t be misused, restrict it to the product you just created and limit the usage to once per user.

coupon restriction

coupon restriction2

Step three: the simple subscription product

subs product

Here the important information is the code that will be generated upon purchase:

coupon generation


Customer experience

The customer adds the subscription to the cart. After the purchase they have now

  • a monthly subscription
  • a coupon code to book a coaching session.

When booking a session, this is how the cart looks. The coupon will disappear after use and reappear the next month, with a different code.

coupon in cart

Note how in this case the subscription worth $12 allows to purchase a product that usually retails for $15. Yet another reason for the customer to use the subscription instead.



How to offer recurring discounts when switching subscriptions

Imagine you have a variable subscription with three different options, for example an ecological vegetable basket that comes in sizes for 1 adult, 2 adults or family. Customers can switch between sizes as they wish to adjust for traveling family members, holidays etc.

Imagine you run a promotion, offering 10% discount for everyone who subscribes before a certain date, for example “use discount code SPRINGTIME before June 1st and get 10% off forever”.

Your recurring discount code should expire on June 1st.

However, your customer’s use of the discount code should not – even if they switch subscriptions.

WooQuestion: If a customer upgrades / downgrades his vegetable basket – will the discount code still apply? Even if it expired for first time users?


Official answer “No, you can’t!”, but…

Recurring discount codes for subscriptions do not transfer to other subscription variants when switching subscription (as stated in the documentation).


Remember what you are trying to achieve

You want your customers to feel super special through an unrestricted discount code no matter which subscription type they are on – giving them the flexibility to switch back and forth as needed.

Ideally you’d also want them to remember that they are on a discount. Just to make sure you are not being taken for granted.

One extra step to make them feel special

An alternative is using a custom code for each customer after the initial discount code has been applied for the first time. This new code is tied to the customer’s email address and at the same time it IS the email address.

Let’s say Maribel signs up for the 2 person basket, using discount code SPRINGTIME on April 30th. She gets 10% off her subscription forever and ever (even if the code expires the next day).

However, this code won’t work in July when she wants to change to the family basket because her parents are in town. If she simply switches to the new basket, the code won’t apply AND she will loose it if downgrading again to her 2 person basket.

Instead, after her first purchase she get’s an email.

Hi Maribel, thanks for your order. Remember that at any time you can adjust your personal basket size to YOUR needs. To make sure that on each switch you still retain your 10% lifetime discount, please use your email as your discount code. 

You might even add an image to show Maribel where her email should go.

Maribel won’t forget her discount code, as it’s her email. And every time she switches up and down, she’ll remember how awesome you are for giving her perpetual discount

Technically: manually or automatically – how many baskets are you selling

If you only receive a couple of orders per day, you might still be able to do this manually. However, after a certain threshold, you’ll have to look for an automatic solution – customising the workflow based on the initial discount code used. For example, on the day SPRINGTIME expires, you could export ALL orders that used this discount code, batch create those new discount codes based on the order emails and sent out a unified “thanks for your purchase, you are awesome, here is our super personalised code”.