Moving off Paid Memberships Pro without cancelling anyone's card
Member records are the easy part. The migration is hard because recurring billing does not live in WordPress — it lives at the payment gateway, and the obvious approach quietly cancels every subscription you have. Most people arrive here because something forced the decision rather than because they chose it.
YOU ARE PROBABLY HERE BECAUSE
- your gateway is no longer supported by the plugin
- you have outgrown what Paid Memberships Pro does
- nobody can tell you whether members will need to act
What I can do for you
Three ways this runs, depending on how much time you have.
Migration feasibility check
Member counts by level, gateway configuration, whether your stored payment methods can carry across, and what state the old data is in. This answers the only question that matters — will your members have to act — before anyone quotes a price.
Full migration
Levels mapped, old data repaired, run twice on a clone, cutover with a tested rollback, then two billing cycles of reconciliation. Done twice in production with no interrupted payments.
Emergency migration
Your gateway support is being withdrawn and you are working to somebody else's timeline. The data clean-up compresses; the clone run and the rollback do not, because those are what stop an emergency becoming a disaster.
Forty-five minutes, no charge.
I will tell you which of these you need, including when it is the cheapest one.
Why the obvious approach loses your revenue
Most quotes for this job describe exporting members, importing them into WooCommerce, and asking everyone to re-subscribe. That works, in the sense that the site functions afterwards. It also asks every paying member to re-enter a card, and a meaningful share of them will simply not do it. For a membership business, that is the single most expensive way to change plugins.
It matters more than usual here because these migrations are rarely voluntary. Subscription plugins depend on payment gateway integrations, gateway integrations get deprecated, and when one you rely on is dropped you are working to somebody else's timeline with your recurring revenue on the line. I have done this migration under exactly that pressure.
Billing lives at the gateway
PMPro holds member records and level assignments. The actual recurring charge is a subscription object at Stripe or a billing agreement at PayPal. Deleting the WordPress side does not move it, and cancelling the WordPress side often cancels it for real.
Renewal dates get reset
Import members without reconstructing their billing schedule and everyone's next payment date moves. Some get charged early, some get free months, and your accounts no longer reconcile.
Levels do not map cleanly to products
PMPro levels with custom expiry rules, trial periods and discount codes rarely map one-to-one onto subscription products. The ones that do not are found during migration, not before, unless somebody goes looking.
Content protection rules differ
Level-based restriction and WooCommerce Memberships think about access differently. Migrate the members correctly and you can still lock people out of content they paid for.
The old data is already broken
Every one of these sites has orphaned records, members on cancelled levels, and duplicate rows from a plugin update years ago. Migrating them faithfully migrates the mess.
Your gateway support can be withdrawn
Every subscription plugin is a dependency on somebody else's roadmap. When a gateway integration is deprecated, sites relying on it have to move on a schedule they did not choose, and the ones that move badly lose the members they were trying to protect.
There is no dry run
The migration runs once against live billing. If the first time it executes is on production, you find out what you missed from your members rather than from a log.
How I actually do it
The sequence matters more than any individual step. Most of the risk is removed in the first three, before anything is written.
Read the old database before agreeing to anything
Member counts by level, active versus lapsed, gateway subscription identifiers present or missing, orphans, duplicates, and anyone in a state the plugin should not allow. This is where the real scope is, and it is why I will not quote a fixed price before seeing it.
Map levels to products, including the ones that do not fit
Every level, trial, discount code and expiry rule gets an explicit destination. The awkward cases get a decision from you in writing rather than a guess from me.
Establish what can carry over at the gateway
Whether existing customers, payment methods and subscription objects can be reused depends on your gateway, whether the account stays the same, and how PMPro was configured. This determines whether members keep paying silently or have to act — so it gets answered early, not discovered late.
Repair the old data in place
Fix what is broken while it is still in the system you understand. Migrating clean records into a new schema is a different job from migrating corrupt ones.
Run it on a clone, twice
Full copy of production, migration executed end to end, then billing observed against the real schedule. Anything that disagrees gets fixed and the whole thing runs again from scratch.
Cut over with a tested rollback
The rollback is written and rehearsed before the switch, not sketched on the night. I have never had to use one on this job. It exists so that the decision to proceed is not a nervous one.
Watch the first two billing cycles
Renewals are monthly or annual, so the migration is not finished on cutover day. Reconciliation continues until two full cycles have run clean.
Where this has been done
Sparketh
An online art education platform for young learners. Moved from Paid Memberships Pro onto WooCommerce Subscriptions as part of a wider rebuild, alongside an order migration and an LMS restructure. I led the work and a second developer.
PMPro → WooCommerce Subscriptions
LMS · order migration
2025 — 2026
Informed Citizen
Subscription and wallet system for a news and civic engagement platform. Same migration path, with a credit balance layered on top so members can hold and spend value rather than only hold access.
PMPro → WooCommerce Subscriptions
wallet · credit ledger
2025 — present
International Cinema Lighting Society
Six membership tiers on Paid Memberships Pro across nine languages including Arabic. I worked on it through Digital Silk; it is now maintained by them. Included because it is the case where migrating would have been the wrong call — the multilingual layer changes the cost of everything.
PMPro · not migrated
WPML · 9 languages · RTL
via Digital Silk, no longer maintained by me
What this does not include
A redesign
This is a billing migration. If the site also needs rebuilding, that is a separate piece of work with its own scope, and doing both at once is how migrations go wrong.
A guarantee that every member survives
If your gateway or configuration makes token carry-over impossible, some members will have to act. I will tell you that in week one, not month three.
Choosing your gateway for you
I will lay out what each option costs you in migration risk. Which processor you use is a business decision.
Talking you into it
Plenty of sites should stay on PMPro. If yours is one of them, that is the answer you will get.
Questions I get asked
Will members have to re-enter their card details?
Sometimes not, sometimes yes. It depends on your gateway, whether you keep the same gateway account, and how PMPro was set up. Establishing this is one of the first things I do, because the answer changes both the plan and the price. Anyone who promises you a seamless answer before looking at your setup is guessing.
Our payment gateway is no longer supported by the plugin. What are our options?
Three, honestly. Switch to a gateway the plugin still supports, which is the smallest change and sometimes the right one. Move to a platform that supports your gateway. Or stay and lose automatic billing, which is not really an option for anyone with more than a handful of members. Which is cheapest depends almost entirely on whether your stored payment methods can carry across, and that is the first thing I check.
How long does it take?
The migration itself is usually a few weeks. The clean-up of the old data beforehand is the variable, and on a site that has been running for years it can be longer than the migration. Then two billing cycles of monitoring before I consider it finished.
Can you do it without downtime?
Yes. Billing does not pause. That is the whole point of the approach — I have done it twice with no interrupted payments, on top of similar work moving thousands of subscribers at ProgressiveChristianity.
Should we move to WooCommerce Subscriptions at all?
Only if you need what it gives you: real products, coupons, reporting, an ecommerce ecosystem, or the ability to sell things that are not memberships. If you only need gated content and recurring billing, PMPro does that well and migrating is spending money to stand still.
What happens if something goes wrong on cutover?
The rollback is tested on the clone before we go. If the migration misbehaves we restore and nobody's billing is affected, because the gateway side is not touched until the WordPress side is verified.
Our gateway support is being dropped. How fast can you move?
Faster than the full process above, and I will be honest about what gets cut to do it. The data clean-up is what compresses; the clone run and the tested rollback do not, because those are what stop an emergency becoming a disaster. Tell me the deadline on the first call and I will tell you whether it is achievable.
Do you work through agencies?
Yes, regularly. About half my last decade was white-label work behind agencies. I work to your process and I do not appear in front of your client.
Send me your member counts
Levels, roughly how many active members, and which gateway. That is usually enough for me to tell you on a call whether this is a three-week job or a three-month one.