> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pocketsflow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Move your store to Pocketsflow

> Import your products, customers, purchase history and email list from Gumroad, Lemon Squeezy, Stan Store or any CSV. Free on Volume, or let our team do it for you.

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.

<Note>
  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.
</Note>

## What comes over, and what never happens

| Data | How it lands | What it never does |
| - | - | - |
| Products | Created **unpublished**, with name, description, price and image. The file is downloaded into your storage when the export has a download link, otherwise the product is marked **file needed**. | Never goes live on its own. |
| Customers | Added to **Customers**, marked **Imported**. Customers you already have are left as they are. | Never counted as new customers in your analytics. |
| Purchase history | Saved on each customer as **Imported history** (product, amount, date, refunded). | Never a sale: no revenue, no fee, no payout, no webhook, no receipt. |
| Email subscribers | Added to **Subscribers** with where their consent comes from (the platform and the export). People who unsubscribed or bounced keep that status. | **Nobody is emailed** by the import, and no automation starts. Addresses that bounced or reported spam before are left out. |

## Run an import

<Steps>
  <Step title="Pick where you are moving from">
    In the sidebar, under **Catalog**, open **Import** and choose Gumroad,
    Lemon Squeezy, Stan Store or **Another platform**.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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.
  </Step>
</Steps>

## Where to find each export

| Platform | Data | Export |
| - | - | - |
| Gumroad | Purchase history, customers | Analytics → Sales → **Download CSV** |
| Gumroad | Email subscribers | Audience → Followers → **Export** |
| Gumroad | Products | No CSV: **connect** your account (Settings → Advanced → Applications → access token) |
| Lemon Squeezy | Purchase history | Orders → **Export** |
| Lemon Squeezy | Customers, email subscribers | Customers → **Export** (the Status column says who opted in to marketing) |
| Lemon Squeezy | Products and their files | **Connect** with an API key (Settings → API) |
| Stan Store | Customers, email subscribers | Customers → **Export CSV** |
| Stan Store | Purchase history | Income → **Export CSV** |
| Any platform | Anything | A CSV with a header row; map the columns in the Review step |

## 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.

<AccordionGroup>
  <Accordion title="Gumroad — sales CSV (purchase history)">
    `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`
  </Accordion>

  <Accordion title="Gumroad — followers export (subscribers)">
    `Email` (required) · `Name` · `Followed At` → subscribed on
  </Accordion>

  <Accordion title="Lemon Squeezy — orders export (purchase history)">
    `Identifier` → order ID · `Customer Email` (required) · `Customer Name` ·
    `Product Name` (required) · `Total` → amount · `Currency` · `Status`
    (`pending`, `failed` orders are left out) · `Refunded` · `Created At`
  </Accordion>

  <Accordion title="Lemon Squeezy — customers export (customers, subscribers)">
    `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`
  </Accordion>

  <Accordion title="Stan Store — customers and income exports">
    Customers: `Name` · `Email` (required) · `Country` · `Date Joined`.
    Income: `Order Date` · `Product` (required) · `Customer Name` ·
    `Customer Email` (required) · `Amount` · `Status` · `Order ID`
  </Accordion>

  <Accordion title="Any CSV">
    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`.
  </Accordion>
</AccordionGroup>

## 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](/api-reference/migrations).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.