Only the record types and fields listed here are tracked. Tracked means a change to them is recorded with a before and after. Undo means LVNDR can write the earlier value back. Both are checked against the code that ships.
Products
| Part | Tracked | Undo | Cannot |
|---|---|---|---|
| Title, description, handle, vendor, type, tags, status, template, SEO, category | yes | yes | |
| Metafields | yes | value and type; add and remove | Other metafield attributes |
| Variants | yes | price, compare-at price, SKU, barcode, taxable, inventory policy; add and remove (a removed variant comes back with a new id) | Other variant fields |
| Options | yes | name, values, position; add and remove whole options | |
| Media | yes | alt text, order, removal of an added file, re-attaching a removed file (by id or re-upload from its URL), which image a variant uses | A replaced file |
| Inventory | available quantity per location, up to 5 locations per variant | set it back (Shopify refuses if stock moved since) | A location added to or removed from the item |
| Sales channel publication | yes | publish and unpublish per channel, publish date | |
| Manual collection membership | yes | yes | |
| Whole product | create and delete | delete an added product; rebuild a deleted one with a new id | Media, inventory and publication are not rebuilt |
Collections
| Part | Tracked | Undo | Cannot |
|---|---|---|---|
| Title, description, handle, sort order, template, SEO, image alt text | yes | yes | The image file |
| Products (manual collections) | yes | membership; order, when only the order changed on a manually sorted collection | |
| Rule set (smart collections) | yes | yes | |
| Sources (conditions, selections, exclusions, sub-collections) | yes | individual entries | A source's target type; whole blocks replaced at once; sources when the rule set changed in the same edit (the rule set write covers them) |
| Metafields, sales channel publication | yes | yes | |
| Whole collection | create and delete | yes, rebuilt with a new id |
Pages, blogs and blog posts
| Type | Tracked | Undo | Cannot |
|---|---|---|---|
| Page | title, handle, body, published, template, metafields | all of those; create and delete | Publish date on its own (it follows published) |
| Blog | title, handle, comment policy, template, metafields | all of those; create and delete | A rebuilt blog does not bring its posts back; restore them separately |
| Blog post | title, handle, body, summary, tags, published, template, author name, image alt text, blog, metafields | all of those, including moving a post back to its old blog; create and delete | The image file, comments |
Menus
| Part | Tracked | Undo | Cannot |
|---|---|---|---|
| Title, handle | yes | yes | |
| Items (nested) | yes | individual items; the whole menu is rewritten from the live tree | Items replaced as a whole |
| Whole menu | create and delete | yes, rebuilt with new ids (theme settings that point at the handle keep working) |
Themes (tracked only)
| Part | Tracked | Undo | Cannot |
|---|---|---|---|
| Settings and template JSON (config/settings_data.json, templates/*.json, templates/customers/*.json, sections/*.json) | yes, for the published theme and unpublished themes | no | Shopify lets only exempted apps write theme files. The earlier value is shown for a manual restore in the theme editor. |
| Role (which theme is published) | yes | no | Publish it again under Online Store > Themes |
| Whole theme | add and delete | no | Re-upload or reinstall from the theme store |
Metafield definitions
| Part | Tracked | Undo | Cannot |
|---|---|---|---|
| Name, description, validations, pinned, access, capabilities | yes | yes | |
| Type, namespace, key, owner type | yes | no | Shopify does not allow these to change after creation |
| Whole definition | create and delete | yes, recreated | Metafield values deleted with the definition do not come back |
Not tracked
Orders, customers, draft orders, discounts, gift cards, metaobjects, theme Liquid and assets, files outside product media, apps installed by other apps.
How much history is kept
Changes are kept for your plan's history window (90 or 365 days). The window never shrinks below the longest one the store had in the last 30 days, so a downgrade does not delete history straight away. Version 1 of every record and its newest version are always kept, so every record can still be restored. See Data and privacy.
Everything that is tracked can also be downloaded as a ZIP or copied to your own storage; see Backups and exports.
Event gaps and how LVNDR closes them
Shopify does not send an event for every edit. These are the known gaps and what the app does about each.
| Edit | Shopify sends | LVNDR does | Delay |
|---|---|---|---|
| Collection rules, sources, SEO, publication | nothing | re-reads every collection | up to 10 minutes |
| Menus | no event topic exists | re-reads every menu | up to 10 minutes |
| Theme settings and templates | no usable event | re-reads changed theme files | up to 10 minutes |
| Metafield definitions | an event that needs a scope LVNDR does not request | re-reads every definition | up to 10 minutes |
| Product or collection publish and unpublish | no event delivery, but an admin event entry | re-reads those records on every poll and names the actor exactly | within a minute |
| Media alt text | nothing | the daily sweep finds it | up to a day |
| A newly uploaded image | a delivery before the file is processed | re-reads the record for up to 10 seconds so the URL is captured | seconds |
| Inventory quantity | the classic inventory_levels/update webhook | resolves the owning product and records a product change | seconds |
| Anything a delivery missed | the daily sweep compares every record with its stored version | up to a day |
Admin events carry whole seconds, so a refreshed change can be stamped up to one second early.
Menus, themes and metafield definitions have no delete event. A record missing from a complete listing is recorded as deleted by the periodic re-read.