VPS Snaps

Shopify Backups

Back up your Shopify store before anyone changes it

Products, customers, orders, content and every theme, saved on a schedule to storage you own. When a theme edit, bulk import or app install goes wrong, see what changed and put back only that.

Back up your first server free, forever. No credit card required.

We only use your email to create your account. See our Privacy Policy.

Your credentials are encrypted with AES-256-GCM, your backups never live on our storage, and our GDPR data processing agreement is public.

Shopify keeps your store running, not a copy you can go back to

So take one before you, your agency, a freelancer or a new app changes anything. Connect the store, choose your storage, and each run keeps the whole store as one archive.

  • The whole store, through Shopify's Admin API. Products with their variants, images and metafields, collections, customers, orders, draft orders, pages, blogs and posts, navigation menus, URL redirects, metaobjects, files, inventory levels, locations, discounts, markets, store settings and policies.

  • Every theme's files. The live theme and every unpublished one, file by file, so last week's theme is there after this week's edits.

  • Images and files, not just links. With “Include images and files” on, as it is for each new job, the bytes are copied too, so an image deleted from Shopify can be put back.

  • In storage you own. Any S3-compatible bucket, Google Drive, Dropbox, Box or OneDrive, hashed as it lands, with the same schedules and retention as every other job. Starter plan and up.

What lands in your storage
acme-backups/9f2c41d7/
  acme-goods-2026-10-29T02-00-03-117Z.shopify.tar.gz
What is inside it
contents.json            the store, its themes, what the backup holds
data/shop.json           settings, policies, languages
data/products.jsonl      and variants, collections, customers,
data/orders.jsonl        draft-orders, pages, blogs, menus,
data/redirects.jsonl     metaobjects, files, inventory, locations,
…                        discounts, markets
themes/<id>/theme.json   each theme's name and role
themes/<id>/files/…      every file of the theme
media/<id>/<file>        images and files, when the job includes them
manifest.json            what each part holds, and anything left out
Getting a theme back without us
$ tar xzf acme-goods-*.shopify.tar.gz
$ cd themes/<id>/files

# with Shopify CLI, as a new unpublished theme:
$ shopify theme push --unpublished --store acme-goods

A restore that shows its work first

Re-importing a whole store would overwrite everything changed since, the good with the bad. A restore here is a comparison, and it only writes what the comparison finds.

  1. Step 1

    Choose what goes back

    A theme, products (all of them or only the handles you list), collections, pages, blogs, menus, redirects, metaobjects, and customers missing from the store. Anything you leave off is not touched.

  2. Step 2

    Preview

    The backup is read from your storage, checked against the checksum recorded when it was taken, and compared with the store as it is now. Every difference is listed, and nothing is written. Anyone in the workspace can run one.

  3. Step 3

    A safety copy first

    Restoring is for owners and admins, who type the store's address to confirm. Before anything is written, the store as it is now is stored as a backup of its own, in your storage.

  4. Step 4

    Only the differences

    Records that already match are left alone. A theme comes back as a .zip you upload in Shopify as an unpublished theme, to preview and publish; where Shopify has given the app theme access, the restore writes it in as an unpublished copy itself. If Shopify refuses a record, the rest carry on, and the restore names it.

Nothing in the store is deleted, except inside a product you restore, which comes back exactly as it was backed up. Products, pages and the rest added since the backup are kept as they are.

The days it is for

Each of these shows up in the preview as a line you can read before anything is written.

A theme edit that broke the storefront

Download the theme from before the edit as a .zip and upload it as an unpublished theme. The live theme stays as it is until you publish the copy.

In the preview

Download theme as .zip: Dawn-2026-10-28.zip (214 files)

A bulk import that overwrote product data

Each product the import changed is listed with what differs, and only those are put back.

In the preview

~ Canvas Tote (canvas-tote): description, tags, 2 variant(s) to change

A product deleted by mistake

It is created again with its variants, images and metafields, under the same handle.

In the preview

+ Linen Apron (linen-apron)

Menus and redirects lost in a redesign

Put back the navigation menus and URL redirects that were removed, and keep the ones added since.

In the preview

