Migrate to WooCommerce Subscriptions without breaking billing

A successful subscription platform migration is one where renewals, fulfillment, and billing are never interrupted, and your customers don’t even know something has happened.

A smooth transition is entirely achievable by utilizing the right planning. With WooCommerce Subscriptions, this comes down to choosing the right migration method and checking the details before you go live. 

Choose your path to migrate subscribers

↑ Back to top

There are 3 main ways to move subscribers into WooCommerce Subscriptions: 

  1. Enter subscribers manually. 
  2. Import subscriber data with a CSV file.
  3. Build a custom migration process. 

While subscriber count matters, focus on how cleanly your existing subscription data fits the new system.

PathwayBest forHow to do it
Manual subscriber migrationAn operation with fewer than 100 subscribers. This takes more hands-on work, but with a small subscriber base, it can be simpler than preparing and validating an import.Add each of your subscriptions manually via the Add Subscriptions screen in your dashboard.

You can connect each one to the right customer, product, billing schedule, and payment method. 
Bulk CSV importWhen you have hundreds or  thousands of subscriptions. This process works best when the source data is consistent and the required payment gateway information can be carried over.Via the WooCommerce importer extension (which is currently in public beta). You can learn more, download, and test the extension via the Subscriptions CSV Importer GitHub Repository.

Use the importer’s Test Mode to validate each row before creating subscriptions, so you can fix mapping errors and warnings first. 
Custom migration scripsWhen migrating subscribers calls for special data or billing handling, custom scripts are the way to go. Custom code is best when the standard importer can’t cleanly handle the migration due to complexity, like when you need to bring over specific records or if you work with a non-standard payment gateway.The Subscriptions developer API gives custom migration script functions for creating those subscriptions and setting the renewal data for each one. Instead of forcing unusual source data into a CSV template, the script translates each record into the right WooCommerce subscription as the tool imports it.

WooCommerce stores each subscription as a WC_Subscription object, an extension of the standard WooCommerce order object with additional data for things like billing schedules and next payment dates. 

Switching the payment gateways

↑ Back to top

Migrating a subscription and moving its saved payment method are different considerations. You can successfully import the customer, product, billing schedule, and next renewal date, but you’ll need to do a bit more work to set up subscription renewals.

That’s because payment processors don’t hand WooCommerce a customer’s card number. They store cards securely and provide payment tokens that point back to the stored card. WooCommerce Subscriptions requires the right payment token, along with any other gateway-specific payment data, to tell the processor which saved payment method to charge.

When you change gateways, those data reference points won’t automatically follow the subscription to a new payment setup. In some cases, you’ll need to update payment tokens manually or ask subscribers to update their payment method. This depends largely on the payment gateway you use. 

Examples of migration paths for different gateways

Stripe is a good example of what clean payment gateway mapping looks like. WooCommerce Subscriptions uses a Stripe Customer ID and Payment Method ID to connect a subscription to the card Stripe has stored. 

If your old system already stores those IDs in a compatible format, you can connect them to the migrated subscription. If it stores them differently, you’ll need to translate that data or ask customers to update their payment information.

PayPal requires a bit more work. You can’t import existing PayPal Standard subscriptions into WooCommerce Subscriptions. PayPal Standard relies on payment notifications tied to the original site, and PayPal doesn’t reliably let that connection move with the subscription. 

That means that you’ll either need to allot time to manually reattach each subscription to its payment method or prompt subscribers to update it themselves from My Account → Subscriptions.

editing a subscription ID in WooCommerce

What to check before you flip the switch

↑ Back to top

A successful import doesn’t mean you’re ready to turn on renewals. Before you go live, there are a few important questions to ask:

  • Has the old system stopped charging customers? 
  • Do imported subscriptions point to the right products?
  • Are the next payments scheduled for the right day? 

Make sure only one system can collect the next renewal

Moving a subscription into WooCommerce Subscriptions doesn’t necessarily tell your old platform to stop billing — and you don’t want customers to be billed twice. How you shut off renewals depends on the system, so verify the process and add it to your checklist. 

Verify that subscriptions are connected to the right products

In the CSV importer, each subscription’s line items must point to products that exist in the new store. Product IDs from the old system won’t help if they don’t match the right products in WooCommerce.

