LVNDRby Toolfora

HelpUndo and rollback

Undo and rollback

Undo one change

Open a change and press “Undo this change”. You land on a preview. Nothing is written until you press the button there.

The preview lists every field the change touched, with the value now, the value it will become, and a status.

StatusMeaningWhat the undo does
Will restoreThe store still holds the value this change produced.Writes the earlier value back.
Changed sinceSomeone changed this field again after this change.Left alone by the main button. A second button, “Undo N, overwriting later edits”, includes it.
Already restoredThe field is already at the earlier value.Nothing.
Not undoableLVNDR cannot write this field. The reason is shown under the badge.Nothing. The earlier value is still shown, so you can copy it by hand.

Only the fields the change touched are written. Everything else on the record stays as it is.

The button writes exactly the plan on screen. If the record changed after the preview loaded, nothing is written: the page says so and shows the new plan to confirm instead.

If the record no longer exists, the fields cannot be put back. Open the delete entry for that record and use Restore there.

Undo of a create

Undoing a create deletes the record. The button reads “Delete this record”.

If the record was edited after it was created, the preview warns that those edits go too. A snapshot is stored first, so the record can be restored again.

Undo of a delete

Undoing a delete rebuilds the record from its last snapshot. The button reads “Restore this record”.

Shopify assigns a new id. Links and bookmarks to the old id stop working. The preview says what comes back and what the snapshot does not carry.

RecordNot carried by the rebuild
ProductImages and media, inventory quantities, sales channel publication, the original id
CollectionThe collection image file, the original id
Blog postThe post image file, comments, the original id
BlogIts posts (restore them separately), the original id
Metafield definitionMetafield values deleted together with the definition, the original id
MenuThe original ids of the menu and its items
PageThe original id
ThemeCannot be rebuilt. Re-upload it or reinstall it from the theme store.

A deleted record is rebuilt once. A second attempt is marked “Already restored as …” with the new id.

Batch undo

A batch is everything one actor did in one sitting: the same actor, no gap over ten minutes between changes, up to 200 changes. A change page says “Part of a batch of N changes” when there is one.

The batch page lists the changes. “Preview undo of all N” plans the newest 50 without writing and says how many more it did not check. The button then reads “Undo N changes”. The undo runs newest first, so a record changed twice unwinds in the right order.

A change is skipped when it is already back, or when its fields were changed again since (those are left alone). The result lists what was undone, skipped or failed.

Changes with no known actor all share the key “unknown”. An unknown batch can therefore mix unrelated edits. Read the list before pressing the button.

Undo everything matching a filter

Filter the change log (who made it, type, action, title, dates or one run), then choose “Undo every change matching these filters”. The page lists the matching changes, previews the undo, and asks you to confirm before writing. LVNDR's own undos are left out. Use it for an agent or app that did not announce a run, or any mess you can describe with the filters.

Put one record back

To return a single record (a product, collection, page, post, menu or metafield definition) to how it was at an earlier moment, open its history (click its title anywhere in the log) and choose “Put back to before this” on the change you want to go back past. The same action is on the change page, except for LVNDR's own undos and for a first-seen change that has no before state.

LVNDR undoes that change and every later change to the same record, newest first, and touches nothing else. Preview first; the undo is bound to what the preview showed. A record changed several times is previewed step by step, the way the undo will meet it.

Restore points and roll back

A restore point is a moment you can roll back to. Points are created:

  • By hand: “Mark restore point” in the change log header, or from the API, the MCP tools or the CLI.
  • Automatically before a burst: when the same fields change on five or more records within minutes, a point is placed just before the first one.
  • By an agent when it starts a run, so the whole run can be rolled back.
  • By the daily sweep, when it found changes that no delivery had reported. These are hidden on the Restore points page unless you ask for them.

Open a point from the Restore points page or the panel on the change log. The page lists every change since that moment, newest first. Preview the rollback first; then “Roll back N changes” starts it.

Rolling back undoes each change in that order and skips records edited again since or already back. LVNDR's own undos are never rolled back.

The preview checks the newest 50 changes and says how many more it did not check. One rollback covers at most 500 changes; with more, the button reads “Roll back the newest 500 of N” and the result says how many remain. Preview and roll back again.

Run, batch, record and rollback undos run in the background

Undoing a run, a batch or everything since a restore point can touch hundreds of records, so it runs as a background job on the server. The page shows a progress banner (“Batch undo running: 12 of 40 done”) that updates every few seconds, then the result: how many were undone, skipped or had problems, one line per change. You can leave the page; the job carries on, and the banner is there when you come back.

A second undo of the same run, batch or point cannot start while one is queued or running. A job that is interrupted, for example by a server restart, resumes where it stopped.

The API, MCP and CLI start the same jobs. They answer at once with the job and poll it until it finishes: GET /api/v1/jobs/:id, the MCP tool lvndr_get_job, or lvndr job <id>. See REST API.

The undo is bound to its preview

Every undo starts from a preview, and the write is tied to what that preview showed.

  • One change: the field plan. If the record changed since the preview, nothing is written and the new plan is shown.
  • A run, a batch or a rollback: the set of changes. If changes joined or left the set since the preview (new edits arrived after the restore point, a batch grew), the job does not start, or stops before writing, with “did not run”. Preview again.

Agents get the same protection: the preview returns a planHash (REST and CLI) or a confirmation_token (MCP), and the write is refused with plan_changed when the store moved.

What cannot be undone

CaseWhyWhat to do
Theme settings and template files, theme publishShopify lets only exempted apps write theme files or publish themes. LVNDR has no exemption.The earlier value is shown in the diff. Copy it into the theme editor, or publish the theme again under Online Store > Themes.
A deleted themeSame restriction.Re-upload it or reinstall it from the theme store.
A media file that was replacedThe file itself changed, not a field.Re-upload the earlier file by hand. Alt text and order are undoable.
Lists longer than one snapshot pageLVNDR holds the first page only: 100 variants, 5 stock locations per variant, 100 metafields, 50 media, 50 sales channels, 100 collection memberships, 250 collection products. Adds and removes beyond that could be page shifts.The list is marked not undoable. Scalar fields on the same record still are.
Collection sources when the rule set changed tooA smart collection's rules appear as both the legacy rule set and the newer sources. Writing the rule set covers the sources, so they are not written separately.Nothing. The result lists the sources as covered by the rule set write.
A location added to or removed from an item's inventoryStock at a location is managed in Shopify.Set it in Shopify. Quantity changes at an existing location are undoable.
Inventory when stock moved since the previewShopify requires the expected current quantity and refuses otherwise.Preview again and retry.
A definition's type, namespace, key or owner type; a source's target typeShopify does not allow these to change after creation.Recreate the definition or source.
Whole lists “changed as a whole”The diff replaced a list rather than its entries.Undo the parts, or edit by hand.

Every undo is itself recorded

Before writing, LVNDR stores the record's current state as a new version. The undo then shows up in the change log as a change by “LVNDR undo”, with the staff user who asked for it.

That change can be undone like any other. Undos never join batches, never trip alerts and are never rolled back by a restore point.