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:

discount

 

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 allow for bulk discount on bookings

Pricing is $15 per hour. For times over 1 hour then it becomes $10 per hour – but customer need to be able to also book 1.5 or 2.5 hours.

The following settings will return this:

2 blocks (1 hour): $15
3 or 4 blocks (1.5 or 2 hours): $20
5 or 6 blocks (2.5 or 3 hours): $30

This is the setup:

block-count

### Please note that the block cost has been adjusted to 5, and each individual block count is being corrected through the base cost.

With a block cost of 5 you only need to adjust 2, 3 and 5.

1 block: unavailable, as the minimum amount of blocks to be booked is 2
2 blocks: 2×5 = 10, thus you need to add 5 to the base costs = 2×5 + 5 = 15
3 blocks: 3×5 = 15, thus you need to add 5 to get the 2 hour cost = 3×5 + 5 = 20 (2 hours)
4 blocks: 4×5 = 20, all good
5 blocks: 5×5 = 25, need to add 5 to get to 3 hours cost = 5×5 + 5 = 30 (3 hours)
6 blocks: 6×5 = 30, all good.

Using the base costs definitely reduces a lot of calculation, so this would be the way to go.

And these are the results on the front end:

1 hour:
one-hour

1.5 hours
one-hour-and-half

2 hours
two-hours

2.5 hours
two-hours-and-half

3 hours
three-hours

 

Payment problems with manual orders

This order’s status is “Pending Payment” – it cannot be paid for. Please contact us if you need assistance.

Or: the importance of calculating the total in manual orders.

If you are a shop owner and used to create manual orders, you’ve probably received complaints from customers that the payment link doesn’t work. Or maybe they don’t complain, but simply fail to pay.

Because they see this:

This order status is pending payment

Why does this happen?

Without knowing, you created a manual order whose order amount is $0.00.

How, you ask, if you added all the products? Lets review the workflow:

How to create manual orders in WooCommerce

1.  go to your WordPress Dashboard >> WooCommerce >> Add Order

2. Fill in the Customer details

manualorder01

3. Click Add item(s) in the left corner
manualorder02

4. Click what you’d like to add to the order (e.g. Products)
manualorder03

5. Search and add the product
manualorder04

6. Click save
manualorder05

Most shop owners think they are done now and proceed right to sending the customer invoice under Order Actions >> Sent Customer Invoice failing to realise that your order is not ready yet!

Take a closer look at your order and what happens if you send the Customer Invoice now:

manualorder07

You DID add the product. You did hit save. But you did not click “Calculate Total” to update the Order Total!

This means that your invoice will now be sent with an amount of $0.00, which in turn will create an invalid payment link and a very confused customer.

If you are adding products to an already existing order, this could be even worse: the payment link will work, but it won’t include the amount for the products added later on – while the order will still be set to paid!

When creating a manual order, and before sending out the customer invoice, make sure that the Order Total is correct. This will save you a lot of headache!

 

Enhancement request on GitHub

Pre-selecting pricing options for bookable products

By default a bookable product requires the customer to add at least one person type and then select a date to book. It feels clunkly and doesn’t look very profesional.

Enter Product Add Ons. This additional plugin allows you to define product options including different pricing variations. To find more info about the extension, check out the documentation here: https://docs.woocommerce.com/document/product-add-ons/

And this is how it works in the back-end when creating a coaching product with different prices for different ticket types: medical students / juniors or Consultants:

Screenshot

This is how it looks on the product page (note that the end price is a combination of the product price PLUS the add-on price – so be clear of what you want to achieve).

Screenshot

If you then want to redirect the customer directly to your cart, instead of letting him wonder through your site, select the Redirect to cart option on the WooCommerce Settings > Products > Display page:

Screenshot

Now your customer can smoothly transition from their buying decision to the payment step.

Multiple resources for one booking

 

You are getting married. You want a huge letter display saying L-O-V-E on your wedding setting. Lucky for you, you can rent these letters individually.

Now, image you are the shop owner: you are offering letters for booking so that customers can spell their preferred word for a day. Using the booking extension, how can you set up your products to allow customers to choose the entire word instead of adding letters individually to your cart?

And how can you manage your stock of letters?

Even though you can’t assign multiple resources to the same booking, there are still a number of ways to set up your store in a way that your customers have a delightful shopping experience and you (kind of) are on top of your stock.

Option 1: Persons are letters

If you need to know the exact number of letters (and have some kind of stock management). “Persons as Letters”. The product would then look like this, and the customer can choose for each letter the exact number of letters he or she needs.