Map product data before importing, then spot-check it afterward. A subscription that renews on time but delivers the wrong product will frustrate customers.

Check the next payment date

WooCommerce Subscriptions needs to know how often a customer pays (weekly, monthly, annually) and when each customer pays next. The CSV importer accepts an explicit next_payment_date. 

If one isn’t provided, WooCommerce can calculate a date from the subscription’s start or trial date and billing schedule. For an existing subscriber base, compare imported next-payment dates with the source system so customers stay on the schedule they already expect.

Confirm your live store is taking payments

WooCommerce Subscriptions has a Staging Mode that disables automatic payments on a duplicate site. 

Before launch, check WooCommerce → Status and confirm the production store is in Live Mode and any testing copy is in Staging Mode. 

Don’t rely on the word “staging” in a URL. WooCommerce Subscriptions determines the URL based on several factors, so always double-check.

Spot-check the migration

As a final step, pick subscriptions with different products, billing schedules, statuses, and payment methods, and compare the imported record with the source. 

The goal isn’t merely to see that 2,000 rows became 2,000 subscriptions. Spot-check enough subscriptions to confirm details like product ID, payment method, status, and next renewal date. 

Send a subscriber update email

↑ Back to top

Subscribers whose payment information carries over cleanly during migration shouldn’t need to do anything. Focus your communications on the customers who need to take action.

For example, if a saved payment method like PayPal Standard can’t be carried over, send those subscribers a separate email before their next renewal. 

With a tool like Import Export Suite, you can export subscriptions to a .CSV file, filter them by payment method, and then upload the file to your email marketing tool to email them in bulk. 

Explain what changed, what they need to do, and when they need to do it.

Here’s an email template you can adjust based on your situation:

Subject: Please update the payment method for your [Brand] subscription

We’ve moved to a new subscription management system to better serve our customers.

Your subscription is still active, but we weren’t able to carry over the saved payment method used for automatic renewals.

Please update your payment method before your next renewal on [date] to continue receiving expected orders:

[Button/link: Update payment method]

Your products, pricing, and renewal schedule haven’t changed.

Questions? Reply to this email and we’ll help.

Watch the first renewals after migration

↑ Back to top

Once the migration is live, watch the first group of subscriptions that reach their renewal date to confirm you’re not double-billing customers. 

Ensure each subscriber is charged once, by the right system, on the right date. You can also confirm that each renewal creates the expected order and leaves the subscription in the correct status. 

A failed renewal doesn’t always mean the migration failed. Cards expire, and banks decline payments every day. But if failures cluster around migrated subscribers or a particular payment method, that’s your sign to dig deeper.

If something looks wrong, start with one affected subscription and check the associated order notes. Then look at WooCommerce → Status → Scheduled Actions for failed or stuck renewal actions. 

WooCommerce also keeps gateway and scheduled-action logs under WooCommerce → Status → Logs, which can help pinpoint whether the problem happened before the charge, at the payment gateway, or afterward.

You’ll know it worked if nobody says anything

↑ Back to top

The biggest sign of a successful migration is silence from customers. Do it right and you’ll avoid support tickets about duplicate charges, frustrated emails, and the scramble to explain what happened to someone’s renewal. 

Once the migration is in your rearview mirror, WooCommerce Subscriptions takes over the recurring work. It automates renewals, includes an automatic failed-payment retry system, supports recurring payments through 25+ compatible gateways, and lets customers update payment details through self-service.

A migration takes care and attention, but the payoff is a subscription operation that’s easier to manage and gives customers fewer reasons to notice the machinery behind it.

Your first step? Identify the migration path that best fits your subscriber base, payment gateway, and data structure.

Request Woo Enterprise
shanibanerjee Avatar

About

Products related to this post

Maximize revenue with the new checkout from Stripe.

On this page

Products related to this post

Maximize revenue with the new checkout from Stripe.

Leave a comment Leave a reply

Your email address will not be published

Never miss a beat — join our mailing list

View our privacy policy. You can unsubscribe anytime.

Subscribing...

There was an error subscribing; please try again later.

Thanks for subscribing!
Emails will be sent to

You're already subscribed!
Emails are sent to

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.