The complaint appears every November. One merchant wrote that the app got stuck during their big Black Friday. Another that it stopped working an hour into the sale. The shape is always the same: some products moved, some did not, and there is no list of which is which.
Find the boundary before you touch anything
Export your products to CSV. It carries Price and Compare-at price for every variant, and it takes about thirty seconds. Sort by price and the two populations separate immediately: discounted rows and untouched rows.
Do this first
The export is the only artefact that survives whatever you do next. Take it before you try any fix, because the fix may overwrite the evidence of what the half-run actually did.
Then decide which direction to finish
You have two options and the wrong one is expensive.
| Finish the sale | Roll it back | |
|---|---|---|
| When it is right | Most of the catalogue already moved | Only a small share moved |
| The risk | The remaining products may fail the same way | You need the original prices, which the half-run may not have saved |
| What you need | A list of untouched variants | A snapshot taken before the run |
If you have no record of the original prices, rolling back is not actually available to you. You would be reconstructing prices by arithmetic, and dividing a discount back out is how a 25% sale becomes a permanent 6% price cut nobody notices for months.
What not to do at this point
- Do not re-run the same job over the whole catalogue. Products that already moved get discounted a second time, and the compounding is silent.
- Do not fix prices by hand in the admin while a job might still be running. The job will overwrite you.
- Do not uninstall the app to stop it. Uninstalling removes your access to whatever record it kept, which is the thing you most need.
The property that prevents this
A run that reports per variant, rather than per job, turns a partial failure into a list. Nine hundred and forty succeeded, sixty failed, here are the sixty, retry those. The failure still happened. What changed is that it is now a five minute task instead of an evening spent comparing spreadsheets.
SaleGuard records price and compare-at per variant before writing anything, and reports each variant's outcome separately, so a half-run comes back as a list of exactly what to retry.