How to add subscription plans to your existing products on WooCommerce?

Featured, WooCommerce
How to add subscription plans to your existing products on WooCommerce?

Stability has to be one of the highest priority goals for any successful WooCommerce store owner.

Can you count on making sales tomorrow, just because you made them yesterday?

Even if you’ve got a successful online store, you can’t be sure that your revenue won’t fluctuate week-on-week, month-on-month.

That’s where subscriptions come in. Subscriptions allow you to move to a business model revolving around predictable, recurring, and, importantly, automatic payments from your users. Whether your site is in the business of selling physical products – meaning you could offer a subscription box of vegetables alongside your regular offering – or digital products – like podcasts – setting up a new subscription model couldn’t be simpler using the WooCommerce plugin and a couple of easy-to-use extensions.

all-products-for-woocommerce-subscriptions

Charlie’s Coffee (see example, this is not a real brand just a test site I created)

In this guide, we’ll show you the practices for setting up the All Products for WooCommerce Subscriptions extension on your WooCommerce site so you can offer any of your existing products on as a subscription.

To set up your product page this way, you’ll also need to have the WooCommerce Subscriptions extension too.

If you are more of a visual learner, check out our video tutorial below or see our FAQs.

Let’s begin!

1. Download and activate plugins

The first step is to purchase, download and activate the following plugins on your WooCommerce store:

WooCommerce Subscriptions
All Products for WooCommerce Subscriptions

WooCommerce Subscriptions is an extension that lays the groundwork for adding Subscription products to your WooCommerce store. It offers:

  • Integration with over 25 payment gateways for automatic recurring payments
  • Manual renewal payments through any WooCommerce payment gateway, along with automatic email invoices and receipts
  • Multiple billing schedules and variable subscriptions to allow users to choose the billing cycle that suits them best.
  • Support for automatic rebilling on failed subscription payments, so you never lose revenue
  • Subscription management for users, including allowing them to upgrade or downgrade their plan without the need for your input
  • Built-in expiry emails and other email notifications to let you — and your customers — know when subscription renewal payments have been processed or if their subscription expiry date is approaching
  • Detailed reports of recurring revenue, number of active subscribers, and more
  • The ability to add advanced subscription features such as a sign-up fee or allowing users to register for a free trial period.

All Products for WooCommerce Subscriptions builds on the WooCommerce Subscription functionality to allow you to add subscription plans for any of your existing products. With it, you can make any simple or variable WooCommerce product available on subscription without changing the way you manage your existing WooCommerce store inventory.

Before going to Step 2, make sure both plugins are not only installed but also activated.

Pro Tip: take a backup of your site or test this on a staging site first.

2. Add subscription plans to an existing product

Next, on your WooCommerce dashboard, navigate to Products and choose a product you want to offer on subscription.

Edit the product, scroll down to the Product Data section, and click the “Subscriptions” tab.

woocommerce-subscriptions-tab-edit-product

Then, click “Add Plan” to add your subscription plans.

woocommerce-subscriptions-add-plan-to-existing-product

For example, in my store, I want to offer a simple subscription on a product with the following intervals:

  • Every month
  • Every two months
  • Every three months

Because subscriptions mean more recurring revenue, I’m going to offer my customers 10% off if they choose a subscription.

Here is how my setup looks like:

Finally, I’m going to Save my product and view on my store.

On my product page, I see the one-time option as well as the subscription options.

Congrats! You have set up subscription plans for an existing product.

Do you want your product page to look similar to the screenshot below?

You need to follow Steps 4 and 5 in this tutorial as it involves adding a code snippet and overriding the default product page template file.

woocommerce-subscriptions-one-time-subscription-options-product-page

3. Do a test checkout

First, navigate to WooCommerce > Settings > Payments.

Next, look at the Automatic Recurring Payments column (screenshot below).

Does your current payment method support Automatic Recurring Payments? While most payment gateways, like Stripe, PayPal, and Authorize.net do have this functionality, not all do, so it’s worth double-checking that whichever one you’re using to process customers’ credit cards supports subscription payments.

woo-subscriptions-payments-automatic-recurring-payments

Then go back to your shop and go to a product page where you are offering a subscription.

Choose one of the subscription options you’ve just set up and try completing a test order to make sure the plugin works as expected.

Did everything come through correctly?

Finally, navigate back to the backend of your WooCommerce store and go to your Orders.

Because this was the first subscription order you created, you should see the parent order icon. Reference the screenshot below for the difference between the parent order icons and the renewal order icons.

woocommerce-subscriptions-order-icons

4. Add code snippet into functions.php

If you want your product page to look like the thumbnail on this article you need to do a few more steps…

