Skip to main content
Switching platforms should not mean starting over. The importer brings over your products, your customers with their purchase history, and your email subscribers with their consent, from Gumroad, Lemon Squeezy, Stan Store or any platform’s CSV export.
Migration is part of the Volume plan. On Volume our team can also run the whole import for you, free: open a support ticket and we take it from there. You follow every step in your dashboard.

What comes over, and what never happens

Run an import

1

Pick where you are moving from

In the sidebar, under Catalog, open Import and choose Gumroad, Lemon Squeezy, Stan Store or Another platform.
2

Add your data

Connect your account with a personal API token (Gumroad and Lemon Squeezy), upload the platform’s CSV exports, or both. The token is used once to read your data and is never stored.
3

Review

Each file shows the columns we matched to each field and every row with its errors (an invalid email, a missing product name, an unpaid order, a duplicate). Fix a wrong column in Column mapping: every row is checked again. Rows with errors are left out, the rest are ready.
4

Dry run

See exactly what the import will create, what is already in your store (skipped), and what is left out — before anything is written.
5

Import

The import runs in the background; you can close the page. If anything interrupts it, it picks up where it stopped. Running it twice never creates anything twice.
6

Report

Imported, skipped and not-imported counts per kind of data, the products that still need their file (with a link to upload it), and a row report (CSV) with every row that was not imported cleanly and why.

Where to find each export

Columns we recognise

Column names are matched without caring about case or punctuation (Sale Price ($) reads as sale price). A column is used for one field only. Anything else is ignored, and you can always change the mapping.
Purchase ID → order ID · Item Name → product · Buyer Name → name · Purchase Email → email (required) · Purchase Date → date · Sale Price ($) → amount · Country · Fully Refunded? → refunded · Product ID
Email (required) · Name · Followed At → subscribed on
Identifier → order ID · Customer Email (required) · Customer Name · Product Name (required) · Total → amount · Currency · Status (pending, failed orders are left out) · Refunded · Created At
Email (required) · Name · Country · Status → subscribed is an opt-in, unsubscribed / bounced keep that status, archived and requires_verification are left out (no consent) · Created At
Customers: Name · Email (required) · Country · Date Joined. Income: Order Date · Product (required) · Customer Name · Customer Email (required) · Amount · Status · Order ID
Products: Name/Title (required), Description, Price or Price (cents), Currency, Image URL, Download URL, Product URL. Customers: Email (required), Name or First name + Last name, Country. Purchases: Email and Product (required), Amount, Date, Order ID, Refunded. Subscribers: Email (required), Name, Status, Do not contact, Tags.

Limits and checks

  • Up to 10 MB and 50,000 rows per file; split bigger exports.
  • Product files are downloaded only from public https:// links, up to your plan’s upload size, and only for deliverable file types (documents, archives, audio, video, images, fonts, design and 3D files). Web pages, expired links and other types are marked file needed with the reason.
  • Prices and amounts become cents ($1,049.50, 12,00 and 1049.5 all read correctly). A price in another currency is imported with a warning: check it before publishing.
  • New subscribers count toward your plan’s subscriber limit; the dry run says how many would go over it.
  • Source rows are kept 90 days for the row report, then deleted.

API, MCP and white-glove

Every step is in the public API (/migrations, with an API key) and the MCP server (create_import_job, dry_run_import_job, start_import_job, get_import_job, get_import_report …). See the Migrations API reference.