LVNDR already keeps every version of every tracked record, and undo and rollback restore from them. A backup is a copy of that data you hold yourself, outside LVNDR.
What a backup is
A ZIP with the latest snapshot LVNDR holds of every tracked record: products (with variants, prices, inventory, options, metafields and media alt text), collections, pages, blogs, blog posts, menus and metafield definitions, and themes as the parsed JSON of their settings and template files.
| File | Content |
|---|---|
| README.txt | What is included and excluded, and how to restore |
data/<type>.ndjson | One JSON line per record: resourceType, resourceId, version, capturedAt, sourceUpdatedAt, deleted and state, the record as Shopify returned it |
| manifest.json | The store, when the backup was made, the LVNDR version, and how many records of each type |
Not included: orders, customers and anything else LVNDR does not track; the image and video files themselves (only their URLs); and the change history, which is a separate export (below).
A record that has been deleted is left out, unless you choose “Download including deleted records”: then its last known state is included, marked deleted: true.
Download one now
Settings > Backups > “Download backup now” builds the ZIP and downloads it. Every download is recorded in the audit log.
Off-site backups to your own bucket
LVNDR can upload the same ZIP, daily or weekly, to S3-compatible storage you own: AWS S3, Cloudflare R2, Backblaze B2 or MinIO.
- In Settings > Backups, choose “Set up off-site backups”, pick the provider and fill in the region, the endpoint (https), the bucket, a folder prefix (default lvndr/), the access key id and the secret access key.
- Use a key that may only write to this bucket. The secret is stored encrypted and is never shown again; leave the field empty to keep it.
- The endpoint must be https on a public host. LVNDR checks the address when you save and again on every upload.
- Choose Daily or Weekly and turn on “Scheduled backups on”. “Test connection” writes, reads back and deletes a small lvndr-test.txt. “Run backup now” starts one straight away.
- Each file is named <prefix><store>/lvndr-backup-<store>-<date and time>Z.zip. Large backups are uploaded in parts.
The Backups card lists the last 10 backups with their size, record count and any error. A failed scheduled backup is retried about an hour later. LVNDR never deletes old backups from your bucket; use the bucket's own lifecycle rules for that.
Restoring from a backup
The quickest way back is still LVNDR itself: undo the change, or roll back to a restore point. See Undo and rollback. Those use the same snapshots that are in the backup.
To restore by hand, each state maps closely onto Shopify Admin GraphQL inputs (for a product, productSet; then metafieldsSet). README.txt in the ZIP lists the mutation for each record type. Records come back with new ids.
Exporting the change history
The backup holds the current state, not who changed what. For the history, Settings has CSV and JSON downloads of the whole change log and of the app's audit log. Over the API, GET /api/v1/export does the same for a key with the export scope (see REST API), and the CLI has lvndr export.
What LVNDR stores and for how long is in Data and privacy.