Skip to content

What Gets Migrated

Before you run a migration, it is worth knowing exactly what comes across, what doesn't, and why. This page covers both — so there are no surprises after the wizard finishes.

What is migrated

Products

Every EDD download transfers as a FluentCart product, with the structure preserved.

EDD conceptBecomes in FluentCartNotes
Simple downloadSimple productSingle price tier
Variable pricingProduct variationsOne variation per EDD price option
Product bundleProduct with bundle child referencesChild IDs stored in line metadata
Recurring downloadSubscription productBilling intervals: daily, weekly, monthly, quarterly, half-yearly, yearly
Title, description, slug, author, datesSameUnchanged
Featured imageSameSame media library reference
Signup feesVariation other_infoStored alongside pricing
License limits per variationVariation license limitOnly when EDD Software Licensing is detected

A bidirectional ID map is created so re-running the migration updates rather than duplicates: _fcart_migrated_id on the EDD post points to the FluentCart record, and _edd_migrated_from on the FluentCart product points back.

Customers

Customer records transfer with full identity and address data, deduplicated on email.

  • Full name, email address
  • WordPress user account association if one exists by email
  • Addresses: country, state, city, postal code
  • Lifetime value, purchase count, average order value, first/last purchase dates — recalculated from the migrated orders during the Recount & Verify step

If a customer with the same email already exists in FluentCart when an order is being migrated, the order is linked to the existing record rather than creating a duplicate.

Orders and Payments

Every order with a meaningful status transfers — including all line items, taxes, discounts, transactions, and notes.

EDD statusFluentCart payment status
complete, processing, edd_subscription, publishPaid
pendingPending
refundedRefunded
partially_refundedPartially Refunded
revoked, failed, cancelledFailed

Each order brings:

  • Order ID (preserved from EDD)
  • Subtotal, tax, shipping, discount, line total
  • Currency and payment mode (test/live)
  • Billing address
  • Line items: product ID, variation ID, quantity, unit price, subtotal, tax, discount, fulfillment type
  • Bundle child items (where applicable)
  • Transaction records with gateway, transaction ID (Stripe charge ID, PayPal subscription ID), amount, currency, date
  • Refund records (amounts and dates)
  • Applied coupon codes with the discount amount
  • Order notes from edd_notes

Subscriptions

When EDD Recurring Payments is in use, every subscription comes across with its complete state.

FieldBehavior
Statusactive, cancelled, expired, completed, pending, failing, trialling mapped 1:1
Billing intervalPreserved (daily through yearly)
Bill times limitPreserved
Signup feeCalculated as the delta between initial and recurring amount
Start date, renewal date, expiration datePreserved
Vendor subscription IDStripe vendor_subscription_id, PayPal subscription ID
CurrencyPreserved
Activities/notesFrom edd_notes with object_type='subscription'
Renewal order historyLinked via parent_id on each renewal order

After import, the Recount & Verify step rebuilds bill counts from actual renewal orders, marks subscriptions completed where they have hit their bill-times limit, auto-links orphaned renewals by parent order ID, and generates UUIDs for any missing entries.

Software Licenses

For stores running EDD Software Licensing, this is the most consequential part of the migration. License keys, activation limits, expirations, and every active site activation transfer with full fidelity.

ItemBehavior
License keyPreserved exactly
Statusactive, inactive, expired, disabled mapped 1:1
Activation limitFrom license record, or _edd_sl_limit meta override
Expiration dateConverted to FluentCart format
Product, variation, order, customer associationsAll linked
Site activationsEvery URL preserved, normalized via FluentCart's site URL formatter
Site activation status, hash, datePreserved
Renewal license linkageLinked back to the original subscription

This means your customers do not need to deactivate and reactivate their installs. The sites they have running stay running.

FluentCart Pro requirement

License migration requires FluentCart Pro, since the license module lives there. The Migrator detects EDD Software Licensing automatically and enables the license module on first run — no separate setup step.

Coupons

Every EDD discount code transfers with its rules intact.

  • Code (exact string)
  • Discount type: flatfixed, percentagepercentage
  • Discount amount
  • Status: active or disabled
  • Usage limits: max total uses, max per customer (once_per_customer)
  • Date range: start date, end date
  • Minimum purchase amount
  • Product restrictions: included products and excluded products, with EDD product IDs converted to FluentCart product IDs via the migration ID map
  • Recurring behavior: applies to first payment only vs. all renewals
  • Notes / description
  • Affiliate association if AffiliateWP meta is present
  • Use count: recalculated from applied coupons on paid orders during recount

