Order Barcodes for WooCommerce

How to Clone a WooCommerce Store: Settings, Products, and Orders

“Clone the store” sounds like one thing. It isn’t. Depending on what you actually need, it’s three different operations with three different sets of traps — and the wrong choice is how you end up with staging emailing real customers, or production missing yesterday’s orders.

Back up the layer every backup plugin misses. SnapSettings exports your WooCommerce configuration — shipping zones, tax rates, core options — to one file and restores it without touching orders or products.

View SnapSettings →

This post is for developers and agencies who need to clone a WooCommerce store and want to do it once, correctly. It assumes you know your way around WP-CLI and a database.

How to Clone a WooCommerce Store: The 3 Types Explained

Before you pick a tool, decide which problem you’re solving. The hazards of each are different.

1. Full-store clone (everything, point-in-time). You want an exact copy of the live store at this moment — files, plugins, settings, products, orders, customers. This is the right shape for spinning up a staging environment, doing destructive testing, or migrating to a new host.

2. Settings + products clone (no orders). You want a fresh environment that looks and behaves like production but doesn’t carry historical order data. Common for building a sister store, opening a second region, or setting up a clean dev environment that won’t leak PII.

3. Surgical clone (specific data, ongoing). You need to keep two stores in sync on a subset of data — pulling new orders from production into a reporting environment, pushing settings changes from staging to production, replicating the catalog across stores. This is the one most people get wrong by reaching for a full-image tool.

If you can’t say which one you need, stop and figure it out. The rest of the work depends on it.

What Data You’re Actually Cloning in a WooCommerce Store

A clean mental model saves hours of debugging later. WooCommerce data sits in four buckets:

Bucket Where it lives Notes
Settings wp_options (mostly), some custom tables Heavily serialized. Includes payment gateway config, shipping zones, tax rates, email templates.
Catalog wp_posts (product, product_variation), wp_postmeta, wp_terms* Plus media files in wp-content/uploads/.
Customers wp_users, wp_usermeta Hashed passwords are portable; cookies and sessions are not.
Orders wp_wc_orders and friends (HPOS), or wp_posts (legacy) This is the one that’s changed most recently — see HPOS below.

If you only remember one thing: settings are the hardest to clone, not orders. They’re scattered across dozens of wp_options rows, often serialized, and they reference things (URLs, file paths, gateway endpoints) that need to change in the destination.

Method 1: How to Clone a WooCommerce Store (Full Copy with Duplicator)

For a one-shot full clone — staging spin-up, host migration, disaster-recovery snapshot — Duplicator (free on wordpress.org) is still the right default. Recent versions handle large media libraries reasonably and the standalone installer hides most of the URL-rewrite pain.

A clean Duplicator workflow:

  1. On source: install Duplicator, build a package, download the archive and installer.php.
  2. On destination: drop both files into an empty document root, create an empty database, hit installer.php in the browser.
  3. Walk through the wizard — point at the new DB, set the new URL, run.
  4. Log in, flush rewrite rules (wp rewrite flush), regenerate WooCommerce pages if the wizard didn’t.

Where Duplicator goes wrong on WooCommerce specifically:

  • It clones live payment gateway credentials. You will email real customers from staging if you don’t disable email and revoke the gateway keys before anyone opens the destination admin.
  • It clones cron events with timestamps from the source. Subscription renewal jobs, scheduled exports, and Action Scheduler queues will all fire in the wrong order. Run wp action-scheduler reset and review wp cron event list immediately after the clone.
  • The free version has memory limits that bite around the 2 GB mark — typically media libraries, not the database. For larger stores, archive uploads separately and rsync them.

Best Way to Clone WooCommerce Settings and Products (Without Orders)

This is where most people lose a day.

You don’t want to copy the whole wp_options table — that drags in transients, cron entries, and host-specific paths. You want a defined list of WooCommerce-relevant option keys, exported as a portable file, importable into a destination that already has its own database.

# On source: dump WooCommerce option keys to JSON
wp option list --search="woocommerce_*" --format=json > wc-settings.json

# Optional: tax rates and shipping zones live in their own tables
wp db export --tables=wp_woocommerce_tax_rates,wp_woocommerce_tax_rate_locations,wp_woocommerce_shipping_zones,wp_woocommerce_shipping_zone_methods,wp_woocommerce_shipping_zone_locations wc-tables.sql

# On destination: import options one by one
jq -c '.[]' wc-settings.json | while read -r row; do
  key=$(echo "$row" | jq -r .option_name)
  val=$(echo "$row" | jq -r .option_value)
  wp option update "$key" "$val" --format=json
done

This works. It’s also annoying, easy to forget something, and breaks the moment a plugin stores its settings under a non-woocommerce_ key.

This is the gap SnapSettings for WooCommerce was built to close — it captures the actual WooCommerce settings surface into a single export file and replays it cleanly into the destination, without dragging order data along.

Method 3: How to Clone a WooCommerce Store with WP-CLI (Selective Sync)

For ongoing or partial sync, use WP-CLI directly.

# Export all products as JSON
wp wc product list --user=admin --per_page=100 --format=json > products.json

# Export orders in a date range
wp wc shop_order list --user=admin --status=any \
  --after=2026-01-01 --before=2026-02-01 --format=csv > jan-orders.csv

Cloning a WooCommerce Store with HPOS: What to Watch Out For

If your source store has migrated to High-Performance Order Storage and your destination hasn’t, a raw clone can break order data.

Cloning a WooCommerce Store Without Breaking Serialized Data

This is the one that bites everyone once. Use serialization-safe tools like WP-CLI search-replace.

WooCommerce Store Clone Checklist (Avoid Costly Mistakes)

  • [ ] Site URL updated
  • [ ] Payment gateways disabled
  • [ ] Emails disabled on staging
  • [ ] Action Scheduler reset
  • [ ] Test order completed

How to Choose the Right Way to Clone a WooCommerce Store

  • Full clone? Use Duplicator
  • Settings only? Use SnapSettings
  • Ongoing sync? Use WP-CLI

How to Clone WooCommerce Settings in Minutes (Not Hours)

If you’re cloning WooCommerce stores often, the settings layer is what eats your time. SnapSettings handles that piece specifically: capture the entire WooCommerce settings surface to a single file, replay it into any destination.

Try SnapSettings for WooCommerce →

Your configuration deserves its own backup. SnapSettings gives you one-click WooCommerce settings backups you can restore on any store, any time.

Get SnapSettings →


Want help applying this?

Tell us your workflow and we'll point you to the right plugin or next step.