Introducing One-Click Migration from EDD to FluentCart
Day 2 of release week π and this is a big one.
Been working on this one quietly for a while, and we finally shipped it today.
We built a one-click migrator that moves your entire EDD store into FluentCart. Products, orders, customers, subscriptions, licenses, coupons, tax rates. All of it. In one run.
And yes, your subscriptions will keep running. This was the scariest part for us to build and honestly the part I am most proud of. Your existing Stripe and PayPal subscriptions keep billing your customers on schedule right after migration. No re-authorization, no awkward emails to customers, no payment hiccups. The next renewal just happens like nothing changed.
A few other things worth mentioning:
- Zero downtime for software license customers. If you sell plugins or themes, your customers' sites stay active through the whole thing. Nothing for them to reactivate.
- Fully resumable. Server times out, browser closes, connection drops. Does not matter. Reopen and it picks up right where it stopped.
- Built-in validation. Every order gets checked before it gets written. Bad data never makes it in.
- WP-CLI support for larger stores that want to run it from the terminal.
Designed so you can run it on staging first, review, reset, run again, and only move to production when you are happy with it. That is how we use it internally too.
This is just the start. WooCommerce and SureCart migrators are already cooking, coming soon.
If you have been waiting for the right moment to leave EDD, this is it.
Full write-up with all the details, what gets migrated, what does not, and how to run it: https://fluentcart.com/blog/edd-migration-to-fluent-cart/
Ooh, nice, Woo is likely to be the one most people want π
David ChurchillΒ True, but they cannot do it now as they have not done a major feature for physical products : global attributes (size : L XL... Color : blue, yellow...)
Nicolas DΒ Yes, those are the areas we have to work first. Everything is getting closer.
Wonderful, thanks! Will be testing this soon and will send feedback. Question, what happens if our existing subscriptions are with Paddle Classic, not Paddle Billing?
Good work. Now Woo, please! Am hanging in here...
Woo please
Great. πͺ I was shocked yesterday to see that FluentCart only has an upgrade function and no downgrade function? π³ Or did I miss something? Thanks. π₯°
CANNOT WAIT for the one-click SureCart migration. This will be HUGE for us. WAHOOOOOOOO!!!
Damn it! I just revised my FluentCart Review yesterday with your new additions, and now you have more improvements. I can't keep up with your team.
William BeemΒ 3 more upcoming updates have been scheduled this week! We are doing a release week π₯³
Shahjahan JewelΒ Good to know. I'll wait for the week to consolidate the updates to my review. It gives me a chance to make sure everything is still relevant.
Shahjahan JewelΒ is surecart migration one of them coz I can't wait to have that one
N_WanyagahΒ not in this release week. But we got lots of requests for SureCart migration.
Shahjahan JewelΒ Global attributes this week too ? (size : L XL... Color : blue, yellow...) this is a must have for any ecommerce site with physical products
Shahjahan JewelΒ I had a look at the full log, it looks like a very comprehensive migration tool, well done!
Unfortunately, EDD categories and tags are not migrated, so we'll probably have to keep all our free downloads with EDD and only use FluentCart with paid for products/subscriptions, especially until FluentCart handles free products better.
We have dozens of categories and tags for hundreds of downloads, it would take ages to remap everything manually.
Please consider supporting product tags in FluentCart and supporting categories and tags during migration in a future version.
Screenplay UnlimitedΒ we will take look with Categories. FluentCart does not support Tags. So maybe we will add Category Migrations as well.
Shahjahan JewelΒ Thanks, that would be great. Any reason why you couldn't import tags as part of the product taxinomy, even if FC doesn't support tags by default? We might then be able to select which products to display using shortcodes, and params such as tag="example" or tag_id="123"? That would be the main use for tags here, it doesn't matter if they are not handled by the front-end or back-end interface, though of course it would be great if it was possible to select tags in the product the same way we can select categories. You could rename the field if you fear they might be confused with FluentCRM tags. So EDD download "tags" could become FluentCart product "labels", or whatever you'd like.
Screenplay UnlimitedΒ Because FluentCart does not have Tags taxonomy.
Shahjahan JewelΒ I understand, but I was told by support in ticket #2254 that I could add a custom field using a tool such as Advanced Custom Fields, and then use that custom field for product filtering. What would prevent you from doing something similar during migration, so that we can have all the tags available for product filtering afterwards?
Screenplay UnlimitedΒ The migrator is on github so you can just ask your AI agent to add that feature and run the migration. https://github.com/fluent-cart/fluent-cart-migrator
Shahjahan JewelΒ Thanks, I might give this a try once the EDD migrator tool is finalised (hopefully with categories), if we decide to migrate our free downloads/products.
It might be simpler for us to just keep managing them in EDD, which is designed for that, unlike FluentCart, which doesn't handle free products well yet. I'll run a migration attempt and will send you feedback in a ticket if I detect other issues or have any suggestions.
I've opened a feature request ticket for better management of free products in FluentCart, in ticket #2253.
Thanks again!
Shahjahan JewelΒ Just got an idea after a first migration (I will send detailed feedback in ticket): Any chance to offer an option before import to map EDD download tags to FluentCart Brands during import? For those of us (membership sites, online course sellers) who only have one brand and won't ever use the FC brand field, this would resolve the problem, as we would use brands as tags, and it would be handled transparently by the existing taxonomy, both in the back end and in the front end for product filtering, etc. If you also handle categories, problem solved... Please say yes :)
Shahjahan JewelΒ Very impressed overall with the migration process, well done. I left initial feedback in ticket #2292
One word of warning to those about to test the tool: make sure you disable any renewal reminder. Even on the staging site with FC in test mode, an email was sent to an actual user (luckily I knew because I received a notice as an admin). The renewal date for that subscription wasn't until the 10th of May, so I wasn't expecting FluentCart to send anything.
How do we know that other emails won't be sent to the users from the staging site if renewals happen while we test? Even if payments are not actually taken thanks to sandbox test credentials on staging, it would be embarrassing.
Otherwise, great work, very smooth process, looks very promising!
Shahjahan JewelΒ Wondering if we should expect an improved version of the EDD migration tool soon (ideally with categories import and tags mapping to brands) based on feedback from the first users, or if you've moved to something else?
I've done lots of testing of FluentCart over the last few weeks, I love the product. I reported many issues and most of them have been solved quickly, so I'm hoping to be able to migrate soon.
Apart from categories/tags, the main question regarding the migration is whether FC will handle Paddle Classic subscriptions, or whether they will be left for EDD to handle until they are cancelled. It would be great if we could exclude these Paddle Classic subscriptions from the migration, or if the tool/FC could handle them.
Currently, I don't think that FC can handle these subscriptions as it only supports Paddle Billing credentials, and conversion from Paddle Classic to Paddle billing can be tricky. Thanks for letting us know!
Screenplay UnlimitedΒ I have created a doc for you for this work around. This is a one time work and can be done in 5 minutes:
https://github.com/fluent-cart/fluent-cart-migrator/blob/master/docs/MIGRATE-DOWNLOAD-TAGS.md
Shahjahan JewelΒ Thanks a lot, that's fantastic, I'm going to give this a try right away. Two questions: 1) Will say the Products block (or a shortcode) allow us to filter by tags? The main point of tags is to be able to only show say for example, all the products with the same tag; 2) What about categories? You said you might consider adding categories migration (EDD Downloads Categories > FluentCart Categories). Currently this isn't supported by the EDD migration tool.
Screenplay UnlimitedΒ we will add the category migration in the addon itself. I think the product block supports all the registered taxonomies.
Shahjahan JewelΒ Great, I'll test the tags with a test import of products only and I'll let you know. How do you plan to handle active Paddle subscriptions created with Paddle Classic credentials? I'm happy to leave them with EDD if they are not imported by the tool, but I don't think the tool can handle them at the moment as FluentCart only supports Paddle billing credentials, not the legacy Paddle Classic credentials. So the tool should either exclude these subscriptions (leave them in EDD), or FluentCart needs to support Paddle Classic credentials as well (having both types in parallel is fine, converting Classic to Billing can be very tricky, so the safest approach is to keep Paddle Classic subs until they are all cancelled, and create new subs using Paddle Billing credentials.
Screenplay UnlimitedΒ Supporting Paddle Classic will create lots of complexity on our end, which I don't want to do. EDD does not support paddle officially so we don't have any plan for support the classic when migrating. Please note, the payments will still be migrated but it will not work for recurring. So maybe you can cancel from your paddle dashboard. Or if that's not possible, you can keep using EDD.
Shahjahan JewelΒ Thanks, I completely understand that you don't want to support Paddle classic. My only concern is what happens when I import my orders, which contain some subscriptions that use PAddle Classic credentials. What I would like to avoid is what happened when I did a first test migration, and clients with an active subscription in EDD receiving emails from Fluentcart. How can this be handled so that even if we keep the Paddle Classic subscriptions in EDD, FluentCart doesn't think it's managing them, and starts sending emails about it (or get Paddle to send emails about these). That's really my only concern: how to migrate orders "cleanly", even if active Paddle Classic subs stay with EDD until they are all cancelled.
Shahjahan JewelΒ I've tested the tags migration, it works mostly fine: the tags taxonomy is created by the first snippet, the second snippet works fine as long as you create the WP-CLI command with the 3rd snippet (otherwise with the WP-CLI feature in Rocket.net, I get an unknown command when trying to run the eval based command).
The only issue is that when you do a dry run, all the products are detected (104) and all the tags are created (140), but when you run the actual command, only 56 tags are created (yet 140 tags are assigned):
Dry run:
products_processed: 104
tags_created: 140
tags_assigned: 0
skipped_no_map: 0
skipped_no_tags: 0
dry_run: yes
Success: Done.
Actual run:
products_processed: 104
tags_created: 59
tags_assigned: 140
skipped_no_map: 0
skipped_no_tags: 0
dry_run: no
Success: Done.
Otherwise, the tags that are created are present in the FC products side panel, and the tags can be used as you said in the Products block to filter the products shown on the front end, which is great, so we're very close :)
Regarding the Paddle Classic subscriptions, I had an idea: please could you give us the option in the next version of the migration tool to select subscriptions separately from orders? That way, those with paddle classic subs could simply uncheck subscriptions and yet import all the orders, payments etc. We'll just keep the existing subs in EDD until they are all cancelled. As long as new ones are created in FC using Paddle Billing, I think that would be a good workaround.
Shahjahan JewelΒ re the above, it looks like the dry run was misleading, I checked in EDD and I have only 64 actual tags. I double checked and it looks like 5 of them are never used, so this might explain why only 59 where created in the actual run. Anyway, looks like all the tags are migrated, so we're good on that front.
If you could separate the subscriptions from the orders and add categories mapping in the next version of the tool, I think we'll be good to go!
Many thanks again for creating this tags migration, much appreciated. I hope it will be useful to others!
Re the above, it would be even better if, in the next version of the migration too, we could exclude only the active subscriptions. That way, we would still be able to import/migrate the cancelled/expired ones into FluentCart. Thanks, looking forward to testing the new version of the migration tool!
Shahjahan JewelΒ Just a quick update. I spent the bank holiday week-end with Claude working on FluentCart :)
I created a plugin that handles tags migration, categories migration, downloads restrictions migration and "feature in store" migration. All these can now be migrated to FluentCart after the FluentCart migration tool does the bulk of the job, so I don't lose anything. After the migrations, you simply set the FluentCart shop to only show products with a "Feature in Shop" tag, and you don't flood your shop with free products, or products that can only be seen by some closed groups. I detailed all that in ticket #2253.
My plugin also hooks into the FC product editor and allows to change/set products restrictions, and enforce them, so that we can protect products according to roles, Learndash course, group and course completion access, as well as FluentCommunity spaces and courses access. I attach a few screenshots.
All works great and allows me to handle free downloads exactly as I wanted to in FluentCart, which is the way as I did it until now with EDD.
I've also investigated the bug in the Learndash Integration in FluentCart that failed to set the number of remaining access days after a subscription purchase per user (the number of remaining days was always the default course access), and produced a fix. I sent a full report, with the fix, in ticket #2245.
The only thing I need in order to migrate the production site to FluentCart is a way to exclude active subscriptions from the migration, as they use Paddle Classic (not Paddle Billing) and so won't be handled by FluentCart after the migration. Even worse, customers might get dual notifications, as they did with the first version of the migration tool. We really need to leave these subscriptions for EDD to handle, until they are cancelled, and then we can get rid of EDD.
Please can you confirm if we'll be able to do this (exclude active EDD subscriptions) in the next version of the migration tool, and when we can expect it? Otherwise, how do you suggest we deal with this?
Thanks again for all your help (especially the doc to migrate tags, that's what unlocked everything for me).
Any chance to make a similar one-click migration to move subscriptions from FluentForms Payments (Stripe) to FluentCart Subscriptions (Stripe)?
