001 — Tool
Fallback
Snapshot before. Diff after. Restore what shouldn't have moved.
Deterministic snapshot, diff and restore for Shopify stores. Run by hand, or standing watch. It runs locally, keeps snapshots on your disk, and never phones home.
- Language
- TypeScript
- Licence
- MIT
- Version
- 1.0
- Runs
- Your machine or CI
002 — The problem
AI agents can edit your catalog. The admin can't tell you what they changed.
Claude Code with the Shopify AI Toolkit edits products. The Shopify connector for Claude creates and updates catalog data through conversation. Sidekick runs in every admin. Community MCP servers do similar work with looser guardrails.
None of them report what they did. The admin shows a single updatedAt timestamp and a vague activity log. Theme files have rollback; product data does not.
003 — How it works
Snapshot, diff, restore. Each does one job.
- 01
snapshotReads your store through the Admin GraphQL API and writes it to your disk: products and variants, collections, metafields, metaobjects, inventory levels.
- 02
diffCompares a snapshot to the live store, field by field. Variants are tracked by stable ID, so a reorder never reads as four content changes. Timestamp and position noise is counted, not shown.
- 03
restoreWrites back only the fields that drifted, on records that still exist. A dry run by default;
--applyperforms the writes.
$ fallback diff 2026-05-30T17-21-51Z
Products
Created: 0
Updated: 1
~ Everyday Carry Bag (gid://shopify/Product/7517161062482)
title: "Everyday Carry Bag" → "Everyday Carry Bag | Free Shipping | Best Seller"
tags: ["bags","core"] → ["bags","core","sale"]
Deleted: 0
13 ignored changes (use --show-ignored to view)
Collections
No changes (1 in snapshot, 1 in current)
$ fallback restore 2026-05-30T17-21-51Z
Dry run — no changes written. Re-run with --apply to write.
To write: 1
~ gid://shopify/Product/7517161062482 (products)
title: "Everyday Carry Bag | Free Shipping | Best Seller" → "Everyday Carry Bag"
tags: ["bags","core","sale"] → ["bags","core"]
Skipped (created): 0
Skipped (deleted): 0
Skipped (unsupported): 0
004 — One app, two faces
The tool changes things when you ask. The monitor can't change anything at all.
Fallback-Sentinel is the same engine running itself: a small always-on worker that snapshots and diffs on a schedule and files a drift ledger as GitHub issues on your theme repo. Its Shopify app is granted no write scopes, so the thing that runs unattended is physically unable to change your store. Most people start with the tool and never need more.
| The tool: Fallback | The monitor: Fallback-Sentinel | |
|---|---|---|
| Where it runs | your machine or CI, on demand | a worker, daily, unattended |
| Shopify access | read and write | read-only, no write scope at all |
| What it does | snapshot, diff, restore | snapshot and diff, then reports |
| Output | your terminal | a drift ledger as GitHub issues on your theme repo |
| Do you need it | yes, this is Fallback | optional |
005 — What it doesn't do
Know the edges before you rely on it.
- Not a full-catalog rollback. Restore re-applies drifted fields to records that still exist. It doesn't recreate deleted records, remove new ones, or restore inventory levels or collections.
- Not a theme tool. Theme files have Shopify's own rollback. Fallback is for catalog data.
- Not catastrophic backup. Snapshots are pre-deploy safety nets, not insurance against malicious deletion or account compromise.
- Not customer or order data. Fallback is scoped to catalog.
- Not a service. There is no Strlng server. The only network traffic is your store's Admin API, and the monitor's report to your own GitHub repo.
- Not an App Store app. It runs from your terminal or CI and authenticates through a custom app you create.
006 — Who it's for
For people who let AI near a live store and want a receipt.
Operators comfortable in a terminal. Agencies running changes across client stores. Developers pointing Claude Code or Cursor at real catalog data. Anyone about to run a bulk import they can't easily take back.
007 — Get Fallback
Fallback is available by request while the code is private.
Write with a line about your store and how you would use it. Messages are read by the person who builds the tools.