Add the code snippet below using the Code Snippets plugin or using SFTP. If you are not comfortable accessing your theme files via SFTP you could also use the File Manager plugin.

View code snippet

Using the Code Snippets plugin

  1. Download and activate the free Code Snippets plugin.
  2. Add New Snippet.
  3. Paste code into snippet
  4. Save your snippet and set to Only run on site front-end.

Here is how my code snippet looks like…

Using SFTP

  1. First, go to your active WordPress theme via SFTP or SSH.
  2. Next, open up the functions.php file.
  3. Then, copy/paste the functions.php code snippet to the bottom of your functions.php file.
  4. Save your file.

The file path will be [your-active theme]/functions.php.

After making this change nothing will happen yet! You still need to do Step 5.

5. Override the product-subscription-options.php template file

You could either use the File Manager plugin or SFTP to complete this step. We will be overriding the product-subscription-options.php template file using the edited file below.

View code snippet

Using File Manager plugin

  1. Add the plugin to your site and then go to WP File Manager. You should see a list of all your website files.
  2. Go to your active WordPress theme (i.e. click wp-content > themes > your-active-theme).
  3. Next, create a ‘woocommerce’ folder inside your active WordPress theme if you have not already. This will allow you to override WooCommerce files.
  4. Then, inside the /woocommerce/ folder, create another folder titled ‘single-product’.
  5. Next, create a file inside your /woocommerce/single-product/ folder called product-subscription-options.php.
  6. Copy the code snippet and paste it into your newly created product-subscription-options.php file.
  7. Finally, save your file.

Using SFTP

  1. First, go to your active WordPress theme via SFTP or SSH.
  2. Next, create a ‘woocommerce’ folder inside your active WordPress theme if you have not already. This will allow you to override WooCommerce files.
  3. Then, inside the /woocommerce/ folder, create another folder titled ‘single-product’.
  4. Next, create a file inside your /woocommerce/single-product/ folder called product-subscription-options.php.
  5. Copy the code snippet and paste it into your newly created product-subscription-options.php file.
  6. Finally, save your file.

The file path will be [your-active theme]/woocommerce/single-product/product-subscription-options.php.

You can also right-click and download the code snippet above for the product-subscription-options.php file. Then upload the file inside the /woocommerce/single-product/ folder.

After completing Step 5, go to your product page. If you completed all steps correctly it should look something like this….

Help! I see a blank product page! If you see a blank product page try refreshing your page and clearing your cache. If that still does not solve the issue, rename the product-subscriptions-options.php file to xproduct-subscriptions-options.php until you are able to troubleshoot further.

If you do not see a ‘help icon’ on your product page, that means you do not have Font Awesome enabled on your site.

woocommerce-subscriptions-subscribe-save-help-icon

Install the free Better Font Awesome plugin to get the help icon to show on the product page.

Solve this by installing the free Better Font Awesome plugin.

Dev Tip: Does your Add to Cart button not look right? This is due to a conflict with Elementor. See the FAQs for how to fix this.

How to prevent coupons from being applied to products on subscription?

You may want to only apply coupons to one-time purchases only.

Add the snippet here to the bottom of your functions.php file to prevent coupons from applying to cart items on Subscription.

Your products, on subscription

Add subscription plans to your existing simple and variable product pages!

Get the plugin

Video Tutorial

If helpful, I also created a video that goes through this process.

If you have not set up WooCommerce Subscriptions, see this video to learn how!

How to setup Prepaid Subscriptions (bill yearly, ship monthly)

How to setup Subscription Box site with WooCommerce

Summary

So there you have it.

That’s how you apply subscriptions to existing products on your WooCommerce store.

After setting up subscriptions on your store, let your customers know that you now offer subscriptions.

This is a good excuse to send a marketing email! You could use AutomateWoo, WooCommerce Follow-Ups, or your own email marketing provider.

A lot of your customers are going to be thrilled to know they do not have to worry about reordering your product manually anymore!

If you would like to reference how the subscriptions are set up on a store, take a look at the sample product I set up here: sample product

Pro Tip: before publishing this live on your store, ensure you have gone through the “Subscriptions” tab in the WooCommerce Settings.

Leave a reply for Jay R.

Comment policy: We love comments and appreciate the time that readers spend to share ideas and give feedback. However, all comments are manually moderated and those deemed to be spam or solely promotional will be deleted. Your email address will not be published. Required fields are marked*

