Built for Shopify 4.8★(42) Free plan available
Scheduling

How to Schedule Shopify Sale Prices: Start, End, and Restore Pricing Automatically

Schedule Shopify sale prices, preview changes, set automatic rollbacks, and restore original Price and Compare-at price values safely.

Published Updated

Quick answer

To run a temporary Shopify sale, choose the products or variants, configure the new Price and Compare-at price, preview the result, then schedule both the price change and an automatic rollback that restores the saved original values.

Workflow at a glance

Choose products and set prices

Define the exact variant scope, exclusions, Price change, and Compare-at price behavior for the sale.

Preview before scheduling

Review affected variants and calculated prices, then copy the preview configuration into a scheduled task.

Schedule start and rollback

Set the sale start and end together so rollback restores the original saved values automatically.

A simple 20% sale could look like this:

Before the sale

  • Price: $100
  • Compare-at price: empty

During the sale

  • Price: $80
  • Compare-at price: $100

After rollback

  • Price: $100
  • Compare-at price: restored to original value

For temporary sales, restoring original values is safer than reversing discounts with another percentage calculation.

In Springify Bulk Price Editor, previewing and scheduling are separate steps. First, create a preview task and check the affected variants. If everything looks good, copy that task and schedule the sale and rollback.

Shopify sale prices vs Shopify Discounts

Changing Price or Compare-at price changes the product pricing stored in Shopify.

Shopify Discounts work differently. They apply discounts through Shopify’s discount system rather than by changing the product’s stored Price.

For a typical sale-price setup:

  • Price: $80
  • Compare-at price: $100

The storefront can show $100 as the previous price and $80 as the current price, depending on the theme.

This guide focuses on scheduled pricing changes, not discount codes.

Step 1: Choose the products and variants

In Springify, you can target the whole store, specific products, variants, or collections, or build custom selections with filters for tags, vendors, collections, product status, inventory, sale status, and other conditions. Combine filters as needed and exclude products, variants, or collections from the selection.

Springify applies price changes at the variant level. Preview shows the number of affected variants, so you can verify the scope before scheduling the sale.

Springify Match advanced conditions with all conditions, Collection Hydrogen, and Tags snowboard populated

Step 2: Set the sale price and Compare-at price

Next, decide what happens to the selling price.

For a temporary sale, common options include:

  • decrease Price by a percentage;
  • decrease Price by a fixed amount;
  • set a fixed Price;
  • keep the existing Compare-at price;
  • set Compare-at price from the current Price;
  • set Compare-at price to show a specific discount percentage;
  • change both Price and Compare-at price together.

For a simple 20% sale:

Before

  • Price: $100
  • Compare-at price: empty

During the sale

  • Price: $80
  • Compare-at price: $100

The customer pays $80, while the higher Compare-at price shows the previous price.

What if the product is already on sale?

Suppose the product already has:

  • Price: $90
  • Compare-at price: $100

You want an additional 5% off the current selling price while keeping the existing Compare-at price.

The result should be:

  • Price: $85.50
  • Compare-at price: $100

The 5% reduction is calculated from the current Price of $90.

Set Compare-at price from the discount you want to show

A common mistake is raising the Compare-at price by the same percentage you want customers to see as a discount.

For example:

  • Price: $100
  • Compare-at price: $120

The actual discount relative to $120 is:

($120 - $100) / $120 = 16.67%

So a Compare-at price that is 20% higher does not represent 20% off.

If $100 should represent a true 20% discount:

Compare-at price = $100 / (1 - 0.20) = $125

The result is:

  • Price: $100
  • Compare-at price: $125
  • Discount: 20%

Springify can calculate this for you. Choose Set compare-at price to show target percent off and enter the discount you want customers to see. If the task also changes the Price, the Compare-at price adjusts accordingly.

Springify Compare-at price settings using Set compare-at price to show target percent off with a 20 percent customer discount

For a deeper explanation of the calculation, see the Shopify Compare-at Price guide.

Step 3: Preview the price changes

Before scheduling the sale, create a preview task.

Check:

  • affected variants;
  • excluded products;
  • current Price;
  • new Price;
  • current Compare-at price;
  • new Compare-at price;
  • obvious price outliers.

