Shopify Store Backup Guide: Backing Up Your Data with Apps and API Tokens
Shopify store backup means keeping a separate copy of your product, order, customer, and other store data to protect against scenarios like accidental deletion, a faulty bulk update, or a third-party app error. In the migration and integration projects we run at Nodus Works, we routinely see store owners assume Shopify automatically backs up their data, and that assumption is wrong; in one project a bulk price-update script ran with the wrong formula and miscalculated pricing on 640 variants, and because there was no rollback point, the fix had to be done one variant at a time, by hand. This guide covers the limits of Shopify's own backups, what manual CSV export does and doesn't cover, both app-based and API-based automated backup options, and how often each type of data should be backed up.
What Are the Limits of Shopify's Own Backup?
Shopify backs up its own data at the server infrastructure level, but this isn't a backup you can access or restore yourself; in a disaster-recovery scenario Shopify protects its own infrastructure, but if you accidentally delete 200 products, you can't ask Shopify to bring that data back.
Shopify protects the platform against a server failure by replicating data across data centers; the Shopify Trust Center page explains these infrastructure guarantees. This protection, however, doesn't cover an action taken from your own account: if an app deletes 500 products by mistake through the Admin API, that counts as a "user action," and Shopify support won't recover that data.
Critical Note: "Shopify already backs it up" is the most common assumption store owners get wrong. Shopify's infrastructure-level backup doesn't protect against a deletion or faulty update made from your own account; those actions happen under your control, and Shopify treats them as a "user action," not "data loss."
Keeping a copy of your store data somewhere independent of Shopify is your only real way back in this kind of user-error scenario; Shopify's infrastructure backup is not a recovery mechanism for mistakes made inside your own account.
What Does Manual CSV Export Cover, and What Does It Miss?
Manual CSV export from the Shopify admin covers products, customers, orders, gift cards, discounts, and inventory data; for each, clicking "Export" on the relevant admin page is enough.
To export products, go to the Products page, select "All products," and choose the CSV format; repeat the same step on the Customers page to export customers. For small stores this takes 15-30 minutes and costs nothing extra.
Why Can't Order Data Be Restored From a CSV?
The Shopify admin lets you export order data as a CSV, but it won't let you import that file back in. According to Shopify's Help Center documentation on CSV export, the built-in import feature only works for product and customer data; there's no native restore path for order history. If you lose order data, having the CSV in hand doesn't help much on its own; you'd need a third-party CSV import app such as Matrixify to write that data back into Shopify. In practice, an order CSV is an archival record, not a directly restorable backup.
Critical Note: The product CSV does include your defined product metafields (except rich text and file-reference types), so the assumption that "metafields aren't in the CSV at all" is wrong. What CSV export doesn't cover is blog posts, page content, navigation menus, theme settings, and app data. A store that relies only on a CSV backup is unprotected against data loss in those areas; a CSV isn't a full store backup, it's a partial record of catalog and transaction data.
The manual CSV method is a reasonable starting point for low-budget stores with a small catalog; it does, however, require a regular (weekly or daily) backup habit, and that discipline tends to slip over time. For larger or actively updated catalogs, an automated solution is more reliable.
How Do You Take a Manual CSV Backup? (Step by Step)
- Products: On the Products page in the admin, click "Export," select "All products," and choose "Plain CSV file" (if you're planning to re-import it later, choose "CSV for Shopify" instead; the Excel format can't be re-imported).
- Customers: Repeat the same steps on the Customers page; the exported file includes name, email, address, and total order count, but not order details.
- Orders: Export from the Orders page; remember this file is for archival purposes only and can't be imported back into Shopify.
- Discounts and gift cards: Export these separately from the Discounts and Gift cards pages; these two are often the data types people forget.
- Store the files safely: Name the downloaded CSVs with a date tag (for example
products-2026-10-30.csv) and save them to cloud storage or a local backup folder.
Where Should Backup Data Be Stored? Storage Options
Where you store backup data determines who can access it and how quickly you can reach it in a disaster scenario, such as your computer or account becoming inaccessible; choosing a location that's fully independent of Shopify matters for exactly that reason.
For manual CSV files, cloud storage services like Google Drive, Dropbox, or OneDrive are enough; the important part is not keeping files only on your own computer, since that device failing creates a second point of data loss. For backup apps, storage is usually held on the app's own servers; this simplifies setup but also means your data depends on a third party's infrastructure. With Admin API-based custom flows, storage is entirely your choice: object storage services like Amazon S3 or Google Cloud Storage are among the lowest-cost options best suited to automation.
Note: The storage account holding your backup data should itself be protected with a strong password and two-factor authentication; backup data can become just as sensitive a target as the original, especially when it includes customer data.
Automated Backups With Backup Apps
Backup apps in the Shopify App Store automatically and regularly back up blog, page, menu, file, and theme data that CSV doesn't cover. According to Shopify App Store's backup category, these apps aren't priced as a single flat fee; most use a tiered model that scales with your store's monthly order volume, and because these tiers change often, you should check current pricing on the app's listing before setting one up.
Coverage also varies between apps. Some cover products, orders, customers, pages, collections, blogs, theme, metafields, store policies, and shipping profiles with a backup history spanning several months, while others go further, offering daily automatic backups with per-item version history and multi-location inventory data as well.
A gap we see often at Nodus Works in the stores we manage is a backup app that gets installed and never tested; the first time it's actually needed, for example after 400 products get bulk-deleted by mistake, is when owners find out the restore flow doesn't work the way they expected, because no trial restore was ever run after setup.
| Method | Coverage | Cost | Automation |
|---|---|---|---|
| Manual CSV | Products, customers, orders (archive), gift cards, discounts, inventory | Free | None, must be done manually |
| Backup App | CSV coverage + theme, pages, menus, files, blog | Tiered by order volume, monthly subscription | Daily automatic, version history |
| Admin API (Custom Flow) | All data, fully customizable to your needs | Development cost | Fully automatic, under your control |
Tip: When choosing a backup app, don't just ask "what does it back up"; ask "how long does restoring take, and how complete is it." Some apps take daily automatic backups but still require manual steps during the restore process; that difference matters a lot in an actual data-loss emergency. Run a small test restore right after setup to find this out before you need it.
How Do You Run a Restore Test?
You learn whether a backup app actually works not when it takes the backup, but when it restores one; that's why running a small, controlled test restore right after setup is more reliable proof than anything on the app's sales page.
- Create a test product: Add a single product to your store, something like "TEST-BACKUP-001," with no orders attached and no impact on your real catalog.
- Take a backup: Use the app's manual backup option to mark this moment as a restore point.
- Delete the test product: Deliberately delete it from the admin panel.
- Restore it: Use the app's restore flow to bring back only this product, and note the process itself: how many steps, how many minutes, whether manual approval is required.
- Verify the result: Check that the restored product's price, stock, variants, and collection links match the original exactly.
This test reveals the app's real restore time and completeness before a major data loss happens; at Nodus Works, we've repeatedly seen stores that skipped this test end up measuring restore time in hours, not minutes, during an actual crisis.
Setting Up a Custom Backup Flow With the Admin API
The Shopify Admin API gives full access to all store data, including orders, customers, and inventory. For pulling large data volumes on a regular basis, Shopify's recommended current method is GraphQL Bulk Operations; according to Shopify's developer documentation, this is the standard way to pull large datasets without hitting synchronous query limits. Pulling the same volume through paginated REST API calls can take hours, while bulk operations prepare that data as a single background job.
In practice, this means setting up an app that authenticates via OAuth client credentials through Shopify's Dev Dashboard, then using those credentials to pull all data categories on a regular schedule (say, every night) through the Admin API and store them on your own infrastructure, whether that's a cloud storage service or your own server. This approach is chosen over paying a monthly fee for a ready-made app when you want full control over your data.
There are two flow types to choose between. A periodic full pull re-downloads every data category every night; it's simple to set up, but consumes more of your API quota on large catalogs. A webhook-based incremental backup, on the other hand, listens for event-based webhooks like products/update and orders/create and backs up the changed record the moment it happens; it's more complex to set up but keeps a continuously current backup and uses far less API quota than a periodic full pull. For stores with high daily order volume, the webhook-based approach also removes the risk of a periodic pull not fitting inside its overnight window.
In the custom backup flows we build at Nodus Works, the mistake we see most often is an initial setup that only covers product and order data while skipping metafield and collection relationships; that missing coverage causes product-collection links to break during a restore, leaving categories looking empty.
Critical Note: Setting up an API-based backup flow only needs read scopes; the backup process doesn't require write access. Granting your backup token more permissions than it needs creates a risk that, if the token ever leaks, it also gives an attacker write access to your store.
Which API Permission Scopes Are Needed?
The permission scopes a backup flow needs depend on which data you're backing up, but most setups work with these read scopes: read_products, read_orders, read_customers, read_inventory, and read_content (for blog and page data). Reviewing each scope individually and granting permission only for the data types you actually intend to back up limits the risk your token carries if it's ever leaked.
In practice, the flow works like this: your custom app first defines a query through GraphQL Bulk Operations (for example, a query pulling all products along with their variants and metafields), sends that query to Shopify, Shopify processes it in the background and prepares the result as a JSONL file, and once the job finishes, returns a download link for that file. This flow removes the timeout risk that comes with trying to pull thousands of records in a single synchronous API call.
If you want to build this kind of custom backup automation on the same infrastructure as your existing ERP or accounting integration, we handle this work as part of our Shopify integration and custom app development service; the goal is to build a flow that covers the specific data-storage requirements a ready-made app doesn't.
Theme Backup vs. Store Backup: What's the Difference?
A theme backup covers the visual and code side of your store, including Liquid files, CSS, JavaScript, settings_data.json, JSON templates, and translation files; a store backup covers operational data like products, orders, and customers. These two concepts get mixed up often, but one doesn't substitute for the other.
For example, a settings_data.json file getting corrupted during a theme update causes a visual problem but doesn't touch your order history; conversely, an app deleting 2,000 customer records by mistake through the API doesn't touch your store's appearance, but it breaks operational data integrity. The scenario where a theme backup alone is enough is creating a rollback point before a theme update or customization; we covered this topic in detail in our Shopify theme backup guide.
Note: A theme backup protects your store's appearance, a store backup protects the data that makes your store function; they don't guard against the same risk, they guard against different risks.
A thorough protection strategy includes both: regular theme backups (especially before development work) and regular store data backups (daily or weekly, depending on how active your store is).
The point where this distinction most often gets confused in practice is while working with an agency or developer on your theme: the developer takes a theme backup before changing anything in the theme, but if an app installation changes store data (say, product tags) during that same window, that change falls outside the theme backup's scope. Running both backup types at the same time, but through separate mechanisms, keeps it clear which backup solves which problem in these overlapping scenarios.
Backup Frequency and Prioritization: Which Data Should Be Backed Up, and When?
Backup frequency is determined by how fast the data changes and how much it would stop the business if lost; order data should be backed up daily, product catalog after every change, and theme before every update.
| Data Type | Recommended Frequency | Priority | Rationale |
|---|---|---|---|
| Product Catalog | After every change + weekly | High | Bulk-update errors happen here most often |
| Order Data | Daily | High | Critical for financial records and accounting reconciliation |
| Customer Data | Weekly | High | Falls under data-protection security obligations (e.g. GDPR) |
| Theme/Code | Before every change | High | Editing live without a rollback point is risky |
| Blog/Page Content | Monthly | Medium | Changes infrequently, impact of loss is limited |
| Discount/Campaign Rules | Before each campaign | Medium | A misconfigured discount code can cause real financial loss |
Backing up customer data also falls under general data-protection security obligations in jurisdictions such as the EU (GDPR) or Turkey (KVKK); as a store owner processing personal data, storing that data securely, and keeping the backup copy under the same security standards, is part of the general data-security principle in both frameworks.
Note: Setting up an automated solution (app or API flow) for the four high-priority data types (product, order, customer, theme) covers the risk that matters most; a manual routine may be enough for medium-priority data. Direct your budget to the high-priority data first.
Frequently Asked Questions
Does Shopify automatically back up my store data?
Shopify backs up data at its own infrastructure level, but this doesn't protect against a deletion or faulty update made from your own account. You need to take a separate backup under your own control.
Is CSV export a sufficient backup method on its own?
It's enough for products, customers, and defined product metafields, but it doesn't cover blog content, pages, theme settings, or app data; order CSVs also can't be written back into Shopify. For a more complete backup, you need a backup app or a custom API flow.
How much do backup apps cost?
Pricing isn't fixed; it scales in tiers based on your order volume. Coverage and retention period also vary by app; check current figures on the app's listing page.
Should I build my own backup system with the API, or use a ready-made app?
A ready-made app is faster and cheaper for standard needs. If you want full control over your data, or need a specific storage requirement that ready-made apps don't cover, a custom API-based flow is the better fit.
Does taking a theme backup mean my store data is backed up too?
No. A theme backup only covers the visual/code side; you need a separate backup method for product, order, and customer data.
Does my store go offline while restoring from a backup?
No, most backup apps run the restore in the background while the store stays live; during a large-scale restore, such as the entire product catalog, stock and pricing information may look briefly inconsistent.
Does the backup approach change for Shopify Plus stores?
No, the backup logic stays the same; but Plus stores generally having higher order volume makes daily automatic backups and an API-based custom flow more of a priority.
If I remove a backup app, are my previous backups deleted?
In most apps, no; past backups stay stored on the app's own servers. In some apps, though, access to backups can close once you cancel the subscription, so check that detail in the app's own policy.
Is it enough to store backup data only on my own computer?
Not on its own; your computer failing or being stolen creates a second point of data loss along with your backup. At least one copy should be kept in cloud storage or on a remote server, independent of the local copy.
Do I need a separate backup before migrating to another platform?
Yes, absolutely. The risk of a data-mapping error or downtime is higher during migration than in normal operation; taking a full backup of product, order, and customer data before migration starts should be a standard first step.
Conclusion
Shopify store backup isn't a step you can skip by assuming "Shopify already handles it"; depending on your store's size, you need to choose between manual CSV, an automated backup app, or an API-based custom flow. The right choice depends on your catalog size, how actively your data changes, and how much control you want over it; securing the four highest-priority data types (product, order, customer, theme) with an automated solution, and using a manual routine for the rest, can be enough.
If you'd like help deciding the right backup strategy for your store, whether that's a ready-made app or a custom API flow, get in touch with Nodus Works; we'll assess your current data volume and risk tolerance together and settle on the right approach.