Advantage: there is no restriction as to the number of letters any one client can order AND you can restrict the number of letters available per day – this way you do have some kind of stock management (or at least, no overbooking).

(In this example I did not add all 26 letters – if you do, you might want to adjust your theme to organise the letters slightly differently).

This is the result:

booking with multiple resources 06

Once added to the cart, it looks like this:

booking with multiple resources 09

And you know exactly which letters have been ordered.

The setup in the backend looks like this (prices are defined only in the “persons” tab):

booking with multiple resources 10

The costs tab is only needed to define the “From $xxx” message

**Caveat**
You’ll want to adjust the error message when no letters are selected. Currently it says “Persons are required” – you’d have to translate this to “letters are required”.

booking with multiple resources 08

Option 2: How many letters do you need

In this option the customer first decides the length of the desired word (yes, requires counting skills), books the number and then lets you know the word (hopefully) in the “order notes field”:

The end result is this:

booking with multiple resources 02

Note that the resources are created as letter dependent:
booking with multiple resources 01

The price depends on the resource (which depends on the number of letters).

The setup in the resource tab looks like this:

booking with multiple resources 04

**Caveat**

The user only chooses the **number** of letters, but you don’t know yet which letters they want. Thus the advice to please spell it out in the checkout form under “Order Notes”.

booking with multiple resources 05

You might want to change the standard “notes about your order” to something more fitting though.

Option 3: Spell it out IN the order

To make this option work, you’ll need the Product Add-On plugin.

Set up the product just like in option 2 and add one custom field for the word to be spelled out.

This is the result:

booking with multiple resources 12

And this is how you add the additional field in the “Add-Ons tab”:

booking with multiple resources 13

 

 

Now you just need to choose which option works best for you and your customers 🙂

How to remove the image from Related Products in WooCommerce

Have you ever wondered how to remove the image in the “You May Also Like…” Section of your Single Product pages? This WooCommerce option displays related products to allow customers to quickly find other (maybe better) options when shopping on your site. Sometimes the picture is a bit of an overkill and might add too much distraction.

To remove the images you’ll need to venture into the world of custom coding – though only a tiny bit, as it is not part of the standard WooCommerce settings. You can use CSS to remove the images – either adjusting the css file of your child theme, or using the free Jetpack plugin to help you with this embellishment.

First step: After downloading, installing and activating Jetpack, please make sure to activate the Custom CSS option  in Jetpack settings:

Activate Custom CSS in Jetpack to remove the image in Related Products

Second step: Once you have that enabled, go to Dashboard > Appearance > Edit CSS tab and paste the following code:

.woocommerce .upsells ul.products li.product a img {
    display: none;
}

That’s it. It’s really that easy 🙂

Increasing booking costs based on # of people

Use case: A tourist guide in training offers weekend tours to discover the beautiful Born neighbourhood in Barcelona. To quickly get as much experience as possible, he offers very competitive rates, based on the number of people that attend:

The basic price for 1-5 people is $10 in total. Each additional person pays $3 extra.

The booking setup thus has to take into account:

  • Price for 1-5 people: $10 (no matter whether it’s 1 or 5 people)
  • Price for 6 people: $10 + $3 = $13
  • Price for 7 people: $10 + (2 x $3) = $16
  • Price for 8 people: $10 + (3 x $3) = $18
  • Price for 16 people: $10 + (11 x $3) = $43

In order to add this option to your bookable product you need to enable “Has persons”.

Then, please set up the tab “costs” as following:

Base cost: 10
Then add ranges to define the different prices depending on the Person count. The first row would look like this:
Person count | 1 to 5 | Base cost + 0 | Block cost + 0
Person count | 6 to 6 | Base cost + 0 | Block cost + 3
Person count | 7 to 7 | Base cost + 0 | Block cost + 6
Person count | 8 to 8 | Base cost + 0 | Block cost + 9
etc

Add as many rows as needed (up to 16 in this case) adjusting the amount of money to be added to the base price of 10 dollars.

It would then look like this:

incrementing prices per person

Variation: fixed prices depending on the number

Another guide offers specialized tours of Sagrada Familia for Japanese tourists. His price setup is as follows:

Groups of 1-5 people pay $100 in total.
Groups of 6-10 people pay $200 in total.

Again, please check “add persons” to the booking.

This time, however we are going to work with the “base costs” in the costs tab:

Base cost: 100

Then add ranges to define the different prices depending on the Person count. The first row would look like this:
Person count | 1 to 5 | Base cost + 0 | Block cost + 0
Person count | 6 to 10 | Base cost + 100 | Block cost + 0

Please add as many rows as needed adjusting the amount of money to be added to the base price of 100 dollars.

