How scheduling works
Schedules, timing, changes, windows and runs: the ideas behind Metascheduler, and what happens at each moment.
The building blocks
A schedule is an entry on your calendar. It has a name, a timing and a list of changes.
A change is one kind of edit to a set of items: "take 20% off these 140 variants", or "swap the main menu for the Black Friday menu". Each change has:
- a change type, like Variant prices or Navigation menu (every type);
- the items it changes, like products, entries or a menu;
- what it does at the start;
- what happens at the end: Revert, Set to something else or Keep.
Changes run in the order they're listed.
Timing
| Timing | Runs | At the end |
|---|---|---|
| One time | Once, at a date and time. | Nothing: its changes stay, like a Rollouts Launch. |
| Window | At a start, until an end. | Each change follows its end choice, like a Rollouts Event. |
| Repeat | A window that happens daily, weekly or monthly. | Each window reverts at its own end. |
| Follow a rollout | When a Shopify rollout becomes active. | When the rollout ends, as you chose. |
Each schedule has its own time zone. Times are stored exactly, and shown in the schedule's zone.
Statuses
A schedule moves through these statuses:
- Draft: being set up. It never runs.
- Scheduled: waiting for its start.
- Live: its changes are made now.
- Ended: it ran, and nothing more is due.
You can also Pause a schedule (nothing new starts; anything live still reverts at its end) or Archive it (it won't run again; anything live still reverts). An ended or archived schedule can't be edited: select Duplicate to run it again.
What happens at the start
For each item, Metascheduler:
- reads the current value and saves it (the snapshot);
- writes the new value;
- saves what it wrote.
If an item already has the value, nothing is written. A percentage is always worked out from the saved value, so a retry never takes 20% off twice.
What happens at the end
For each item, depending on the change's end choice:
- Revert: if the live value is still what Metascheduler wrote, it puts back the saved value. If someone changed it, it leaves it alone and asks you. See How reverting works.
- Set to something else: writes the end value you chose.
- Keep: does nothing.
Late runs
Metascheduler runs each start and end once, on time. If it can't run on time (say, Shopify was down), it follows these rules:
| Situation | What happens |
|---|---|
| A start up to 5 minutes late | Runs as normal. |
| A start later than that, inside its window | Runs, and is marked Late. |
| A start whose window has already ended | Skipped, and shown in Needs you. Its end is cancelled. |
| An end, however late | Always runs. Putting things back is the safe direction. |
| A one-time change more than a day late | Waits for you in Needs you: Run now or Skip. |
Run now, Retry and rollout starts aren't held by these rules.
Retries
When Shopify is busy or unreachable, Metascheduler waits and tries again, up to 5 times, with longer waits each time. A change Shopify refuses (a value that isn't allowed, an item that's gone) isn't retried: that item fails and the rest carry on, and the run shows Partly done.
Conflicts
When two schedules change the same item at overlapping times, the editor lists it under Conflicts, and the calendar flags both. It's a warning, not a block: the safe revert rules keep the overlap from clobbering either one.
Still stuck? We're happy to help.