This article follows my previous one making WooCommerce Subscriptions compatible with LearnDash. I’m going to sell a LearnDash course by installments.
It fits my need but might not be usable in your specific case. If so, please use the comments below: I’d love to know more about your situation and what you’re trying to sell by installments with WooCommerce ;)
Let’s get to it.
What’s a payment by installments?
Stupid question, right? But defining it helped me hacking my way through.
It’s like a credit. Rather than paying in full and get the product, you access the product and pay in installments.
The 2 main differences with a membership (on how money moves) are:
- it’s for a limited number of payments whereas most memberships are lifetime until you stop paying
- when you stop paying and if you’ve paid all scheduled payments, you still have access to the content. On a membership site, when you stop paying your membership fee you can’t access the member’s area anymore.
Now, the main difference is taken care of by most membership plugins. Even if it’s not the most popular option, it’s an option that people use for their site. WooCommerce Subscriptions allows you to make subscriptions that have a definite time limit.
Let’s get to main difference #2.
How to keep content access at the end of the subscription
Thanks to the wonderful API provided by WooCommerce, it’s extremely easy. With LearnDash’s WooCommerce extension, I just have to remove the hook from the constructor.
Because I still want to lock access when someone stops paying, I’ll keep the two other hooks active.
And here it is. We can now create a product and sell it by installments just by selecting “simple subscription”. Then you just have to configure the payment schedule.
But wait. Right now, if we want to offer different payment plans it’s not as clean looking as it could. We still have two WooCommerce products for one virtual product. This means two sales pages, with different reviews, etc. Not cool for the shop manager and a nightmare for the user flow.
Here’s my hack.
Creating a WooCommerce grouped product to give different payment plans
A solution I tried was to use product variations. I hacked my way through creating a free subscription with a sign-up fee and a more classic subscription for the installment plan. It generated more problems than solutions. I needed to package a simple product and a subscription product.
Using product variations wasn’t a solution because I wanted to link two different kind of product:
- a simple one (one-time payment)
- one or several subscriptions (installment plans)
Especially after talking with Michael at the WooCommerce support and trying various hacks. I wasn’t sure how to approach the problem.
Don’t get me wrong, the support at WooCommerce is really good. I just wasn’t satisfied with having two different products with two different sales pages and reviews.
Fortunately, I stumbled upon WooCommerce’s grouped product option. It is not only free but also included in the default plugin.
Here is how I’ve done it:
- I’ve created a WooCommerce grouped product for the course
- and associated the two products (only differentiated by their payment method) to this group
From there I only have to drive the customers to the product group page and let them select how they want to pay.
Cleaning up
In order to tidy up your archive and search pages, you might want to set the visibility of the products you grouped to hidden. This way they’ll only show up on the grouped product sales page ;)
Conclusion
I hope this little trick helps you. After looking around, I haven’t seen a lot of good options to sell by installments on WordPress. Using WooCommerce let your options open for growth and new marketing tactics (affiliation, …).
Again, this works for me but you might have a different situation and have to tweak a bit.
If you’ve found a more elegant solution, please comment I’d love to hear about it :)
Wow, that was a simpler solution to offering installments than I was anticipating. Great idea!
But my scenario has an added layer of complication. My client is a midwife, and wants to offer the choice between paying at once and making installments, so no only do we need to offer multiple installment options with varying numbers of payments, but the options needs to be dynamically restricted, since all payments should be complete by the time the baby is delivered. For example, if the client is due in 9 months, offer them the options of paying $2,000 up front, or 9 payments of $222.22, but if the client is due in 6 months, offer them the options of paying $2,000 up front, or 6 payments of $333.33. Thus avoiding a client being due in 6 months, but selecting the option of paying in 9 installments.
Any ideas? Thanks!
Hey! Glad you liked the article!
So in your situation, you only have 9 possibilities… One solution might be (ok it’s not elegant but still) using some jQuery and transform the product list of the main group into a HTML select field. At least visually it would be nicer than a long list of payment plans.
You can also take a look at the WooCommerce Subscriptions API here: http://docs.woothemes.com/document/subscriptions/develop/
You can create a subscription plan dynamically, but you’ll have to customize heavily your WooCommerce templates to get the values you’ll put there (maybe in a popup?) and hook it up.
Does it make sense?
Yes, just not 100% sure how to make it happen. Or what about making 9 different grouped products, and have none of them visible by default, but showing a dropdown selection “How many months until your due date?” and based on their selection the proper grouped product would become visible? Might that be easier?
Yep, this is what I meant by the “one solution” I just didn’t manage to use the right words ;)
I’m just not sure about the smartest way to convert the payment plan list to a drop-down. I’d probably take a look at the WooCommerce templates first see if I can change the default output… If I can’t I’d go with jQuery.
Let me know how you end up making it work, that’s an interesting problem :)
oh, also, I was a bit confused at first when you mentioned “WooCommerce Groups.” You’re talking about Grouped Products, but there’s also a “WooCommerce Groups” plugin (http://www.woothemes.com/products/groups-woocommerce/) which does cost money, and is intended for membership management. It’s not needed with your solution, but it was confusing.
Thanks! I’ll edit this tomorrow ;)
Great tips!
A follow up use case and question:
I want to sell a 12 month membership to a medical practice. I understand that I could position the memberships as a ‘grouped product’ and offer two different products as payment options:
1. Standard product – Pay up front for the year and get a discount (1 month free)
2. Subscription product – Pay in monthly installments
The tricky bit is that I need to enforce that customers join for a minimum of 12 months and are not allowed to cancel their membership during that time. (This is required to prevent users from front loading their care and only paying for a one month membership).
Questions:
– Is there any way to disallow users to cancel their memberships if I use the subscription approach detailed above?
– When year 2 comes around, are there any tips to offer renewals of the monthly installment plan but again require a 12 months commitment without the ability to cancel?
– Am I pushing Woocommerce too far here? Should I look elsewhere?
Thanks!
D
Hey dberz!
That’s a tough one. I don’t know any way you can force a subscription. Sure, you can deactivate the cancel button on your WordPress but you can’t block them from cancelling from Paypal or calling their bank to cancel. That’s two big holes in the process.
However, you can drip-feed your content throughout the 12 months period and stop the drip-feeding if the subscription is cancelled. No front-loading this way (this is something I do in this payment by instalments case)
So if they cancel, they don’t get the content, they have to reactivate to get access.
LearnDash allows you to drip-feed, I believe Sensei too through a paid extension. If you’re using another type of content, I’d go with Paid Membership Pro and use the PMPro Series add-on that allows you to drip-feed content.
You can then use PMPro as a standalone monetization solution or sell memberships as a WooCommerce product.
Does this help?
Thanks for the suggestions.
I don’t think a drip-feed approach will work. We need a true Installment solutions, not a Membership solution.
PMPro doesn’t seem to offer installments either.
I guess I’m out of luck!
Could you describe your product / offer a bit more?
Sure.
Customers can join the medical practice for one year (that’s the minimum). Retail price is $149/month. We want to offer two payment options:
1. Pay up front, and we’ll discount one month (11 x $149)
2. Pay each month in monthly installments of (12 x $149)
But unlink a true “membership”, customers cannot cancel within the 12 months.
I don’t see any way you can enforce a membership (again, ultimately you can just go to the bank and cancel everything). So you have to penalize the guy who cancels the subscriptions.
Being sure someone is not just paying one month, then creating a new account when needed might be possible if you tie important information (achievements, products, …) to their email address (this way they can’t create multiple email address to cheat without getting penalized by losing everything). Coupling emails and phone # might be an idea (people have a limited number of phone lines so a two-step validation will prevent them from creating dummy accounts).
WooCommerce Subscriptions detects pretty well when someone isn’t paying or cancels his subscriptions so I’d work my way from there but aside from making them sign a contract and using lawyers to enforce it, I don’t see a solution to force someone not to cancel.
Thats a good point re. bank cancelation. I suppose that would also be possible and there isn’t much to be done to prevent termination at the source of payment.
I was hoping to find a true “installment” option, with different confirmation and renewal language and no “cancel my membership” option. I suppose language can be tweaked and the cancel feature hidden via CSS but it does seem a bit like a hack!
Yes, the language and copywriting can be edited through the theme files I think… But of course WooSubs wasn’t intended to be used as an installment plugins.
I needed the feature and was really surprised it didn’t already exist so I coded it but yeah, at some point you’ll have to dive deeper to have the full package, although I think this approach will help with the core features you need.
Hi,
The grouped products was an interesting approach, that’s I’m using on some sites, but for a membership, if nothing else is sold on the sales process, I found the plugin http://www.woothemes.com/products/woocommerce-one-page-checkout/ really cool for the user experience.
cEd
Hey! Thanks a lot this is giving me a lot of ideas for future projects. Thanks!
Aloha! Awesome explanation and hack for this. Much appreciated. Any idea on how you would approach this if you are already selling membership subscriptions on the site? Obviously you can’t unload the expiration variable (removing the hook from the constructor) on a global level. Thoughts on how to remove for only a specifc subscription?
Thanks in advance
Hey Chris, glad you liked the article.
I unset the hook only for the LearnDash add-on constructor so it doesn’t affect the rest of the subscriptions. If this doesn’t answer you question, if you could explain a bit more the situation this would help :)
Hey Thomas, I work with Chris. In our particular situation we are using a plugin called Groups for access control, which allows us to sell access not only to Learndash courses specifically, but entire site areas. There is a similar plugin to the one you’ve hacked here, which connects Access Groups to Woocommerce and Subscriptions. Since our other Subscriptions also give users an Access Group, there needs to be some kind of selector to differentiate between them. This route seems to be pointed to on this site, but without clear instructions (I think they are just trying to sell the service, which is fine): http://wisdmlabs.com/blog/offer-installment-plans-woocommerce-products/ -Any tips you have on that front would be great.
While I don’t expect that you would know how to approach unhooking the subscription_expired line on this other plugin (unless you’ve used it), perhaps you can provide any insight you have as to how to do the unhooking process from the child theme functions.php instead of in the plugin directly? That would be immensely helpful.
Thank you for an awesome article and very comprehensive explanation of your approach!
Hey Adam,
Thanks for all the kind words :) Yes Wisdmlabs has a really good content strategy, I stumble upon his site quite often.
What is the Groups plugin you’re using? If it’s Groups by WooCommerce, I’d look into their doc. They usually have a really good actions & filters documentation. You should find the hook that triggers the access expiration and be able to remove it (with a basic remove_action).
I can’t do much without knowing more about the type of plugin you’re using and I’ve never been in this situation but if you send me more specific details, I’ll try to have a deeper look.
Hope this helps :)
Thanks Thomas, I’d love your help!
The docs is a great idea, but I don’t see any actions or filters in the documentation for this one: http://docs.woothemes.com/document/groups-woocommerce/ … I could be looking in the wrong place, but I also don’t see anything related to it in the general API references.
I’m fairly sure I’ve located the line where the action hooks are registered in Groups Woocommerce, though I’m uncertain this is the only thing that needs to be removed conditionally. We would need it to obey the condition (for example) that:
1. If the product has a custom field that reads as Installation_Plan then kill the subscription_expired action.
2. If the product has a custom field that is set to default Subscription then leave the subscription_expired action intact.
Here’s the action lines inside groups_woocommerce (class-groups-ws-handler.php):
// do_action( ‘subscription_expired’, $user_id, $subscription_key );
add_action( ‘subscription_expired’, array( __CLASS__, ‘subscription_expired’ ), 10, 2 );
Then later on down the line there is something that looks like it responds to this action (I don’t know why the comment says maybe):
// maybe unschedule pending expiration
wp_clear_scheduled_hook(
‘groups_ws_subscription_expired’,
array(‘user_id’ => $user_id,’subscription_key’ => $subscription_key));
If I remove_action on the original add_action will that be enough to stop the chain?
How do I remove_action on a plugin’s add_action inside of functions.php?
If you have any tips on the conditional statement that needs to wrap that, I’d also love your insights. My core is not in PHP obviously…I’m mostly a CSS/HTML/PSD/WP Wizard so your help is hugely welcome!
Thank you so much for the quick responses and offer of assistance! Maybe we’ll give you some fuel on this one for another epic article for people in this particular situation!
Ok, I have a better vision of what needs to happen… I don’t have the solution though.
Here are my thoughts: you can’t really unhook the expiry because you have normal subscriptions sold alongside installment plans. So I’d do a test each time a subscription expire.
You’ll have to remove the expiry action and add your own custom one which will be triggered each time there’s an expiration.
From the parameters given to this function, you should be able to trace back to the product, then get it’s custom fields to identify which type it is. If it’s a course sold by installments, do nothing and leave the access on, if it’s a normal subscription expiring do what the normal function do.
And yes, you can remove_action in your functions.php
I’m sorry I can’t be more precise, but this is what I’d do. Now of course you have a bit of PHP to write but you can find pretty much all the bits you need on stackOverflow and WooThemes doc.
I hope this helps!
Sounds like a good approach. We’re on it. Thanks Thomas!
Hey Adam, did you find the solution? I tried remove_action in functions.php page – but woocommerce groups still removed the product from subscription after the installments have finished.
Oh – I only removed this function: add_action( ‘groups_ws_subscription_expired’, array( __CLASS__, ‘subscription_expired’ ), 10, 2 );
But not this one: add_action( ‘subscription_expired’, array( __CLASS__, ‘subscription_expired’ ), 10, 2 );
So off to test again…
We have it fully working, and figured out everything but how to remove the add_action for subscription_expired inside functions.php exclusively. It created too many problems, so we simply hack out a single line of code in the plugin and the functions.php magic handles the rest. Here’s my GIST for your enjoyment:
https://gist.github.com/adamapollo/16193b75c8b9fb0076d7
Hey Adam, great work man!
If you have a blog or something I’d be happy to send you some link love here. I’d also like to figure out why you couldn’t remove_action in the functions.php file…
Great work!
Looks like all is working the way it should. thanks guys.
Legend!!! Thanks for getting back to me so quickly. I’m going to plug in your functions.php code now – already commented out the line in the code – fingers crossed this does the trick on my site.
Thanks ThomasLeCoz too – awesome work peeps. I’ll let you know if it fails on my end in a few hours.
Thanks for this article and thread. I’ve implemented a grouped product with 2 children: a 1-pay simple product and a 2-pay simple subscription product.
I have a compound problem: The button on the grouped product page in store categories displays “View products”… but so does the button on the actual grouped product page. This doesn’t seem right and is not consistent with tutorials I’ve followed where the grouped product page button is labelled “Add to cart”.
More troubling, however, is that selecting a quantity of one of the grouped products (required) and clicking the “View products” button results in the standard “Add product x to your cart” success message. But clicking the “View cart” button reveals an empty cart! The same is even true of attempts to add a child product to the cart directly from its child page after clicking on the child link in the group page. (Add to cart works when navigating directly to the child product in the store and bypassing the group.)
For extra bonus points, while the grouped product page and it’s children product pages display fine in Mac Firefox in my local dev environment, none of them display locally in Mac Safari or Mac Chrome. (My non-grouped product pages display fine across the board.)
Any insights are greatly appreciated!
Doesn’t sound like anything I’ve seen… If you could send details at thomas AT thomaslecoz.com with screenshots and all I’ll take a look (however my schedule is crazy right now so I may take some time to deliver :p).
Following on from my comments on your other article in LearnDash, I followed these instructions and am working on testing it out. Fingers crossed! I also tried to set up your Grouped Product idea. One of my products would be a pay in full LearnDash “Course” product – which eliminates the ability to be able to do upsells/crossells and therefore groups. Boy oh boy! If only LearnDash would update the way their plugin works so that it doesn’t rule out every single other WooCommerce extension! (Perhaps you have some sway with the developers over at LearnDash since it is they who referred me to you and your great articles! ;) )
Hello again :)
Haha I think Justin at LearnDash and his dev’s already have a pretty full roadmap for new features and integrations, they’re also doing a very decent job at hearing out their customers and iterating where the market wants them.
I don’t have any particular access, I just sent them the link to those articles as I thought they could be useful to some of their clients (which apparently is the case :) ) but no special access no ;)
Let me know how it goes. If you’re planning on drip-feeding the course let me know, I need to update this content I spotted (and fixed) a bug on recurring payments that messes up the drip-feeding system in LearnDash. I need to update this content, but I’ve been busy (a.k.a. lazy) and my content fell behind.
Hi!
I’m wondering how the Groups option eliminates the ability to do upsells/crossells? Could you elaborate? Have you tried using a product called Smart Offers? I’m looking into use that for my upsells.
Cheers,
Ellen
Hey Ellen,
Don’t know precisely why it wouldn’t work. Smart Offers should work with this article’s content :)
Let me know if you run into any issue.
Now the new version of Subscriptions is out and has some major changes, a) Have they added a better way to achieve the one off payment vs subscription installment payments? and b) does your approach still work with the latest version? Thanks for the great article. Such an oversight on their part to not have a single checkbox to make it so the subscription option is actually just an installment model and allowing you to have a variation set to sign up fee with 0 months. Annoying how the output says it is free for 1 month otherwise.
Hi David,
Thanks for the kind words! An update of this article is long overdue and I need to check the massive changes in Subs 2.0. I haven’t updated my sites running this custom extension to WooSubs 2.0 yet, and I wouldn’t.
I have a crazy schedule as of now but I plan on writing a complete update on several points on this article.
On selling by installments, WooThemes recently released WooCommerce Deposits: http://www.woothemes.com/products/woocommerce-deposits/
Haven’t field-tested it yet but it seems to be doing exactly what I was looking for at the time I’ve written this piece of code.
Does this help?
Hi Thomas,
No problem and yes I thought as much, (not updating sites with this function) however I had no idea they brought out a payment plan type plugin. I will check that out. Shame it isn’t all in one with subscriptions but still a cool facility from the sounds of it. Will let you know if I try it out. Thanks for the response Thomas.
Hi David,
Did you ever test out that new Deposits plugin for WC? I’m getting ready to set up a LearnDash course with the option for 3 installments, and that plugin looks promising. Just wondering if there are any hacks needed to make it work. I’m guessing I don’t need Subscriptions if using Deposits.
Thanks for your great articles for using Subscriptions with WC!
Cheers,
Ellen
Hi Ellen,
I didn’t however my client is still interested in trying it out next month so I may get a chance to experiment with it soon. It definitely seems like the best approach but of course didn’t even exist at the time this article was put together. That said it is another expense of course in license costs.
I think Deposits as you say replaces the need for having subscriptions, with LearnDash it depends on what you are using it with. I have built 1 learndash site before and we used amember to manage the actual memberships / subscriptions for that one, and ran the site on the Genesis framework. I would say these tools depend also on picking a good framework to use. Genesis worked nicely for this.
Thanks
I’ve been working with ThriveThemes because they have a great content builder. Much better than Visual Composer. The downside is that when you clone a course it doesn’t clone the Thrive Builder content. I’m working with the devs of the Clone Course addon to see if they can make it clone that too.
I may give the Deposits a go at some point, but after reading the docs, I don’t think it will work for me because 1) I’m using Authorize.Net CIM which doesn’t seem to be compatible with Deposits, and 2) “Yes! Virtual products will not become available until an order is marked as Completed.”
It also doesn’t look like the charges happen automatically, but I could be wrong about that.
Hi Ellen,
Based on quick research (no actual live site in production) Authorize.net CIM seems to integrate with the WooCommerce ecosystem: https://www.woothemes.com/products/authorize-net-cim/
Can you explain a bit more about 2) ?
Also Deposits / Installment payment is a very specific use, different from Memberships. If you want recurring rev (membership site) there are a lot of options to do so (Paid Membership Pro as a free solution, or WooCommerce Memberships to keep it in the WooCommerce suit).
Hope this helps!
Hi Thomas! Finally getting a chance to get back to this…
We are currently using Authorize.net CIM with WooCommerce, but it does not work with the Deposits addon. We can’t use Paid Membership Pro because you can only have one membership at a time, so we are using WC Memberships. It looks like I’ll have to stick with your subscriptions method for the installment plans that we offer (ie, 3 payment option).
BTW, I haven’t tested it yet, but the Course Cloner devs did an update to make it copy the ThriveBuilder content, so that’s a huge bonus.
Let me know how it goes. I didn’t know WooCommerce Deposits didn’t work with Authorize CIM.
Great to know for the Course Cloner, can come in handy yes :) Thanks for the info!
Update: I’m still working with the developer on this. They gave me an updated, but it still didn’t copy all the Thrive Content.
Hi David,
Have you had an opportunity to try the Deposits plugin with LearnDash? I’m still wondering whether Deposits could be made to work with LearnDash. The 2 problems I foresee are
1) Virtual products will not become available until an order is marked as Completed.
2) Manual and automatic recurring payments are not supported in the current version, so credit card data is not stored. Customers have to log in and make their recurring payments each time.
I’m wondering if anyone else has tried it.
I’m finally setting up my installment plan, and I’m probably just going to implement the Subscriptions model on my site, but thought I’d check in and see if anyone has used Deposits yet.
Cheers,
Ellen
Hi Thomas!! Love your post here; thanks so much for this helpful information. I’m surprised this need is unmet by A simple WooCommerce solutions since so many online businesses use this one-time vs payment plan option for courses and virtual products.
I’m hoping you can confirm how I might do something similar.
I want to run a Facebook ad, visitors click the ad, are taken to a surveygizmo survey. Once hit submit button, they land on thank you/sales page. I’ve got that part handled :)
On thank you/sales page I want to display checkout cart (WooCommerce One Page Checkout?) and display one virtual product (webinar) to one-click add to cart (Woo Subscritions?). And I want to either display a coupon that can one-click add to cart (Smart Coupons?) or have that coupon prepopulated into the cart upon arrival (URL Coupons?). Then visitor can complete purchase right there in that same page.
At end of product (webinar) delivery, I want to provide a link to a similar landing page that displays checkout cart with two new virtual products – choose one to one-click add to cart. One is for One-time pay, second is three payment plan at higher rate like you’ve described here in this article. Do I do this with Woo Subscritions?.
I plan to use Digital Access Pass for memberships.
Thank you so much for this article. Now I know I’m not alone :)
Angela
Hey Angela,
Glad you liked the article!
Ok, so starting at the thank you / sales page:
1/ Is the webinar a one-time purchase? According to your setup it looks like a tripwire so no need for WooSubs here. You just want a one page checkout (so no cart or anything). You can do this with WooCommerce One Page checkout I think or other tools like GravityForms (with Paypal + Stripe extension) which would allow more clever combinations (using Thrive Content Builder to design your sales page for instance). SO MANY TOOLS.
2/ The coupon thing: I suppose it isn’t dynamically generated (like, depending on the answers of the survey they have different discounts). So if it’s not you can :
a) Using WooCommerce URL coupons send them a link with a discount on the one page checkout
b) Using Gravity Forms & Thrive Content Builder (or any landing / sales page builder really) create a custom sales page explaining that they have a special discount.
3/ I see several ways to do this: if you’re running WooCommerce, you might want to take a look at SmartOffers which is a nice upsell plugin for WC. If not, using email automation might be your best bet. I’d recommend something like Active Campaign where you can tag people and trigger automations depending on what they bought, etc and craft custom funnels.
Hope this helps and I’ve covered everything. Feel free to comment back on specific point if not :)
Cheers!
Hi Thomas!! Thank you for your response; I can see you put some thought into this and I appreciate that :)
I’m using OptimizePress theme and have the landing page template about 30% complete. But am open to other page builder options (before I get too far down the road).
Also, I have just installed WooCommerce. But not invested in plugins yet.
1/ yes, tripwire. True: no cart, just checkout. To use WooCommerce One Page Checkout, does the landing page have to be a One Page Checkout template (or can it be my OptimizePress template?
I want buyers to be be automatically subscribed into a membership account when they submit their order. Pretty sure Digital Access Pass can take care of that. Do I need WooSub also in order to be in sync with DAP?
2/ No, it isn’t dynamically generated.
A) with the WooCommerce One page checkout and URL Coupons, can the one page checkout with the coupon applied be the (customized OptimizePress) landing page they go to when they submit the survey? Or do they have to click a link I send them?
B) if using Gravity Forms and OptimizePress or Thrive, can the discount be “applied” right there on the same page?
3/ the webinar will be delivered live from another page at a future date. From which, I’ll provide a link to a new sales page. I want the new (custom OptimizPress) sales page to have the two Subscritions options like you’ve described here in this article.
Both same product: one is one-time payment and second is 3 payment plan. Again, I want the checkout right there on the sales page. With one click add to cart. And access to the product/membership should be “lifetime” although payments end.
I do have ActiveCampaign and am not sure how automation fits in here. Unless The trigger that presents/sends the link to the new sales page is “showing up for and completion of the webinar.” Would it be easier to just personally provide that link at the end of the webinar? I suppose doing both is a good idea, too. But not sure the former negates the latter.
Please let me know what you think and if I’ve misunderstood anything here.
Thank you for your time. It means a lot to me. I’d love to save money buying as few plugins as possible.
Sincerely,
Angela
Hey Angela,
A lot depends on your product and the customer experience you want. My answer was here to keep your mind open on the possibilities (although I love WooCommerce, sometimes a simpler solution is good).
Now, if it seems overwhelming, go with the solution you’re most comfortable with. Here are the general guidelines I’d recommend:
– the simpler the checkout (especially for a tripwire), the better. Reduce friction to increase conversions
– coupons automatically applied are basically just used to create some scarcity / urgency. You can do this via design (showing a regular price, displaying a promotion, etc.)
– speaking of design, use whatever you’re comfortable with. OptimizePress is a good tool :)
Also, focus on getting some sales in with what you have right now (DAP is good, simple Paypal buttons for the tripwire might do too) and build the advanced funnel later down the road.
It’s a common mistakes I’ve seen with people I’ve helped: don’t try to build the best thing ever by yourself. If you’re profitable enough, getting an expert to install the tools for you a few month down the road is the smart move (you won’t have to test plugins, and the work and plugins you’ll end up paying for will pay for themselves on your existing traffic and audience).
Sorry I don’t reply point by point but there are many variables here and I really think these questions take care of themselves using the guidelines above.
Hope this helps!
Ok thank you for your help on this. I appreciate your time. Have an amazing week. I’m sure we’ll chat in the future; your articles are quite helpful :)
Glad you like them :) I’ve written them mostly when I couldn’t find a solution out there but I understand they are sometimes techy. I’d recommend focusing on the experience you want to provide for your customers then thinking about the tech, most of the choices will come from your UX choices.
Have an amazing week too!
This is a great post, I learned a lot by reading it. I’m wondering if it is worth getting WooCommerce Deposits to accomplish this. I saw other, older posts, but I wasn’t sure if it actually ever worked out. Do you have any advise about using Deposits?
Hey Tanya, glad you liked the article :)
Sorry but it’s been some time since I’ve worked on a WooCommerce shop with these requirements (although one should be coming in Nov. not sure it needs installments).
If this can help: if I were to start this project again, I would test WooCommerce Deposits rather than the custom way: much easier to maintain over time.
Hope this helps!
Thanks Thomas and Tanya, this is really helpful – we’re trying to offer payment for workshops by instalments so, since there’s no ongoing access to an online service required, in principle it should be a lot simpler. We investigated Deposits, and the response we got from Woo was this:
“The way Deposits works is that is asks the customer to pay their first installment when checking out. And then it reminds them to come back to the site with emails to continue to pay the deposits. So each payment will likely be a new transaction fee, based on your payment gateway.”
So it looks like time-limited subscriptions is the way to go – we’ll follow your lead on the grouped products solution and see how we get on. Thanks again for a path through this particular minefield!
Thanks for your message wwwolf. Your solution seems fine indeed.
WooThemes should be able to provide plugins with out-of-the-box features like that. Subscriptions will handle the billing cycles, you might want to couple it with Memberships to handle access and user rights (used it on big sites before, works smoothly :) ).
Glad the article could help!
Hello, some parts of your code has been integrated in version 1.40 of the add-on.
It’s not clear what should be keeped and what should be deleted (or commented)
// Give and remove course access based on WooCommerce subscriptions
add_action( ‘cancelled_subscription’, array( $this, ‘delete_course_access_old’ ), 10, 2 );
add_action( ‘subscription_put_on-hold’, array( $this, ‘delete_course_access_old’ ), 10, 2 );
// add_action( ‘subscription_expired’, array( $this, ‘delete_course_access_old’ ), 10, 2 );
add_action( ‘activated_subscription’, array( $this, ‘give_course_access_old’ ), 10, 2 );
// New hooks for WC subscription
add_action( ‘woocommerce_subscription_status_cancelled’, array( $this, ‘delete_course_access’ ) );
add_action( ‘woocommerce_subscription_status_on-hold’, array( $this, ‘delete_course_access’ ) );
// add_action( ‘woocommerce_subscription_status_expired’, array( $this, ‘delete_course_access’ ) );
// add_action( ‘woocommerce_subscription_status_active’, array( $this, ‘give_course_access’ ) );
add_action( ‘woocommerce_subscription_status_updated’, array( $this, ‘subscription_on_hold_to_active’ ), 10, 3 );
Here is what I did, but not sure about the woocommerce_subscription_status_active hook (it was commented by default. Should it be uncommented in case of someone repay after keeping a subscritpion on hold ?
Regards
Cedric
Hi Cedric,
I’m going to try to answer you but the best course of action is to talk to LearnDash’s team as they have a much up to date vision of the code as it is now.
The woocommerce_subscription_status_active hook gives access to the course when the subscription is active. However, if I remember correctly, access is also given in another function, where the WooCommerce invoice / receipt is generated.
My theory is that this code has been kept in the comment for legacy but isn’t used anymore. I strongly encourage you to check with LearnDash’s support and test it out in a development environment, you just want to make sure someone buying a subscription gets access to the course it’s tied to.
Hope this helps!
Hi. I’m a french developer. I made a plugin for that for a friend and I decided to make a product.
http://yoandemacedo.com/en/stripeseveral.html
Well done, glad there’s an out of the box solution now ;)