Comments

  1. Quentin October 28, 2021 | 5:16 am

    Hello Simon,thank you for the tips 🙂

    A question though, do you know how to add different plans to custom subscriptions boxes ?
    The subscriptions options does not appear in the backend but there must be some way to add it 🙂

    • Simon Gondeck November 16, 2021 | 11:01 pm

      Hey Quentin, I recently made a tutorial on how to setup a subscription boxes with WooCommerce Subscriptions. Check it out here: https://youtu.be/tF2xJ8GmRiQ. Does this help?

  2. Tom September 24, 2021 | 7:01 am

    is there a way to offer free shipping for just subscriptions?

  3. jayaram September 21, 2021 | 7:37 am

    Hi There,

    How to ship the orders every month.

    Example, My woo-commerce is linked to shipment company via API. When an order is placed, my shipment company will fetch the processing orders, do the processing and deliver it to the customer. Once delivered, the order status is marked as completed.

    Again next month, how do I process the order? As once the order id is synced to shipment company, it doesn’t re-sync the same order id again.

    Any view on this on how to handle?

    • Jayaram September 21, 2021 | 7:39 am

      Also, Is it possible to take upfron amount and then ship products month wise..

      Say user selected to get product every month for the next 3 months and he paid full upfront amount of 3,000/- for 3 months.. I will ship the product every month for 3 months. is this possible? How to handle this with the shipment company.

    • Simon Gondeck September 22, 2021 | 1:05 am

      Charging and shipping on different schedules is possible with the AutomateWoo extension by using their workflows for pre-paid subscriptions.

    • Simon Gondeck September 22, 2021 | 1:03 am

      Hey Jayaram! A new order will be created each time the subscription renews. For example, a customer signs up today for a monthly subscription to Dark Roast Coffee and a new order is create that goes to your shipping company. 1 month later when the subscription renews a new order is created that will go to your shipping company automatically (just like the 1st order).

    • Simon Gondeck October 19, 2021 | 10:14 pm

      Hey Jayaram, I just created a new tutorial that goes over how to set up a prepaid subscription. Check it out here: https://youtu.be/AYistm0IB8c. Let me know if helpful!

  4. Ahmed Mansoor August 20, 2021 | 12:51 pm

    Hi, how i can apply coupons to one-time purchase only instead of subscription product. I mean i want to exclude the subscription product from the coupon.

    Thanks you so much

    • Simon Gondeck August 30, 2021 | 10:50 pm

      Hey Ahmed, I added this to the article on how to add a filter under the “How to prevent coupons from being applied to products on subscription?” heading. Let me know if you have any questions or comments. Thanks!

  5. Hugo July 22, 2021 | 9:24 am

    Hola , alguien me podría apoyar con una duda sobre este plugin.
    No me aparece la opción de agregar a una suscripción existente (add to an existing subscription) en el carrito de compras, ya habilité la opción en ajustes pero no me aparece , solo dentro del producto que selecciono. Alguna idea de porque no se muestra? Será algún conflicto con el tema?. Estoy utilizando el tema gratuito de ASTRA.

    Gracias

  6. Ana July 3, 2021 | 7:22 am

    Hello, I have a directory site where advertisers subscribe to a monthly plan that is automatically renewed, that plan includes the publication of their ad for a month, I have 3 plans, gold, silver and free plan, how can I make when a paid plan expires because the did not pay, that automatically switch to the free plan

  7. Maeliss June 22, 2021 | 4:31 am

    Hi Simon, Did you try to display those kind of button on a variable product? I’m trying to get two radios buttons when it’s a variable product, but i think i’ve to change the variable.php file to display the same thing as product-subscription-options.php. But variable.php file is a javascript-based script and i’ve some issue to have the equivalent of product-subscription-options.php, can you help me?

  8. khaled May 25, 2021 | 9:25 am

    Hi,

    I am having issues having the discount rate being applied even after adding the snippets

    • Simon Gondeck June 2, 2021 | 8:36 pm

      Hey Khaled, what is your url? Do you also have any other coupon plugins enabled on your site?

  9. ANITA May 19, 2021 | 3:25 pm

    How could I tie a free product coupon when someone subcribes and not for the one time purchase

    • Simon Gondeck September 6, 2021 | 10:22 pm

      Hey Anita, can you explain your scenario in more detail? Do you want to offer a free product coupon to the subscription product or another product? For example, if someone subscribes to Coffee Beans for $10/month they would get a free coffee grinder?

  10. Dawie Theron March 8, 2021 | 8:41 am

    Hey! Hopw would I activate the subscriptions fuinction on all existing products in my shop? I have more than 300 products and I really don’t want to manually activate this on each one. Your help would be greatly appreciated!

    • Simon Gondeck September 6, 2021 | 10:24 pm

      If you did not want to manually update each product you could enable the feature that on the Cart page users can subscribe their entire cart to a subscription plan.

  11. Rakhashree February 9, 2021 | 4:19 am

    Hey Simon! Thanks for your code…I just need a small help I want to add product price with the radio button option… Please help me its urgent

  12. Rakhashree February 9, 2021 | 4:11 am

    Hey Simon! thanks for your code.. I just want to add price after ONCE-OFF PURCHASE

  13. Guillermo Figueredo December 21, 2020 | 12:18 pm

    Hi! First of all, your work is awesome. Thanks so much!

    I am trying to add the word ‘Every’ before the dropdown options, so I added these CSS lines:

    .single-product .purchase-options li.selected select option::before {
    content: “Every” !important;
    }

    However, even thought the code seems to be working well from the inspector, the content is not showing on the front-end.

    Is there any better way to achieve this? Thanks!

  14. Hi Ho December 6, 2020 | 8:35 pm

    Hey Simon, instead of just “1 Week” etc in the dropdown, how do we get the price in, i.e. “$24 every 1 week”? I can’t seem to pull the object out of $option, and the original template just uses value but that’s not of much use to this override – only shows 0. Thanks in advance!

  15. Damian Rivadulla November 30, 2020 | 5:35 pm

    Hello! Nice tutorial!
    I have a question, is it posible to add the “subscribe and save” on the cart page?
    So, if the person select the item (normal buy), and when he’s on the cart page could have the option to subscribe with the product which is already on the cart?
    What do u think? Migth work?
    Thanks!!!

  16. Daniel November 11, 2020 | 6:25 am

    Hey Simon! Thanks for this fantastic writeup. Do you know of any way of HIDING subscriptions from users with particular roles? We use the “Wholesale For WooCommerce” plugin and we don’t want our wholesale customers to see the subscription offers.

    • Simon Gondeck November 16, 2020 | 6:05 pm

      You could add a conditional near the top of the product-subscription-options.php file or smth in your functions.php file. For example, smth like this:

      $user = wp_get_current_user();
      
      if (!get_user_meta($user->ID, 'wholesale_level', true)) {
      
      --insert line 6 to line 61 in the product-subscription-options.php file --
      
      }

      I do not know how the Wholesale for WooCommerce setups wholesale user roles. You could also reach out to them.

  17. Joe M November 11, 2020 | 6:09 am

    Hi. Using the All Products for WooCommerce Subscriptions plugin extension and it is working as planned… Allows a product to be purchased as either an one time or as a subscription. (I also have traditional subscription only products setup through the standard woo subscriptions plugin.) The last thing im trying to get to work is to setup promos that work with subscriptions. Looking to provide a free product whenever a subscription product is added to cart. Using advanced coupons and setup an auto apply coupon to do this, but it only works when the one time purchase option of the product is added. When a subscription version is selected, the coupon doesn’t get applied. Seems to have something to do with a subscription variation of thx product but I can’t figure out how to set it up for this use case. Any help would be greatly appreciated.

    • Simon Gondeck November 13, 2020 | 9:03 pm

      Hey Joe, I do not use the Advanced Coupons plugin but looking briefly at their Premium version it looks like they have ‘Cart Conditions’ if you edit a coupon and go to the “Usage restriction” tab. For example, I would look at adding conditions like Custom Cart Item Meta contains _wcsatt_schemes.

  18. Sam October 27, 2020 | 9:58 pm

    Is there a way to allow the customer to select the length of the subscription? Also is there a way to have this work with Min/Max Quantities plugin so that every 3months would default and force them to purchase a qty of 3?

  19. Michelle Moore October 27, 2020 | 11:16 am

    Holy cow! Thank you so much for the advice you gave up there to the guy who is also using Elementor!!!! You fixed every issue I was also experiencing except one, so I’m going to be greedy and ask for one more piece of advice: How do I get this line: Subscribe for $50.00 $42.50 / month to just say "Subscribe for $PRICE /month & save %PERCENT" I’d also like it to just use the default font and size and color, not the green currently showing. Any guidance would be VERY appreciated!!! Here is a link to the test product page: https://www.americanhempoil.net/product/test-product/ and you’ll see what I mean.

  20. Rachael October 26, 2020 | 6:29 am

    Hi, Could you let me know if this plugin allows the option to choose one-off or subscription on the category and/or shop page? Or do I need another plugin that allows customisation? I’ve found some examples: https://petlabco.co.uk/collections/dental and https://myeq.com/your-cbd-box/ I also found a website showing two buttons – one for one-off and one for subscription – but I cannot find it again. It would be great to understand what’s possible with this plugin and others. I’ve done a lot of research but can’t work out how it’s done 🙂 Thanks, Rachael

  21. Dan October 22, 2020 | 9:29 am

    Hello –

    I was able to create the file “product-subscription-options.php” but I am unable to move it under the subfolder woocommerce/single-product. How do you move .php files within WordPress?

    Thanks,
    Dan

    • Simon Gondeck October 23, 2020 | 4:36 pm

      Hey Dan, what hosting provider are you using? You would need to connect using FTP or SFTP credentials using FileZilla or another FTP client. You could get your SFTP credentials through your hosting provider. Another option would be to use the Advanced File Manager plugin.

  22. Jay R. October 19, 2020 | 3:26 pm

    Simon,

    This is a huge help, thank you first and foremost.

    I am not a developer by any means, and use builders to develop the sites for my clients. I have got almost everything in place, but just cannot figure out how to have this thing display properly. Here is a link to the page as it stands now:
    https://phazenaturals.com/product/500mg-full-spectrum-hemp-cbd-oil-p1/

    As you can see the QTY box and the drop down box do NOT align, but more importantly, the ADD TO CART button displays as the height of all of the elements to the left of it. Looks even worse on mobile.

    Can you help with this so it displays properly for me?

    Thanks,
    Jay

    • Simon Gondeck October 19, 2020 | 10:47 pm

      Hey Jay,

      It looks like CSS from Elementor is conflicting. I would add the following CSS to your theme, Elementor, or somewhere in WordPress.
       

      .elementor-product-simple form.cart {
      	display: block !important;
      }

       
      If you also wanted to add a background color based on the one-time vs. Subscribe like the screenshot below, add this as well:

      woocommerce-subscriptions-one-time-vs-subscribe-option

      .single-product .purchase-options li.selected {
          background-color: #edebe6 !important;
      }

       
      To line up your radio buttons better you also could add this too:

      margin: 0 6px 0px 0 !important;
        height: 1em !important;
        width: 1em !important;
      }

       
      To remove the suffix appended to the price (i.e. “— or $36.00 $32.40 / month”), add the following as a code snippet or to your functions.php file:

      add_filter( 'wcsatt_price_html_suffix', 'apfs_remove_suffix', 10, 3 );
      
      function apfs_remove_suffix( $suffix, $product, $args ) {
        return '';
      }

      remove-suffix-all-products-subscriptions
       
      Overall, it also looks like you do not have a child theme installed with Astra. If you installed a child theme it would be easier to add in CSS customizations in the future but not required. See more at this link.

  23. David B. October 18, 2020 | 7:41 pm

    Thanks for the tutorials on this and WooCom in general. We sell bags of produce which we deliver. To encourage people to buy more than one bag, we offer a discount for multiple bags to the same address. ($5 off for each bag delivered to the same address.) You covered how one could set up automatic discounts over time, (bar of soap is discounted 10% when subscribing), but how would you set it up to discount multiples of the same product as a one off as well as a subscription using this extension?

  24. Sansoa October 14, 2020 | 12:39 pm

    Hey Simon,
    I just need a suggestion regarding this plugin i have used the plugin snippet from its official site to change the select options button into add to cart button in shop page. The problem i am facing now is that the product that is added through shop page add to cart and the other from the single product page are saved differently into cart rather than a single product with increased quantity.
    Below is the link to the snippet and i used last one to change the select option to add to cart button.
    https://docs.woocommerce.com/document/all-products-for-woocommerce-subscriptions/snippets/

    The Screenshot Link:
    https://imgur.com/a/ilkKJrj
    Both products are added as one time purchase but added as different in cart. Don’t have any idea how to solve it.

    • Simon Gondeck October 15, 2020 | 6:07 pm

      Hey Sansoa, do you have a product page link you could send to test? Are you sure both of the products are “one-time purchases” instead of 1 as a subscription and 1 as a one-time purchase?

  25. Cesar October 5, 2020 | 9:49 am

    Hi, Simon, just purchased and installed the plugins, they work great, no issues on the mechanics of the plugin just one text issue, when the product on the website lists the subscription to a One-Time Purchase or a Subscription, the text on the subscription literally reads “One-Time purchase Subscribe from”. How do I change this text to read “Recurring order every:”?

    • Simon Gondeck October 12, 2020 | 11:01 am

      To change this you need to add this snippet to the bottom of your functions.php file or using smth like the Code Snippets plugin as a snippet:

      add_filter( 'wcsatt_price_html_suffix', 'apfs_remove_suffix', 10, 3 );
      
      function apfs_remove_suffix( $suffix, $product, $args ) {
        return 'Save with Recurring Purchase 10%';
      }
      
  26. Tatsat September 16, 2020 | 9:55 am

    I saw your screenshot where you have 10% discount. I have that same thing for my store but I have found out that lately customers are subscribing the the product and then cancelling the subscription before the next one is ordered. This way they are trying to save 10%. Is there any way to tackle that?

    • Simon Gondeck September 16, 2020 | 4:57 pm

      Hey Tatsat, I hear you! Customers are going to always try to take advantage of the system. One thing you could do is install the Enhancer for WooCommerce Subscriptions plugin. This is an add-on plugin for WC Subscriptions and has a “Subscription Cancel Delay feature” that allows you to customize the date customers may start cancelling their subscriptions once they’ve subscribed. This prevents users from cancelling their subscription just before their first renewal to take advantage of subscription pricing.

  27. Mayank September 4, 2020 | 3:09 pm

    How can we switch from premium plan to free plan after the 14 days trial expire ?

    • Simon Gondeck September 13, 2020 | 1:40 am

      Create a variable product that has 2 variants: Free Plan ($0/month) and Premium Plan ($25/month). Add a 14-day free trial to the Premium Plan. When a customer goes through the Checkout process they will sign up to the Premium Plan. Do you want to allow customers to sign-up without a payment method? If so, go to your WooCommerce settings and check “Allow $0 initial checkout without a payment method”. After customer’s 14-day free trial is over, they would be required to put their payment method down to get access to your Premium Plan.

      Are you currently using a simple product or variant product? Are you using WooCommerce Memberships or anything else that would only show content if user is on the Free Plan?

  28. Christian September 2, 2020 | 3:14 am

    “Didnt work for me. Website didnt break, but also didnt get subscription tab in my single products” (ivan)

    same for me….
    Added all Code snippets, files ……but no tab, nothing at all..

  29. Victoria August 26, 2020 | 4:05 pm

    Hey guys, this is exactly what I have been looking for. On the front page the layout is much better than the one out of the box from All Products plugin, but for some reason, once I add the PHP file in the theme, the subscription option doesn’t seem to get chosen? Is there some way to fix this? I followed the instructions exactly as you had them.

    • Simon Gondeck October 2, 2020 | 2:33 am

      Hey Victoria, I apologize for the inconvenience. I forgot to add a closing jQuery tag to one of the scripts and this was causing the issue. Can you retry adding the updated code snippets in this post?

  30. Michael July 10, 2020 | 1:59 pm

    Kinda figured this out, but the function or template is messing up the Subscription option label, as it’s combining the two into “Subscribe and save 3% every One-time purchase Subscribe and save 3%” (see screenshot – https://www.dropbox.com/s/u7aute25wb3dlv3/Screenshot%202020-07-10%2011.56.23.png?dl=0)
    I entered “Subscribe and save 3% every” in the Title field, but it’s getting mangled.
    How does one fix this? Thanks.

    • Simon Gondeck October 3, 2020 | 8:05 pm

      To remove the subtext that comes after the price, add the snippet below to your functions.php file.

      add_filter( 'wcsatt_price_html_suffix', 'apfs_remove_suffix', 10, 3 );
      
      function apfs_remove_suffix( $suffix, $product, $args ) {
        return '';
      }
      
    • Ann-marie November 26, 2021 | 4:24 am

      I have put this code in the functions.php file but I still have the problem on the page. What am I missing?

    • Simon Gondeck November 28, 2021 | 12:03 pm

      Hey Ann-Marie! Did you also follow step #5 by overriding the product-subscription-options.php template file?

  31. Michael July 10, 2020 | 1:03 pm

    This might be an odd question, but what exactly is the need to add functions and snippets provided. You don’t really ever explain what they are for. Your video for “All Products for WooCommerce Subscriptions” doesn’t mention them at all, and seems to have all the needed functionality. i.e. the plugins seem to work out of the box, so why the modifications.

    Can you clarify what your modifications do and/or what problems they are attempting to solve?

  32. GRIFFIN July 1, 2020 | 11:54 pm

    My Product price is getting injected with save XXXX every xx months and its duplicating is there a way to fix this? I also offer memberships on my site and they are tied to specific products, is there a way to turn off the subscribe section for people who are already members?

  33. Ivan May 16, 2020 | 1:15 am

    Didnt work for me. Website didnt break, but also didnt get subscription tab in my single products

    • Moldy September 2, 2020 | 5:10 pm

      same here

    • Simon Gondeck October 2, 2020 | 2:38 am

      I updated the post with updated code snippets. Can you retry? Thanks!

  34. Scott April 6, 2020 | 4:18 pm

    Hi the discount is not being applied in the cart after the subscription is added. Also the reoccurring payment notice is not being displayed in the cart. Ive create the directories and files step by step. Thanks!

    • Gabriel July 16, 2020 | 11:28 pm

      Yea having the same issue but going to see if I can figure out why

    • Simon Gondeck October 2, 2020 | 2:32 am

      I updated the code snippets for this post and re-tested. Can you try going through the blog post and using the updated snippets? Let me know how it goes!

    • Genesis September 20, 2020 | 4:01 pm

      I’m having the same problem. Can someone help with this?

    • Simon Gondeck October 2, 2020 | 2:27 am

      Hey Scott, thank you for your patience. I made a mistake when adding the code snippets and forgot to include jQuery. Can you go through the post again and see if you are able to solve this problem? Let me know if you have any issues. Thanks!

  35. Cat Russell January 12, 2020 | 4:24 am

    I really loved the look of this but it is causing an error on my site also as reported by some other people.
    Any ideas what the issue could be?

    • Simon Gondeck April 5, 2020 | 1:33 am

      Hey Cat! I finally had a chance to update these snippets. Could you try again and see if you can get working on your site? Thanks!

  36. Rocky November 5, 2019 | 6:58 pm

    Hi simon,
    After add that code in my child theme in this folder http://prntscr.com/pszvgo
    I got error http://prntscr.com/pszv6z
    could you please help?

    • Simon Gondeck October 2, 2020 | 2:31 am

      Hey Rocky, I know it’s been almost a year since I have responded but I updated the code snippets. Can you try going through the blog post again and using the updated snippets? Cheers!

  37. Ryan November 4, 2019 | 10:04 pm

    Hi Ollie and Simon,

    Copying the code via ftp just as you said actually just causes an error and the page does not display at all. Is this dependent on what them or product template builder (elementor) is installed? I’d really like to implement this!

    Thank you

    • Simon Gondeck October 2, 2020 | 2:41 am

      Hey Ryan, I made a mistake when adding the code snippets and forgot to include a closing jQuery tag. Can you go through the post again and see if you are able to solve this problem? Let me know if you have any issues. Cheers!

  38. Dale October 28, 2019 | 5:52 pm

    Hey Simon, thanks for the guide on this. I’ve been trying to accomplish having monthly subscription and one off orders on single product pages without any luck.

    I have tried using your code snippet on my child theme but I am receiving this error:

    “The site is experiencing technical difficult”

    ——–

    Would love to get some feedback, maybe the code works for a certain version of the plugins?

  39. Enamul Haque October 17, 2019 | 12:52 pm

    Hi I have followed your instruction and but it is showing an error. could you please check it. note:

    : Uncaught Error: Call to undefined function get_company_name() in /woocommerce/single-product/product-subscription-options.php:119
    Stack trace:
    #0 plugins/woocommerce/includes/wc-core-functions.php(249): include()
    #1 plugins/woocommerce-subscribe-all-the-things/includes/display/class-wcs-att-display-product.php(166): wc_get_template(‘single-product/…’, Array, false, ‘/home/customer/…’)
    #2 wp-content/plugins/woocommerce-subscribe-all-the-things/includes/display/class-wcs-att-display-product.php(249): WCS_ATT_Display_Product::get_subscription_options_content(Object(WC_Product_Simple))
    #3 wp-includes/class-wp-hook.php(286): WCS_ATT_Display_Product::show_subscription_options(”)
    #4 /home/customer/www/divinohair in

    • Simon Gondeck October 2, 2020 | 2:39 am

      I updated the post with updated code snippets. Can you retry? Thanks!

  40. MIke September 18, 2019 | 10:32 am

    Hey Ollie, will your solution work for this scenario?
    I have a product with 3 different quantities (30pack, 60pack, 90pack).
    I’d like to offer a one time purchase for each as well as 2 subscription options for the 60 and 90 pack (every month, every 2 months)
    is this possible with your code above?

    Mike

  41. Ollie September 3, 2019 | 9:16 pm

    Hi There,

    Is it possible for you to please provide me with the appropriate code to install the dropdown option on the subscription frequency, as shown in your youtube video?

    Regards, Ollie

    • Simon Gondeck September 16, 2019 | 12:21 pm

      Hi Ollie, I posted the code snippet in the blog post. You will need to paste this into your active WordPress theme with the file path: [active theme]/woocommerce/single-product/product-subscription-options.php. Thanks!

  42. Ollie August 15, 2019 | 1:04 am

    Hi – I left a comment on your youtube channel asking how to have a drop down box to select frequency of shipping and a hover Tooltip for information. Can you please send me instructions on how to do this? It would be greatly appreciated! Regards, Ollie

    • Simon Gondeck October 2, 2020 | 2:40 am

      Hey Ollie: thank you for your patience! The post now contains the updated code snippets. Can you retry adding this to your site? Cheers!

FAQ

Subscriptions

Can I buy 1 subscription product and a non-subscription product on the same order?

Yes, you need to purchase the All Products for WooCommerce Subscriptions extension on your WooCommerce site.

What is a mixed checkout in WooCommerce?

A Mixed Checkout in WooCommerce is when a single transaction includes both subscription products and one-time products.

To allow multiple subscriptions and products to be purchased in a single transaction, check the option for the Mixed Checkout setting in your WooCommerce settings under the Subscriptions tab.

woocommerce-subscriptions-mixed-checkout

If you do not want multiple subscriptions and products to be purchased in a single transaction, uncheck the Mixed Checkout setting. If you try to add a product to your Cart, you will see the following message “A subscription has been removed from your cart. Products and subscriptions can not be purchased at the same time.”

woocommerce-subscriptions-no-mixed-checkout

All Products for WooCommerce Subscriptions

I am using Elementor and the Add to Cart button is TALL and not WIDE.

It looks like CSS from Elementor is conflicting. I would add the following CSS to your theme, Elementor, or somewhere in WordPress.

.elementor-product-simple form.cart {
	display: block !important;
}

If you also wanted to add a background color based on the one-time vs. Subscribe like the screenshot below, add this as well:

woocommerce-subscriptions-one-time-vs-subscribe-option

.single-product .purchase-options li.selected {
    background-color: #edebe6 !important;
}

To line up your radio buttons better you also could add this too:

margin: 0 6px 0px 0 !important;
  height: 1em !important;
  width: 1em !important;
}

