How to clone a Shopify store into a staging environment

Shopify gives you no way to copy a store. Every staging setup ends at the same wall: the CLI versions your theme, and then you are exporting CSVs by hand and watching metafields and files fail to survive the trip.

This page is the honest version of that answer — what Shopify provides, what it does not, and what no tool can move regardless of what its marketing says.

Shopify’s own answer, in its own words

  • There's currently no easy/native method to clone or transfer metafields from one store to another.

    Shopify staff, developer community forum

  • It's not possible for a store that's on a paid plan to be migrated to a development store.

    Shopify staff, developer community forum

Setting up a staging store you can push back from

  1. Create the staging store

    A Shopify development store is free and is a legitimate staging target. Create it from your Partner dashboard, or use any second store you control. Turn on password protection so nothing is public while you work.

  2. Copy production into it

    Theme code goes across with the Shopify CLI. Data — products, collections, customers, metafields, files — does not, and that is the half the CLI was never for. This is where a copy tool earns its place, ours or someone else's.

  3. Work in staging, not in production

    The point of the exercise: break things somewhere a customer cannot see them, and let the client review before anything is live.

  4. Push back only what you meant to

    Copy the specific resources you changed rather than the whole store. Re-running an import updates what is already there instead of duplicating it, so a second pass converges rather than doubling your catalogue.

What actually copies

Read from the engine that runs the copies, so this list cannot claim more than the product does.

  • ProductsCopies, with a caveat
  • CollectionsCopies, with a caveat
  • FilesCopies, with a caveat
  • LocationsCopies, with a caveat
  • PagesCopies, with a caveat
  • BlogsCopies, with a caveat
  • ArticlesCopies, with a caveat
  • URL redirectsCopies in full
  • Metafield definitionsCopies, with a caveat
  • Metaobject definitionsCopies, with a caveat
  • MetaobjectsCopies, with a caveat
  • Navigation menusCopies, with a caveat
  • Inventory levelsCopies, with a caveat

Every limit, with the API behaviour behind it →

What no tool can copy — the “without losing everything” part

  • Inventory adjustment history

    Shopify generates the adjustment ledger from writes; it cannot be authored. A restored store shows the restore, not the original history.

  • Customer passwords

    Never exposed by the API. Customers moved to another store have to reset.

  • Gift card codes

    Codes cannot be read back out of a store once issued.

  • Original order and customer dates

    The creation date cannot be set on an order, a draft order or a customer, so copies date to the day they were copied rather than to the original.

  • Orders older than 60 days

    Readable only with Shopify's approved access to all orders, which is granted per app and per use case.

  • Payment and gateway history

    A refund record can be recreated; the money movement behind it cannot.

Questions people actually ask

Does Shopify have a built-in way to duplicate a store?

No. There is no native store cloning, and Shopify staff have said so directly in the developer forum. Development stores can be created freely, but nothing moves your existing data into one for you.

Doesn't the Shopify CLI already give me a staging environment?

It versions your theme code, which is genuinely useful and genuinely not the whole problem. Development themes do not carry products, collections, metafields, files or customers, so a CLI-only staging store is an empty shop wearing your theme.

Can I turn my live store into a development store?

No. A store on a paid plan cannot be migrated to a development store — that is Shopify's own statement. You create a separate store and copy data into it.

Will a clone be identical to production?

No, and any tool claiming otherwise has not hit the limits yet. Inventory adjustment history cannot be authored, customer passwords never leave a store, gift card codes cannot be read back out, and images get new CDN URLs on the destination. The full list, with the API behaviour behind each one, is on our coverage page.

Is a staging copy a backup?

Not on its own. A copy made from a source store depends on that store still serving its files when the copy runs, and it captures one moment rather than a history. Treat staging and backup as different jobs.

Doing this on client stores?

HyperSync is the copy step above, as a background job: clone production into staging, work there, push back only what you changed. Re-running it updates rather than duplicates.

See how it works