Woocommerce Suspend Feature Restrictions to prevent overuse
WIth woocommerce subscriptions and the suspend feature found in the users account, the user is able to suspend their account over and over with no time limitations or usage limitations. The current no-restrictions could allow a user to take advantage of a subscription by constantly suspending their account in order to gain extra days to their subscription.
There should be a restriction set to where the system admin would have an option to let users suspend their account "x times every x". An example would be 1 time every 1 month (or week etc). This feature would be useful to prevent users/customers from taking advantage of the suspension system. In a current iteration of woocommerce subscriptions I am already facing this problem, so hopefully this gets enough votes so it can get implemented.
Well Brent, it's taken a while but I've finally implemented 2.0 on a website that utilizes the suspension plug-in. First let me say the added features work as advertised. Yea! It's great to finally be able to set parameters on subscribers suspending their accounts! I don't know if you are open to any future "tweaks" to the update but I have one suggestion. This website offers a 2-Day Trial Subscription, a 30-Day Subscription and a 90-Day Subscription (90-Day is discounted 10% from 30-Day price times 3). Right now I have to set the number of times a subscriber can suspend their account per billing cycle at the same number, such as 0, 1 or 2. What would be nice (and would make sense) is if I could set different number of days to different products such as "0" on the 2-Day Trial, "1" on the 30-Day and "2" or "3" on the 90-Day. It would be nice if we had the option to set all products at the same number or choose different numbers for each individual product. It's just an idea that would take the suspension plug-in to even a higher level of customization than it is now. Thanks for your time and THANKS! for getting the suspension plug-in to where it is now.
Hi Brent. Well, giving you feedback hasn't been as easy as I thought. I quickly realized that to test the suspension plug-in a website has to be running 2.0. The particular site I have the suspension plug-in loaded is complex with a lot of customization so the upgrade to 2.0 is requiring a lot of work to get the site straightened out. Once the site is working properly and I can then test the changes you've made I will certainly give you my input. I'm thinking that's the reason you haven't gotten any others to respond either? Thanks.
Hello Brent. I just saw your post on the updates you've made to the suspension plug-in. I can't wait to check it out and give you my thoughts! Thanks so much, this is exciting! John W.
Hi folks, a quick one to let you know as of Subscriptions 1.3, you have an option to let users suspend their account "x times every x" (or 0 times every x to turn off suspensions completely). :)
Thanks for your response, I'm so glad I found woocommerce and people like you that actually care. I hope you have a great week Brent =)
Hi Cassie, I'm starting work on this today.
It's hard to give a deadline as when bugs are reported they will always take priority & often it takes longer to implement & properly test new features than it appears from the outset. But all that said, as I'm starting on it today, I hope to have something out within a week or two (it might depend on WC2.0 though). :)
Hi Again Brent =)
Would you by chance have any idea when this would actually be implemented, even a rough date?
Thanks again for your help, it is soooooo appreciated
I know others were having the same problems, but I wanted to personally thank you for really listening to us and seeing what you could do to help with this issue. I look forward to a new update, and not having these headaches with customers anymore. Its unfortunate but we live in a world where people will do all they can to take advantage of systems.
You are appreciated =)
Hi Robert (and others), I will definitely be implementing it. Subscriptions 1.2.5 will be out soon to get WC2.0 compatibility public, then this feature will be high priority for the next feature release. :)
Just came across this suggestion page. Looks like most everything has already been discussed. Brent, if you implement this it would be quite helpful. I'm excited to see what you come up with!
It will be possible to implement a way to let subscribers suspend their account "x times every x" with PayPal Standard (and based on all the feedback, this is the most likely fix for this issue atm).
In response to your second question on a "Bulk" suspend accounts feature. This should also be possible and I'll look at including it too.
Thanks for your kind words and support of Subscriptions. :)
Hi Brent =)
Thank you for responding as we are currently facing the same issue with the extension. Firstly, do any of these options work with PayPal Standard or Advanced? I ask because you had mentioned different gateways being more advanced, we are currently using Paypal standard.
Your solution sounded ok at first, but with what we are doing with our subscriptions system, is allowing customers after they sign up for a subscription to access the members area protected with groups woocommerce to watch a 20 minute video we create for the service thats uploaded once a week. So my fear (which has already happened a few times) is that people will suspend their subscription every so often for days at a time during the week to gain those extra days, until the video comes out. While we offer other member content, its the videos that are the main attraction.
I would just turn the suspend feature off (if that was possible) however I still need to be able to have the feature available, because there are some weeks we will not upload a video and will notify the member that they can suspend their subscription for that week if they would like.
Also I noticed we cannot "Bulk" suspend accounts, only one by one in the wordpress backend. Is there anyway to make it so we could also bulk suspend accounts just like wordpress offers the "bulk" feature with pages, posts and nearly everything else?
Thank you so much for your time and effort, I understand this is somewhat complicated, but its SO nice to see a developer actually care about the customer concerns.
You are appreciated Brent =)
Alex Carrillo commented
It seems to me there a 2 points of view regarding the need for a "Suspend" feature. One is to allow the subscriber the option to suspend their account for personal reasons, whatever they may be. The other is for the website to accomodate for a pause/shutdown in service without having to get into refunds, credits etc. It seems that the original poster's idea would satisfy either scenario but the proposal's by John and Brent would only satisfy the application to allow the subscriber the option to suspend their account for personal reasons. I would prefer the original poster's idea so that it covers all scenario's.
Sky R. commented
My business does not offer the option to cancel a subscription. Clearly states "no cancellations, no refunds" BUT I have no recurring fee so if they try any length subscription (5 day, 14 day or 30 day) and don't like it, they just don't purchase it again at expiration. For my application the original poster's idea would work best.
Brent, the solution your proposing would still allow a subscriber to suspend their account whenever they don't want/need to use the particular service, even though the service is available. The reason to have the suspend option in the first place is to not penalize the subscriber if the service is down/unavailable for whatever reason. Your solution gives the subscriber the opportunity to suspend their accounts while they sleep, while their at work, while their on vacation or whatever other reason that benefits them. That's how a "30 day" subscription could turn into a much longer period of time for the subscriber which isn't fair to the business offering the ability to suspend their account. What your proposing is when a subscriber pays for a 30 day subscription (720 hours), they will never be able to access the product/service for more than 30 days (720 hours). But what if the "subscription service" being offered only accounts for 6 or 8 or 10 hours out of each day, and not on weekends? Then the subscriber can (and will) be able to receive a much longer "subscription time" due to the fact they can suspend their accounts all the time they are not actually accessing the product/service.
OK understood - simply adding a switch to turn off suspensions is not enough.
There is another potential solution I'd like feedback on.
It might be possible to change the suspension feature to account for the amount of time that is paid/unpaid. So if a user suspends their subscriptions 20 days into a subscription billed monthly, when they reactivate, the payment date is changed to be 10 days after they reactivate the subscription. If the subscription is suspended with 1 hour left before renewal payment is due, then they are charged the next payment 1 hour after reactivation. They can never gain extra time regardless of how many times the subscription is suspended.
Ideally, this is how it would always have worked, but I originally built the suspension behaviour to conform to PayPal Standard (as that is the bundled gateway). Now that more sophisticated gateways are becoming more commonly used (e.g. Stripe), this better implementation becomes more feasible.
The downside is that payment schedules will be less predictable (e.g. payments won't always come in on the 4th of each month, or whichever day it was first charged), but it will be simpler than having to make admins set a number fo suspensions allowed and having to build in some sort of UI/disclaimer to explain this to the customer (as the anon poster below highlighted).
It is a different approach to addressing the root problem of potentially allowing a customer to gain extra time on their subscription.
If it's possible (I still have to investigate it), would this a preferred solution to setting a restricted number of suspensions?
I agree with everything the original poster, Cassie and John W. said. What I haven't seen anyone talk about is the need to have a disclaimer of sorts, displayed when a subscriber would click to suspend their account. Whatever parameters the programmer sets would be displayed in a short disclaimer to the subscriber before suspending their account. It might read something like this: "You can only suspend your account 1 time every 30 days and will not be able to reactivate your account for 24 hours." I think this is important to avoid too many customer complaints/questions.
Yes Brent, Cassie said it perfectly. Everyone may not know they can already hide the suspend option through CSS but that's not the problem that needs solved. Cassie and the original poster have articulated the problem and the solution well, and the solution is adding parameters (ie: programmer can set number of times per week/month a subscriber can suspend PLUS the programmer can set a minimum amount of time the subscriber must be in suspend mode). Some applications may only use the limit of times per week/month while other applications may prefer a minimum time one must be in suspend mode while other applications may utilize both. But without parameters incorporated into the suspend option, the "suspend option" doesn't make sense.
Hi Brent, thanks for responding. We can already hide the suspend option from the site with some CSS (display:none), at least the actual suspend link had its own css class for that. It would be good I suppose for people who don't know they can hide it via css, but for my company, i NEED the suspend option, just with the ability to be able to not let our subscribers take advantage of the system by constantly suspending and re-activating their account (i believe something like the original poster mentioned seemed like a great idea)
Hi all, a quick note to let you know I'm keeping a close eye on this idea. A future version of Subscriptions will definitely give you some control over how customer's can suspend/cancel their subscriptions.
At this stage it will most likely come in the simplest possible form: simply allowing or disallowing suspension/cancellations.
But please keep posting your ideas for how you'd like to see it work. I'm reading all the feedback and will take them all into consideration.