To remove the suffix appended to the price (i.e. “— or $36.00 $32.40 / month”), add the following as a code snippet or to your functions.php file:

add_filter( 'wcsatt_price_html_suffix', 'apfs_remove_suffix', 10, 3 );

function apfs_remove_suffix( $suffix, $product, $args ) {
  return '';
}

remove-suffix-all-products-subscriptions

How to remove the “-subscribe and save X%” from the product price?

To remove the subtext that comes after the price, add the snippet below to your functions.php file.

add_filter( 'wcsatt_price_html_suffix', 'apfs_remove_suffix', 10, 3 );

function apfs_remove_suffix( $suffix, $product, $args ) {
  return '';
}

If you do not feel comfortable adding this to your theme’s functions.php file, install the Code Snippets plugin and add the code snippet above.

How does this differ from a variable subscription product?

If you setup a variable product subscription all you can do is set variants for a specific billing period (i.e. every month, every 2 months, every 3 months). There is no option to offer a one-time purchase without making a new product and making the customer go to 2 different product pages. The All Products for WooCommerce Subscriptions plugins allows you to make any simple/variable product available as one-time purchase and subscription, without changing the way your manage inventory. In addition, easily offer discounts as an extra incentive for subscribing, rather than using coupon plugins that may not always work well.

Does it work with variable product?