The setup will look like this:

cost-tab-booking

Happy booking

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).

However…

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”.

Subscription Membership for Online Courses with a free trial

Use case: Learning platform with (optional) 14 day free access to Starter content – upgrade to pro is automatic after 14 days (unless canceled)

Workflow as experienced by the customer:

  • User reads through sales page and can choose between two two options: PRO subscription with a free 14 day trial during which access is restricted to STARTER content or PRO subscription with access to everything. 
  • There is a 14 time restriction to STARTER after which access is either upgraded (payment due) or removed
  • User can upgrade to PRO at any point, switching for example from “monthly with trial” to “monthly I want it now”

Components and Plugins used

WooCommerce with the following plugins:

Sensei: a WooThemes plugin to create courses

Configuration order: (WooCommerce – ) Sensei – Product – Membership.

This means, first you need to create your courses. Then you create the products that you are setting (access rights to these courses). Finally you restrict the access to these courses based on the access rights you defined in your products.

Be prepared to hop back and forth to streamline accesses.

How to set it up

This work-through indicates the settings that are needed to make sure all components work smoothly together. Thus I will only highlight those settings that are crucial (especially when it comes to the WooCommerce setup).

WooCommerce

Make sure to allow for Subscription Switching to allow users to upgrade to the PRO plan at any point.

Sensei

Please make sure to mark “Access Permission: Users must be logged in to view Courses and Lesson content.

sensei-access-permission

This ensues that only users with an account (who have paid or are on free starter plan) can access the content.

Within your Sensei area, make sure to create different courses depending on the user level you plan to introduce. For example, create one STARTER course and one PRO course to then later give access on a per course basis.

Products (Subscription Options)

Now that your courses are ready, it’s time to add products to your shop. Remember, you are not selling the courses, you are selling the access to those courses.

If you want to allow your users to upgrade and downgrade between different accesses (instead of selling courses on a standalone basis), you only need one product – a variable subscription.

variable subscriptionGo to Products >> Add Products and add a new product. Choose “variable subscription” from the dropdown menu.

Click on attributes and add the billing cycle you want to offer. In this example, we are offering a free starter subscription, a monthly subscription and an annual subscription:

attributes optional trial

Make sure to activate “used for variations”.

Create the four variations with their respective price tags. For example:

  • Variation Monthly with Trial: enabled, virtual, sing-up fee: 0, free trial 14 days, subscription price: 10 every month, all time.
  • Variation Annual with Trial: enabled, virtual, sing-up fee: 0, free trial 14 days, subscription price: 100 every year, all time.
  • Variation Monthly “I want it now”: enabled, virtual, sing-up fee: 0, free trial 0 days, subscription price: 10 every month, all time.
  • Variation Annual “I want it now”: enabled, virtual, sing-up fee: 0, free trial 0 days, subscription price: 100 every year, all time.

Note that two options include a free trial which will give access to ONLY the Starter Plan until the trial expires.

At the very bottom of the product page you will find a membership box. Make sure to click on Disable Restrictions in the Restrict Content tab. restrict content

Remember, you want to restrict access to the COURSE CONTENT, NOT to the product itself. You do want people to find the product and be able to purchase it.

Membership Settings

This plugin brings it all together.

Go to WooCommerce >> Memberships and click on the tab “Membership Plans”

You need to create two membership plans here.

One PRO Membership plan, that grants access for those who are paying monthly and annual and one STARTER Membership plan that grants access ONLY for those who chose not to pay (yet).

For the PRO membership WITH trial access, the setup looks like this:

General: add the trial variables to the Grant Access box.

membership for trial

Under “Restrict Tab” make sure that you are adding two lines. The Starter Course will be available immediately. The PRO course will be available after the trial!

available after trial

Restrict products: leave blank (unless you have special products that only pro members should be able to purchase)

Everything else can stay as is.

For the PRO membership without trial, the setup looks like this:

membership i want it now

General: add the variables WITHOUT trial to the Grant Access box.

restrict access i want it now

Under RESTRICT content, you will add both the Starter course and the PRO course for immediate access – because that’s what they’ve paid for.

Users can switch between the variables in case they want to shortcut their trial, or they can simply wait out the 14 days to then be upgraded. 

Changes in subscription can be done via the upgrade / downgrade button on the account/my-subscriptions page. (The design will vary depending on your site design).upgrade

Additional considerations

If you want an unrestricted trial period, check this article.

Change the text of the upgrade / downgrade button.

Give a personalized upgrade recommendation to starter users who try to access pro content. You can do so on the Product Page >>Membership Box >> Restrict Content Tab.

custom message

