Migrating to a New Subscription Plugin Without Losing Subscribers

Active subscribers are paying you on a schedule, and any disruption means lost revenue and support tickets. But staying on a plugin that does not fit your needs has its own cost: workarounds, limitations, and technical debt that compounds over time.

Here is how to migrate cleanly, whether you are moving from WooCommerce Subscriptions, WP Swings, or any other solution.

Before you touch anything

Export your current data. Download a full list of active subscriptions with their status, next payment date, billing amount, and payment method. A CSV from your current plugin or a database backup works. This is your safety net and your verification checklist after migration.

Know your numbers. How many active subscriptions do you have? How many are on automatic payment vs manual renewal? How many have active trials? These numbers tell you the scope of the migration and help you verify nothing was lost.

Pick a low-traffic window. Do not migrate on the first of the month when half your renewals are scheduled. Find a quiet period, ideally 3-5 days before your next batch of renewals, so you have time to verify everything before real charges go through.

The payment method question

This is the part that worries store owners most, and rightly so. Saved payment methods (cards, PayPal agreements, bank mandates) are what make automatic renewals work. If they do not transfer, every subscriber gets a “please update your payment method” email, and a percentage of them never will.

Stripe tokens are portable. If both your old and new plugin connect to the same Stripe account, the saved payment method tokens (stored as customer IDs and payment method IDs) carry over. The new plugin just needs to know where to find them. No customer action required.

PayPal billing agreements depend on the setup. If your old plugin created PayPal reference transactions or vault tokens under your PayPal account, they are still valid. The new plugin needs to use the same PayPal credentials and store the agreement IDs correctly.

The key rule: do not disconnect your payment gateway accounts during migration. Keep the same Stripe account, the same PayPal account. The tokens are tied to those accounts, not to the WordPress plugin.

Migration approaches

Automated migration tool

Some plugins offer a built-in importer that reads your existing subscription data and converts it. This is the fastest path when available.

What to look for in a migration tool:

After running the import: compare your pre-migration numbers against the new plugin. Same number of active subscriptions? Same next payment dates? Same payment methods attached? Go through 5-10 subscriptions manually and verify every field.

Manual migration for small stores

If you have fewer than 50 subscriptions, manual recreation might actually be faster and safer than debugging an automated tool. Create each subscription in the new plugin, copy the billing details, and verify the payment tokens.

Tedious, but you will understand exactly what happened to every subscription.

Testing before you go live

Process a test renewal. Find a subscription with a next payment date coming up soon (or create a test one) and let it renew through the new plugin. Verify the charge went through on Stripe/PayPal, the renewal order was created in WooCommerce, and the customer received the correct email.

Test the customer experience. Log in as a subscriber and check their My Account page. Can they see their subscriptions? Can they pause, cancel, change payment method? Does the next payment date look correct?

Test a failed payment. Use a Stripe test card that declines and verify the new plugin handles it correctly: correct order status, correct customer notification, no accidental cancellation.

The cutover checklist

On migration day, work through this in order:

  1. Put your store in maintenance mode (optional but reduces variables)
  2. Take a full database backup
  3. Run the migration (automated or manual)
  4. Verify subscription counts match your pre-migration export
  5. Spot-check 10 subscriptions: status, dates, payment method, customer
  6. Process one test renewal
  7. Deactivate the old subscription plugin
  8. Check the frontend: product pages, cart, checkout, My Account
  9. Take your store out of maintenance mode
  10. Monitor the first batch of renewals closely over the next 48 hours

After migration

Keep the old plugin files for 30 days. Do not delete them immediately. If something unexpected surfaces, you want the ability to reference the old code or temporarily reactivate.

Watch your first full renewal cycle. The real test is not migration day. It is the first week of renewals running through the new system. Monitor failed payment rates, check that emails are sending, and watch for support tickets about unexpected charges or missing access.

Tell your subscribers nothing. Unless the customer-facing experience is changing (different My Account layout, new emails), there is no need to announce the migration. Customers do not care what plugin you use. They care that their subscription works.


milosubscriptions includes a built-in migration tool for WooCommerce Subscriptions and WP Swings. It runs a dry-run report first, processes subscriptions in the background, and preserves payment gateway tokens so automatic renewals continue without interruption.