# How reverting works

> Metascheduler saves what it replaces and checks before it puts it back, so it never overwrites an edit someone made in the meantime.

Documentation · 3 min read · Updated November 4, 2026

Every change Metascheduler makes can be undone. This article explains how, and why it sometimes asks you first.

## Snapshots

Just before a schedule changes an item, Metascheduler reads the item's current value and saves it. That saved value is the **snapshot**. It also saves what it wrote. At the end, the snapshot is what a revert puts back.

Only the fields a change touches are saved and restored. A page change that edits the title doesn't touch the page's content, and a tag change only takes off the tags it added and puts back the tags it removed.

## Checking before reverting

At the end of a window, Metascheduler reads each item again and compares it with what it wrote:

- **Same**: nobody touched it. It puts back the snapshot.
- **Different**: someone or something else changed it. Metascheduler leaves the item alone, marks it **Changed by someone else**, and adds an item to **Needs you**.

This is called **drift**. It isn't an error: it means your teammate's edit, or another app's, is safe.

> **Try it:** [What happens when someone else changes it](https://metascheduler.app/help/undo-and-drift)

## What counts as a change

Each change type compares what matters for it:

| Change type | Compared |
| --- | --- |
| Statuses and fields | The values it changed |
| Metafield value | Shopify's own fingerprint of the value |
| Variant prices | The amounts (20 and 20.00 are the same) |
| Tags | The tags it added are still there, and the tags it removed are still gone |
| Sales channels | Only the channels it touched |
| Navigation menu | The whole menu |
| Pages and blog posts | Only the fields it touched. Reformatted HTML isn't an edit. |

## Your choices

In **Needs you**, an item that was changed shows the schedule, the item, and two buttons:

- **Restore anyway** puts back the snapshot, over the other edit.
- **Keep current** keeps what's there now.

If another live schedule changes the same item, **Restore anyway** asks you to confirm first: it would put back the value from before both schedules.

## Undoing by hand

- **Run now** on a live schedule reverts it now, with the same checks.
- Removing items from a live schedule asks whether to **Revert now** or **Keep as it is**.
- **Pause** and **Archive** don't undo anything live. It still reverts at its end time.

> **Online store changes**
>
> Shopify doesn't send apps a notice when a menu, page, blog post or policy changes, so for those Metascheduler checks at the end, right before reverting. The result is the same.

> **Menu translations**
>
> Shopify recreates a menu's items when they change, so translated item titles need adding again after a menu is swapped or reverted.

## How long snapshots are kept

Snapshots and run history are deleted 90 days after the run, once their window is over. A snapshot still needed to undo a change is kept until the change is undone. See the [privacy policy](https://metascheduler.app/privacy.md).

## Related articles

- [Resolve what needs you](https://metascheduler.app/help/needs-you.md): Needs you lists the decisions only you can make, like an edit made during a schedule or a change that failed. Here's what each one means and what to do.
- [How scheduling works](https://metascheduler.app/help/how-scheduling-works.md): Schedules, timing, changes, windows and runs: the ideas behind Metascheduler, and what happens at each moment.
- [Change types](https://metascheduler.app/help/change-types.md): Every kind of change Metascheduler can schedule, what it does, how it reverts, and which plan has it.