Yes. The add-on allows you to make any simple or variable product on subscription.

How can I add a one-time coupon code in additional to the subscribe and save discount?

To do this you would need to add an additional coupon with the Discount type set as a “Recurring Product % Coupon”. The coupon should only be valid for the 1st payment. For example, the product costs $59.99. In addition, you also have a subscribe and save option at 20% off for $47.99. You also want to offer a one-time 20% additional coupon off the subscribe and save option so the first purchase is $35.99 instead of $47.99. But the product recurs monthly at the normal subscription price of $47.99.

Sample Product

  • One-time purchase price: $59.99
  • Subscribe every month for 20% off ($59.99 * 0.8): $47.99
  • Subscription price for 1st purchase only ($59.99 * 0.6): $35.99

Subscription price and billing schedule (every month)

  • 1st month (i.e. 1st purchase):  $35.99
  • 2nd month: $47.99
  • 3rd month: $47.99
  • Xth month: $47.99

How to set an additional discount for the 1st purchase only?

You would add the coupon amount to be a 25% recurring product discount since the coupon is applying to the Subscription price (i.e. $47.99 * 0.75 = $35.99).

If you did a 20% recurring product discount (i.e. $47.99 * 0.80) the price would be $38.39.

woocommerce-subscription-coupon-recurring

If you want to have the coupon “auto-apply” you could use the Smart Coupons plugin.

auto-apply-woocommerce-coupon-smart-coupons

Live example

You can test this out by going through the Checkout process with the Sam’s Coffee product: https://coffee.sgwp.dev/product/sams-coffee/

How to give a free product whenever a subscription product is added to the Cart?

To do this, create a new coupon on your WooCommerce store by going to WooCommerce –> Coupons.

Add any conditions on the “Usage Restriction” tab. For example, if a customer purchases Coffee, I am going to give them a Bag of Produce.

Next, purchase the WooCommerce Extended Coupon Features PRO plugin. This plugin has an easy to use “Free products” feature for you to apply your Free products.

woocommerce-coupon-free-product

Click the ‘Miscellaneous’ tab. You can set the coupon to Auto coupon and Apply silently so the customer does not have to enter the coupon code.

woocommerce-coupon-auto-apply

See more info in the docs.