You might also want to look into using Grouped Product instead of one variable product.

Other resources: Building a membership site with WooCommerce Memberships (without Sensei)

Subscription Membership for Online Courses with a free Starter Option

Use case: Learning platform with free content and the option to upgrade to paid content at any time (instead of after a set amount of time).

Workflow as experienced by the customer:

  • User reads through sales page and gets two options: free STARTER subscription (forever – restricted access) or paid PRO subscription with monthly or annual payment plans (unrestricted access to everything)
  • There is no time restriction to STARTER, only content restriction
  • At any point, the user can upgrade to PRO to unlock access to everything.

Components and Plugins used

WooCommerce with the following plugins:

Sensei: a WooThemes plugin to create courses

Configuration order: (WooCommerce – ) Sensei – Product – Membership.

This means, first you need to create your courses. Then you create the products that you are setting (access rights to these courses). Finally you restrict the access to these courses based on the access rights you defined in your products.

Be prepared to hop back and forth to streamline accesses.

How to set it up

This work-through indicates the settings that are needed to make sure all components work smoothly together. Thus I will only highlight those settings that are crucial (especially when it comes to the WooCommerce setup).

WooCommerce

Make sure to allow for Subscription Switching to allow users to upgrade to the PRO plan at any point.

Sensei

Please make sure to mark “Access Permission: Users must be logged in to view Courses and Lesson content.

sensei-access-permission

This ensues that only users with an account (who have paid or are on free starter plan) can access the content.

Within your Sensei area, make sure to create different courses depending on the user level you plan to introduce. For example, create one STARTER course and one PRO course to then later give access on a per course basis.

Products (Subscription Options)

Now that your courses are ready, it’s time to add products to your shop. Remember, you are not selling the courses, you are selling the access to those courses.

If you want to allow your users to upgrade and downgrade between different accesses (instead of selling courses on a standalone basis), you only need one product – a variable subscription.

variable subscriptionGo to Products >> Add Products and add a new product. Choose “variable subscription” from the dropdown menu.

Click on attributes and add the billing cycle you want to offer. In this example, we are offering a free starter subscription, a monthly subscription and an annual subscription:

billing-cycle

Make sure to activate “used for variations”.

Create the three variations with their respective price tags. For example:

  • Variation Free Starter: enabled, virtual, sing-up fee: 0, free trial 0 days, subscription price: 0 every year, all time.
  • Variation Monthly: enabled, virtual, sing-up fee: 0, free trial 0 days, subscription price: 10 every month, all time.
  • Variation Yearly: enabled, virtual, sing-up fee: 0, free trial 0 days, subscription price: 100 every year, all time.

Note that there is NO TRIAL involved, even though the Free Starter access essentially works like a limitless trial with update option.

At the very bottom of the product page you will find a membership box. Make sure to click on Disable Restrictions in the Restrict Content tab. restrict content

Remember, you want to restrict access to the COURSE CONTENT, NOT to the product itself. You do want people to find the product and be able to purchase it.

Membership Settings

This plugin brings it all together.

Go to WooCommerce >> Memberships and click on the tab “Membership Plans”

You need to create two membership plans here.

One PRO Membership plan, that grants access for those who are paying monthly and annual and one STARTER Membership plan that grants access ONLY for those who chose not to pay (yet).

For the PRO membership, the setup looks like this:

General: add the paying variables to the Grant Access box.

membership-grant-access

Under “Restrict Tab” make sure that you are adding both the STARTER as well as the PRO course, because paying customers should ALSO have access to the free stuff.

restrict course access pro

Restrict products: leave blank (unless you have special products that only pro members should be able to purchase)

Everything else can stay as is.

For the STARTER membership, the setup looks like this:

starter general

General: add ALL variables to the Grant Access box.

This seems counterintutive, but remember, you are granting access to people who purchased… so if I purchase the Starter plan I want access to the Starter course. But if I purchased the pro plan I ALSO want access to the Starter course. Hence: add every option.

restrict content starter

Now, under RESTRICT content, you will only add the Starter course, as this is the only course your free subscribers will have access to.

Now, users can switch between the products and stop their trial at any point to upgrade to other options.

They will be able to do so when viewing their subscriptions by clicking on the upgrade / downgrade button. (The design will vary depending on your site design).upgrade

Additional considerations

Change the text of the upgrade / downgrade button.

Give a personalized upgrade recommendation to starter users who try to access pro content. You can do so on the Product Page >>Membership Box >> Restrict Content Tab.

custom message

You might also want to look into using Grouped Product instead of one variable product.

Other resources: Building a membership site with WooCommerce Memberships (without Sensei)