+ /pages/summer-sale → /collections/sale

Four things to know before you rely on it

Where it stops, written down now rather than found out after a bad change.

Orders are kept as records, not restored

Orders, draft orders, inventory levels, discounts and markets are in every backup, but Shopify lets no app write an order back into a store, so none of them can be restored. Gift cards are not restored either. Customer passwords are never in a backup: a customer put back by a restore signs in again, and existing customers are never changed.

No one-click connect yet

Until Shopify approves our own app, a store connects through an app its organization makes in Shopify's Dev Dashboard: you paste its Client ID and secret, and each backup gets a fresh 24-hour token. An agency can install its own app on a client's store by link, which the store approves once. An Admin API token from a custom app made before 2026 works too.

Images make backups bigger

"Include images and files" is on by default, so the image, video and file bytes are copied, not just their links. Box and OneDrive hold an archive in memory before uploading it, so there a backup must stay under 64 MB; turn the switch off, or use a bucket, Google Drive or Dropbox.

Read by our worker, kept by you

A store has no server of yours to run anything on, so our worker reads it through Shopify's Admin API and streams it straight on to your storage, in memory only, never kept. That includes your customers' names and addresses. The job page and the DPA both say so.

Connecting a store step by step, restoring, and what each part of a backup holds are in the Shopify store backups guide. Doing it all by hand is in How to back up a Shopify store.

Everything else it does

Storage, schedules, alerts, recovery and team access, in one place. Which plan each one starts on is on the pricing page.

Bring your own storage
Backups land in your own S3-compatible bucket — Backblaze B2, Wasabi, Cloudflare R2, or plain S3 — or in your own Google Drive, Box, Dropbox or OneDrive. You hold the keys and the data.
Snapshots stay with your provider
Provider snapshots are created through the provider's own API and never leave your account. We store the snapshot ID, not the image.
Eight providers, one dashboard
DigitalOcean, Hetzner, Vultr, Linode, AWS EC2, AWS Lightsail, Google Compute Engine and Microsoft Azure — scheduled and reviewed from the same place.
A replacement server on demand
Recover now builds a new server on your own DigitalOcean, Hetzner, Vultr, Linode, AWS EC2, AWS Lightsail, Azure or Google Compute Engine account, from its snapshot or from its backups, software included.
Failover on any cloud
When a server stops answering, its traffic moves to the recovery server: by reserved or floating IP where your cloud has one, or by your DNS on Cloudflare, which works on every cloud.
Know it's down, with the way back
Uptime monitors for sites, ports and scheduled jobs confirm an outage before alerting, name the server's newest backup, and publish a status page. On paid plans.
Your DNS zones, backed up
Every record in a Cloudflare zone, kept in your own storage as a BIND file too. A restore previews what differs and writes back only that.
Schedules that fit your traffic
Hourly, daily, weekly, monthly, or a fixed interval in minutes — anchored to your timezone, so a 02:00 job stays at 02:00 across a DST change.
Retention that prunes itself
Set how many days to keep. Older snapshots and archives are cleaned up after each successful run, so storage bills stay flat.
Every run on record
Status, duration, size and trigger, with each step it took in order and its warnings and errors kept in place — so a failure tells you which step broke.
Checksummed on upload
Every archive is hashed as it streams to your bucket and the checksum is stored with the run, so you can verify what landed.
Run on demand
Trigger any job by hand before a migration or a risky deploy, without touching its schedule or its retention window.
Alerts on five channels
Email plus Slack, Microsoft Teams, Google Chat, and Discord — on success, on failure, and on a job that missed its schedule entirely.
Encrypted credentials
SSH keys, database passwords, and storage secrets are sealed with AES-256-GCM before they touch the database.
Team access with roles
Invite your team into a shared workspace as owner, admin, or member, so backups outlive whoever set them up.
View all features

Keep a copy of your store tonight.

Connect the store, choose your storage, and the first backup runs on the schedule you pick — or right away, by hand. Starter plan and up.

Your credentials are encrypted with AES-256-GCM, your backups never live on our storage, and our GDPR data processing agreement is public.

No credit card required. Cancel anytime.