How to successfully migrate to WooCommerce plans

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

A smooth transition is completely achievable by using the right planning. With WooCommerce Subscriptions, this comes down to choosing the right migration method and checking the details before going live.

There are three ways to move subscribers to WooCommerce plans:

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

While the number of subscribers is important, you should focus on how well your existing subscription data fits into the new system.

Away Best for How to do it
Manual subscriber migration An operation with less than 100 subscribers. This requires more hands-on work, but with a small subscriber base it can be easier than preparing and validating an import. Manually add each of your subscriptions from the Add Subscriptions screen in your dashboard.

You can link them all to the right customer, product, billing schedule, and payment method.

Bulk CSV import When 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 transferred. 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 resolve map errors and warnings first.

Custom migration scripts When migrating subscribers requires special data or billing, custom scripts are the way to go. Custom code is best when the default importer can’t gracefully handle the migration due to complexity, such as when you need to transfer specific records or if you’re working with a non-standard payment gateway. The Subscription Developer API provides custom migration script functions for creating these subscriptions and setting the renewal information for each subscription. Instead of forcing unusual source data into a CSV template, the script translates each record into the correct 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.

Migrating a subscription and moving the 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 little more work to set up subscription renewals.

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

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

Examples of migration paths for different gateways

Stripe is a great example of what clean payment gateway mapping looks like. WooCommerce Subscriptions uses a Stripe customer ID and a payment method ID to associate a subscription with the card that Stripe has on file.

If your old system already stores these IDs in a compatible format, you can associate them with the migrated subscription. If the data is stored differently, you will need to translate that data or ask customers to update their payment information.

PayPal requires a bit more work. You cannot import existing PayPal Standard plans into WooCommerce plans. PayPal Standard relies on payment notifications tied to the originating site, and PayPal doesn’t reliably scale that connection with the subscription.

That means you either have to spend time manually re-linking each subscription to the payment method, or ask subscribers to update it themselves from My account → Subscriptions.

edit a subscription ID in WooCommerce

A successful import does not mean you are ready to enable 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 correct products?
  • Are the next payments on the correct day?

Ensure that only one system can collect the next renewal

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

Verify that subscriptions are associated with the correct 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 don’t help if they don’t match the right products in WooCommerce.

Map product data before importing and then check it on site. A subscription that is renewed on time, but delivers the wrong product, will frustrate customers.

Check the next payment date

WooCommerce subscriptions need to know how often a customer pays (weekly, monthly, yearly) and when each customer then pays. The CSV importer accepts an explicit next_payment_date.

If none is specified, WooCommerce can calculate a date based on the subscription’s start or trial date and billing schedule. For an existing subscriber base, compare imported data for the next payment against the source system, keeping customers on the schedule they already expect.

Check if your live store accepts payments

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

Check before launch WooCommerce → Status and confirm that the production store is in Live mode and that any test copies are 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.

Check the migration carefully

The final step is to choose subscriptions with different products, billing schedules, statuses, and payment methods, and then compare the imported record to the source.

The goal isn’t just to turn 2,000 rows into 2,000 subscriptions. Check enough subscriptions to confirm details such as product ID, payment method, status and next renewal date.

Subscribers whose payment information is transferred gracefully during the migration do not need to take any action. Focus your communications on the customers who need to take action.

For example, if a saved payment method like PayPal Standard cannot be transferred, 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 has changed, what they need to do and when they need to do it.

Here’s an email template you can customize 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.

Once the migration is live, you can review the first group of subscriptions that have reached their renewal date to ensure you are not double-billing customers.

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

A failed renewal does not always mean that the migration has failed. Cards expire and banks refuse payments every day. But if the errors occur around migrated subscribers or a particular payment method, that’s a sign to dig deeper.

If something seems wrong, start with one affected subscription and check the associated order notes. Then take a look WooCommerce → Status → Planned actions for failed or stuck renewal actions.

WooCommerce also keeps logs of gateways and scheduled actions WooCommerce → Status → Logswhich will help you determine if the problem occurred before the charge, at the payment gateway, or afterwards.

The biggest sign of a successful migration is the silence of customers. Get it right and you’ll avoid support tickets about double charges, frustrated emails, and the struggle 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 retry system for failed payments, supports recurring payments through more than 25 compatible gateways, and lets customers update payment information via self-service.

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

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

Request Woo Enterprise
shanibanerjee Avatar

Shani is a developer advocate for WooCommerce. You can find her in the WooCommerce Community Slack and on the Woo Developer Blog discussing the latest and greatest in WooCommerce!

Leave a Comment