# Move products between sites

> Export a product from one CBX site and import it into another — for example from a staging site to the live one.

Source: CBX documentation, version 3.x (released). Canonical page: https://docs.configbox.at/docs/admin-guide/products/move-products-between-sites. Last updated 2026-08-05.

---
> **Audience:** store admins · **Scope:** exporting and importing products between installations · **Last reviewed:** 2026-08-04

**What this does** — Builds a product a second time somewhere else, without rebuilding it. You
export one or more products to a single file, then import that file on another CBX site. The file
carries the whole product: its configurator pages, questions, answers, prices, calculations, rules
and images.

The usual reason is a **staging site**: you build and test a product where customers cannot see it,
then move the finished thing to the live store.

## Before you start

- Open **Product Transfer** in the CBX menu.
- You need the same access on both sites — the one you export from and the one you import into.
- Importing changes the receiving site. On a live store, take a database backup first.

## Export products

1. Use the filters to find what you want — search by **title or SKU**, narrow by **status**
   (published or unpublished), or pick a **product list**.
2. Tick the products to include. The counter next to the button shows how many are selected.
3. Click **Export selected**. Your browser downloads one `.zip` file containing every product you
   ticked.

The file is a transfer file, not a backup — it holds the products you picked and nothing else.

## Import a package

1. On the receiving site, open **Product Transfer** and choose the file under **Package file**.
2. Choose how the products should be created:

   - **Create as new products** — the products are added alongside what is already on the site, each
     getting a new ID. Use this when you are bringing a product *in*.
   - **Keep the original IDs (overwrite)** — the products replace the ones they came from, and
     anything the receiving site has that the file does not is removed. Use this to push an updated
     product from staging to live, so the two end up identical.

3. Click **Check package**. Nothing is written yet — CBX reads the file and reports what importing
   it would do.

## Read the check before you confirm

The check lists what it found, in three strengths:

| Strength | What it means |
|---|---|
| **Blocker** | The import cannot run. Fix what it names, then check the file again. |
| **Warning** | The import can run, but something will be lost or is not quite right. You decide. |
| **Notice** | Just so you know — no decision needed. |

Every warning has a tick box, and **Import now** stays disabled until you have ticked them all. The
common ones:

- **The CBX versions differ.** The two sites are on different versions of ConfigBox. This is often
  fine — it is telling you so you are not surprised.
- **A referenced record does not exist here.** The product points at something the receiving site
  does not have, such as a tax class or a customer group. CBX never creates these for you, because it
  cannot know your rates or prices are the same. Create the missing record first if it matters, or
  accept that the field will be left empty.
- **Products will be overwritten.** Only in *Keep the original IDs* mode.
- **Saved cart data will be deleted.** Also only in that mode: removing a question that customers have
  answered removes their saved answers with it. The message tells you how many. **This cannot be
  undone.**

## While it imports

Click **Import now** and CBX works through the file one product at a time, showing a progress bar and
listing each product as it lands. Large packages are handled in small steps on purpose, so nothing
times out.

If the page is interrupted — a dropped connection, a closed laptop — the products already imported
stay imported. Each product is written completely or not at all, never half.

## After importing

- Open each imported product and check it over: its pages, its prices, and anything the check warned
  you about.
- In **Create as new products** mode the imports arrive with the same titles as the originals. Rename
  them and their SEF segments if both are to live on the same site.
- Publish them when you are happy — an import does not change what is on the storefront until the
  product is published.

## Without a browser, for a scripted deploy

If the transfer is a step in a deployment rather than something you do by hand, both halves have a
command-line equivalent. They do exactly what the screen does, against the install whose checkout
they are run from:

```bash
php tools/export-product-package.php --sku=YOUR-SKU -o /tmp/product.zip   # on the source
php tools/import-product-package.php /tmp/product.zip --mode=exact --force   # on the target
```

The importer runs the **same check** the screen does and refuses on a blocker. `--force` is how you
accept the warnings: nobody is at the keyboard to read them, so they have to be accepted
deliberately rather than by default. `--dry-run` reports what would happen and imports nothing.

Ask your developer or host to run these — they need shell access to the site's files.