If a coupon code already exists in FluentCart, the migration updates that record. Otherwise, a new one is inserted. Re-running coupon migration is safe.

Tax Rates

Tax migration is conditional. It only runs if edd_settings.enable_taxes is true. If taxes are disabled in EDD, this step is skipped with a clear notice.

When enabled, the migration brings:

  • Currency position (before / after)
  • Decimal separator (dot / comma)
  • Store name, address, city, state, country, postcode
  • Tax-inclusive vs. exclusive pricing behavior

It then generates FluentCart's default tax classes (Standard, Reduced, Zero) and tax rates for every country found in the EDD tax rates table. The mapping between EDD rates and the new FluentCart rates is stored in _edd_fct_tax_rate_maps so order-level tax adjustments stay accurate.

Not a 1:1 rate copy

FluentCart's tax model differs from EDD's. The Migrator generates modern FluentCart tax rates for the relevant countries rather than copying every EDD rate as-is. Review your tax setup after migration to confirm it matches your jurisdictional requirements.


What is NOT migrated

Honesty about boundaries matters more than a longer feature list. The following items are deliberately out of scope.

Product categories and tags

EDD's download_category taxonomy and any custom taxonomies do not transfer. FluentCart's category model differs structurally, and a one-to-one mapping would mislead more than help. Set up your categories fresh in FluentCart after migration.

EDD upgrade paths

The EDD upgrade-path mechanic — the ability for a customer to upgrade from one product or pricing tier to another — is not modeled in FluentCart's schema and is not migrated. If you rely on upgrade paths, plan how to handle them in FluentCart before switching over.

Custom product and order metadata

Only known fields from EDD core, EDD Recurring Payments, EDD Software Licensing, and AffiliateWP are parsed. Custom meta written by other third-party EDD add-ons is not preserved. If you have important custom data on products or orders, export it separately before migrating.

Abandoned and trashed orders

Orders with status abandoned or trash are explicitly filtered out. Only orders representing real transactions transfer.

Payment gateway credentials

Transaction records — Stripe charge IDs, PayPal subscription IDs — come across, so renewals continue to process correctly. Gateway API keys themselves never transfer. Reconnect Stripe and PayPal in FluentCart after migration using the same accounts you used in EDD.

Email templates

EDD's email settings are not migrated. FluentCart has its own notification system with its own templates. Review and customize them under FluentCart > Settings > Email Configuration.

Download file attachments

Products are created. The actual downloadable files attached to each product are not automated. File paths, permissions, and storage architecture differ enough between platforms that an automated transfer would silently break delivery for customers. Open each digital product in FluentCart and confirm the file is linked under Downloadable Asset(s).

Download history logs

EDD's edd_file_download_logs table is not read. License site activations are preserved (those are functionally different and serve a real ongoing purpose), but historical file download events are not.

Refund reason text

Refund amounts and dates transfer as part of the order. The reason text — which EDD only stores inside order notes — is not extracted into a separate field.

Dry-run mode

All operations in 1.0.0 are live. There is no preview mode. To rehearse a migration safely, use Developer Mode on a staging environment, run the full migration, review the result, then reset and run again.


At a glance

EntityMigrated?Notes
Products (simple, variable, bundle, recurring)Categories not migrated
Product images and content
Custom product meta from third partiesOnly known fields parsed
CustomersDeduplicated by email
Orders (all real statuses)Abandoned and trash excluded
Order line items, taxes, discounts
Transactions (Stripe, PayPal, custom)IDs preserved
Refunds (amount + date)Reason text not extracted
SubscriptionsBill counts rebuilt during recount
Software licensesRequires FluentCart Pro
License site activationsURLs normalized
CouponsCategories on coupons not migrated
Tax ratesOnly if enabled in EDD
Payment gateway credentialsReconnect in FluentCart
Email templatesSet up fresh in FluentCart
Downloadable file attachmentsRe-attach in each product
Download history logs
Product categories / tags
EDD upgrade paths
Abandoned / trashed ordersIntentionally excluded

Next steps

Now that you know exactly what's in scope, head to the Migrating from EDD walkthrough to run your first migration.