In Springify, a preview task cannot be scheduled directly.

Use this workflow:

  1. Create the preview task.
  2. Review the affected variants and resulting prices.
  3. Open the preview task and choose Copy to new task.
  4. Keep the same selection and pricing configuration.
  5. Add the scheduled start and scheduled rollback.
  6. Create the scheduled task.

This lets you verify the actual variants and calculated prices before creating the scheduled version.

Full Springify preview task page showing 26 affected variants and the Apply changes confirmation button

Step 4: Schedule the sale and automatic rollback

In the copied task, enable the scheduled start time and choose when the sale should begin. Then enable scheduled rollback and set when the promotion should end.

For example, a Black Friday promotion could start on November 27, 2026 and roll back on November 30, 2026.

Before finalising the task, check the selection, exclusions, pricing setup, start time, and rollback time.

Springify scheduling settings with Run later and Schedule rollback enabled, starting November 27 2026 and rolling back November 30 2026 at midnight

Step 5: Restore the original prices

Rollback should restore the values saved before the sale.

It should not try to undo the discount using the opposite percentage.

For example:

$100 → decrease 25% → $75

Increasing $75 by 25% gives:

$75 → increase 25% → $93.75

It does not return the price to $100.

For a temporary sale, the safer workflow is:

$100 → $75 → restore saved $100

Springify stores previous values for variants changed by the task for rollback.

Extra protection with Price Vault

Task rollback restores values saved for that specific price task. Springify Price Vault provides a separate pricing snapshot. An initial snapshot is created automatically when Springify is installed, and you can create another snapshot before a major sale.

Springify Price Vault with completed pricing backups and Restore actions

Step 6: Avoid conflicts while the sale is active

Prices can still be changed after the scheduled sale starts.

Manual price edits

Suppose:

  • original Price: $100;
  • scheduled sale Price: $80;
  • manual edit during the sale: $85.

If rollback later restores the saved pre-sale value, the Price can return to $100 rather than stay at $85.

Keep this in mind before manually editing the same pricing fields during an active sale.

Other apps and integrations

Imports, ERP systems, sync apps, and other pricing tools can also update Price or Compare-at price.

If another system changes the same field during the campaign, the live Shopify value may differ from the value set by the scheduled task.

Overlapping price tasks

Be careful when separate tasks change the same variant.

For example:

Original price → Task A → Task B

Task B saves the state that existed after Task A. Task A has its own earlier saved state.

If both changes later need to be rolled back, rollback order can matter.

For a straightforward temporary sale, avoid unnecessary overlapping price tasks on the same variants.

Practical checklist

Before creating the scheduled sale, confirm:

  • the correct products, collections, or matching conditions are configured;
  • exclusions are correct;
  • the preview has been reviewed;
  • the affected variant count looks correct;
  • the Price calculation is correct;
  • the Compare-at price behavior is intentional;
  • the preview task has been copied for scheduling;
  • scheduled start is configured;
  • scheduled rollback is configured;
  • no conflicting price task or integration is expected;
  • for a large or important campaign, consider creating a fresh Price Vault snapshot.
FAQ

Guide FAQ

Will products added after the sale starts automatically join the sale?

No. A scheduled task applies its price changes to the variants selected when it runs; it does not continuously watch the store for new products.

Can I restore the prices from one specific sale?

Yes. Springify stores the previous values for variants changed by a task and can use them for manual or scheduled rollback.

Can I schedule different prices for Shopify Markets?

Springify changes the store's main product pricing. If you use fixed prices or other market-specific pricing, verify how those values interact with the main product prices before scheduling the sale.

Does cancelling or deleting a task restore the prices?

Not necessarily. Cancelling or deleting a task is different from rolling back price changes. If prices have already changed, use rollback to restore the saved values.

Does uninstalling a bulk price editor restore the old prices?

No. Removing an app does not itself restore Price or Compare-at price values that the app already wrote to Shopify. Restore the prices before uninstalling if that is the result you want.

Get started

Bulk price changes with a preview and a rollback plan

Target the right products, review every update before it goes live, and restore prices when the promotion ends.

Schedule your Shopify sale

Start a free 7-day trial