Shouldn’t coupons be valid indefinitely and used without limitations if wanted?
Yes, they should be. Are you sure there are no usage limits in the coupon’s settings?
Maybe check to make sure another plugin isn’t causing this issue as well.
Are you sure there are no usage limits in the coupon’s settings?
Yes, I am sure there are no usage limits.
I don’t know if it’s plugin conflict. I can’t test for that on live site, and on development site, I haven’t been able to generate the same “Coupon usage limit has been reached.” message.
Out of curiosity, around how many times are these coupons being used? If we are talking thousands, then I can maybe think of a related issue.
If just a couple hundred times, then I’m not sure what could be going on.
It’s less than a couple hundred. The last one was maybe less then 10. And the usage doesn’t seem to be counting correctly in admin. In WooCommerce > Coupons it shows usage as “0”. In Reports, shows usage as 1.
Sounds like you have something conflicting with the core processes then.
Need to find a way to replicate the issue on your staging site – so you can start to rule out other plugins and such.
Thanks Caleb. I am unable to reproduce the issue on staging. Code and Plugin set/versions are mirror copies. There are some differences in the environment. Live has cloudflare caching and secure certificate. Staging does not. Also staging supports PHP 5.3.3 and Perl and Python. Live supports PHP 5.6.24
They are expiring on live site after a single redemption.
My guess is that you have something wrong with your caching configuration then.
Maybe check out: https://docs.woocommerce.com/document/configuring-caching-plugins/
Thanks again Caleb,
I found code in child theme’s functions.php that was limiting coupon usage to 1 for a custom application.
What I had difficulty wrapping my head around is that this did not effect other coupons in mirror dev site – only in live. Disabling server side caching on live still did not resolve issue.
For now I have commented out suspect code.
Hi ignite2x,
I’ve got the same problem – could you share with the solution you came up with? That is, which part of the code exactly is responsible for the malfunction? Should I add / delete / modify any part?
Cheers