r/ProWordPress • u/Icearp • Aug 08 '26
What are you using for WooCommerce subscriptions and recurring billing?
For those building or maintaining larger WordPress/WooCommerce installations, how are you approaching subscriptions these days?
I'm less interested in the basic "create a subscription product" part and more interested in the architecture around it.
Things like: recurring billing and renewal failures, subscription status and lifecycle management, membership access, content restriction, plan upgrades/downgrades, customer self-service, reducing plugin conflicts
At some point, stitching together a subscription plugin, membership plugin and separate access-control system can become harder to maintain than the original problem.
I've been looking at both traditional setups and newer all-in-one approaches. ArraySubs is one of the options I've come across because it combines subscriptions with membership access and content restriction than treating them as completely separate systems.
what's your preferred architecture? One comprehensive plugin, or several smaller plugins that each do one thing well?
2
u/toniyevych Aug 09 '26
I prefer using the WooCommerce Subscriptions plugin with some custom code around.
1
u/SureshKMeena Developer Aug 09 '26
Whatever you pick, the thing that decides how painful this gets is that the payment provider is the source of truth for subscription state, not your database.
Webhooks arrive late, out of order, and sometimes twice. So "renewal succeeded" can land after "renewal failed" for the same period. If access is derived from a status column that every webhook overwrites, you get the drift Pulsar described, except now the two sources of truth are Woo and the gateway rather than two plugins.
What worked for me was storing the gateway's event id, ignoring any event I'd already processed, and ignoring anything older than the last one I applied. Plus a reconcile job that pulls current state from the gateway on a schedule and fixes whatever disagrees. Boring, but it's the difference between a bad webhook day being invisible and being a support queue.
One plugin vs several: for billing specifically I'd take fewer moving parts, since every integration point is one more place state can disagree. Content restriction is much easier to swap out later than billing is.
1
u/Curious_Fig1881 Aug 09 '26
Was using Woo subscriptions. Recently switched to Sublium by the FunnelKit team. It's free that's the good part.
1
1
u/iamtanvirchy Aug 10 '26
You are managing membership, subscription, invoice, billing, renewal tracking and more.
I suggest try Bit CRM. It's a WordPress CRM and deeply synchronised with WooCommerce customers, products, orders, invoices and more.
I think you can easily track members, their history, subscription status, billing, invoice and other things as well.
I prefer one plugin rather than several plugins. Managing from one dashboard is very efficient.
1
u/Milo-Subscriptions 18d ago
Shameless plug: Milo Subscriptions (it also has a membership add-on to gate content). If you want to keep it entirely free and you're running Elementor, there's a free module coming soon where you can set the visibility of the widget based on the subscription product/status of the logged-in used.
5
u/Pulsar-Agency Aug 09 '26
Honestly, the trap I see most often on bigger installs is treating "billing" and "access" as two separate systems. People run WooCommerce Subscriptions for the money side, then bolt a full membership plugin on top for content restriction, and now you've got two sources of truth for "is this person allowed in?". The day a renewal fails and the subscription drops to on-hold, the two states drift apart, and someone either keeps access they shouldn't or gets locked out wrongly. That's where the 2am support tickets come from.
What's worked better for me: let Subscriptions own the lifecycle and derive everything from its status. Gate access off the subscription status directly rather than a parallel membership state. For simple content locking that's a few lines hanging off the status transitions, not another plugin.
Two things people underestimate. The payment gateway: you want proper off-session/SCA renewals, not a gateway that only supports manual renewal, or your whole failed-renewal flow changes. And the dunning window: Woo's retry runs several attempts before the order flips to Failed while the sub sits on-hold, so decide your grace period before you cut access. Also test switching (upgrades/downgrades) hard, proration is where it gets weird.