Skip to main content

Undo Bulk Edits

Every bulk edit job records the original value of each field before it changes anything. As long as you're inside your plan's retention window and the job didn't include a delete, you can roll back the entire job with one click.

How revert works

When a job runs, the app stores a change log: for every product and variant it touches, it captures the value of every modified field as it was just before the change. Reverting a job creates a new job (called a revert job) whose modifications are "set each captured field back to its original value".

The revert job runs through the same queue as any other bulk edit, so you'll see it in your history with its own status, progress, and detail page. You can think of it as Ctrl-Z but recorded explicitly in your audit trail.

Job detail page with the Revert button highlighted

Open the job's detail page, then click Revert. The app creates a new job that restores the original values.

When you can revert a job

The Revert button appears on the job detail page when all of these are true:

  • The job's status is Completed (or a status the app considers "revertable" — Cancelled jobs with partial changes also qualify).
  • The job actually made changes (a job that matched zero rows has nothing to revert).
  • The job is not itself a revert job — you can't revert a revert. (You can rerun the original to re-apply the changes.)
  • The job didn't include a Delete Product or Delete Variant modification — those changes are permanent at the Shopify API level.
  • The job's change log is still within your plan's retention window (below).

If any of these conditions aren't met, the Revert button is hidden or disabled with a tooltip explaining why.

Retention windows

Change logs are kept for a plan-dependent number of days. After that, the records are deleted and the job can no longer be reverted.

PlanChange log retention
Free15 days
Starter30 days
Growth60 days
Scale90 days

This matches the job history retention in Pricing — when the job ages out of history, its change log ages out too.

What gets restored

Revert restores every field the original job changed, for every row it changed. If you applied a price update to 412 variants and a tag update to 80 products in the same job, reverting it restores 412 prices and 80 tag lists.

The restored values are the ones captured at the moment the original job ran. If those products were modified again afterwards (by you in Shopify admin, by another bulk edit, or by an integration), the revert will overwrite those subsequent changes back to the captured values. Read the job detail's affected-rows list before clicking Revert if you're unsure.

What revert doesn't cover

  • Deletes. Shopify can't restore deleted products or variants on demand. The app blocks reverts on any job that includes a Delete Product or Delete Variant modification.
  • External effects. If a job triggered a Shopify Flow, sent a webhook, or fired an integration downstream, the revert only fixes the product data — it doesn't unwind whatever those downstream systems did.
  • Image uploads. The app deletes added images and re-adds removed ones based on the captured URLs. If the original image URL is no longer reachable, the re-add will fail.
  • Manual edits made after the job. Revert restores the captured values, not the most recent ones. If a teammate fixed a typo after the bulk job ran, that fix gets overwritten by the revert.

Auto-revert on scheduled jobs

When you create a Scheduled job (Step 3 in the bulk edit wizard), you can turn on Auto-revert and pick a future date/time. The app schedules a second, paired revert job that runs at that time.

This is the cleanest way to set up time-boxed promotions:

  1. Schedule a price drop for Friday at 9 AM.
  2. Turn on Auto-revert and set it to Monday at 9 AM.
  3. The promo runs, then automatically rolls back — no manual cleanup needed.

The paired revert is just a regular scheduled revert job — you can find it in History, cancel it from its detail page, or change its schedule before it runs.

Reverting a recurring job's run

Recurring (automation) jobs spawn one regular job per run. Each spawned run is independently revertable from its job detail page — the recurring schedule itself isn't affected.

If you want to roll back many runs at once you'll need to revert them one by one. (The automation list shows the most recent runs; click into each and revert as needed.)

After you click Revert

  1. A confirmation dialog appears with a summary of what will be restored.
  2. Confirming creates the revert job and redirects you to its detail page.
  3. You can watch progress just like any other job — Queued → Processing → Completed.
  4. The original job's detail page now shows a "Reverted by" notice linking to the revert job, and the revert job's detail page shows "This reverts ..." linking back.
Original job detail page showing a Reverted by notice with link

The cross-link makes the relationship between the original and the revert job easy to follow in history.

What's next?