Skip to main content
Import and export are Pro features. On the free version the routes aren’t registered at all, so a request 404s like any unknown route. The admin still shows every export and import control, locked with a Pro tag, so you can see what CartPresets for WooCommerce Pro adds.
Presets export as JSON and import somewhere else. The usual use is moving a staging store’s work to production without rebuilding it by hand.

Exporting

One preset: Export as JSON in the row menu on the list, or Export JSON in the editor’s menu. Several: tick them in the list, choose Export JSON from the bulk actions, and apply it. To export everything a search or filter matches, select all across pages first. All of them: Settings → Data management → Preset data → Export presets. There’s no limit on how many presets one file holds. The file holds the presets, their items, and every setting on both. It doesn’t include your store settings, your wording overrides or any order data.
The export is plain JSON, so it diffs readably. Commit it to a repository and you get a version history of your presets, which the plugin itself doesn’t keep.

Importing

On the destination store, go to Settings → Data management → Preset data → Import presets. Choose the .json file, or drop it on the dialog, and click Import. One import takes up to 500 presets and 5,000 items across them. A bigger file is refused whole, before anything is written, and the message tells you to split it. Import the parts one at a time.

Every preset is checked like a save

Each preset in the file goes through the same checks as saving it in the editor. One the editor would refuse, such as a preset with no items, a product that can’t be found, or a custom redirect with no address, is skipped. So is one with a value of the wrong type, such as a list where text belongs. Quantities are read the way a save reads them: a blank quantity means one, and anything that isn’t a whole number in the allowed range is refused. The rest of the file still arrives. When it’s done, the dialog says how many presets were imported and lists each one it skipped, with the reason. A skipped preset with no name is listed by its place in the file. Everything is checked before anything is written, so a bad preset late in the file can’t stop the import halfway. On a slow or small server, a very large import can still stop between presets to stay inside the server’s time and memory limits. It always imports at least one. When it stops early, the dialog says so, and the presets it didn’t reach are in the skipped list. Import those from a smaller file. The REST answer has the same list.

How products are matched

Products are matched by SKU first, falling back to product ID. The SKU is what matters. Product IDs almost never line up between two stores: the same hoodie is #412 on staging and #1908 on production. A SKU is a name you chose, so it usually survives the move.
An ID-only match is a guess. If your two stores have unrelated product IDs, an import can quietly attach the wrong product. Check imported presets before you activate them. They all arrive inactive, as the next section explains.
A variation is matched by its own SKU. The export records each variation’s SKU beside its ID, or leaves it empty when the variation has no SKU of its own. A variation item never quietly turns into the whole variable product. Moving presets between stores works best when your variations have SKUs on both.

Every import arrives inactive

Whatever the status was on export, imported presets land inactive. No link goes live until you choose. You get to open each one, check the items matched the products you expected, look at the Health checks, and activate when you’re ready.

Slugs

An imported slug that’s already taken on the destination store gets a numbered suffix, the same way a manually created one does. The import never overwrites an existing preset.
Importing the same file twice gives you two copies. An import never updates presets that are already there.

What does not travel

Link a carrier product on the destination store before you import presets containing custom items. Without one, those items can’t be added to a cart, and each such preset’s Health checks warn that custom items need a carrier product.

For developers

The routes are cartpresets/v1/presets/export and cartpresets/v1/presets/import, registered by Pro on the shared cartpresets_register_rest_routes action. On free nothing listens, so neither route exists. See the REST API.
Last modified on September 28, 2026