To schedule a sale on your store, go to Discounts → Create discount, choose Automatic discount, set the start and end date, and pick the products or collections. For sales that must appear on Google Shopping and marketplace feeds, schedule real price changes instead — using an app or a scripted Admin API job.
- Automatic discounts self-revert; real price changes don't.
- Only real price changes appear in Google Merchant feeds and marketplaces.
- Compare-at prices unlock strike-through display in most themes.
- Always plan the restore step before you plan the sale.
For short customer-facing promotions, use automatic discounts with a start and end date. For site-wide sales that need to appear on feeds and marketplaces, schedule real price changes.
Automatic discounts
Discounts → Create → set a schedule. Applies at checkout, no code needed. Works for a percentage or amount off eligible products. Great for short flash sales because it reverts itself at the end date.
Scheduled price changes
A price scheduler writes the new price at the sale start and restores the original when it ends. Prices are visible in feeds, embedded shops and marketplaces — critical for sales you promote outside your storefront.
Which to pick
The choice comes down to where the sale needs to be visible.
| Where sale is visible | Recommended |
|---|---|
| Only your checkout | Automatic discount |
| Storefront + Google feed | Real price change + compare-at |
| Marketplace listings | Real price change |
| Ad creative + landing page | Both (price change + code) |
The restore step
Every scheduled sale needs a restore step. Automatic discounts restore themselves. Manual price changes require a matching restore job — set the calendar reminder before you set the sale.
Calculating Margin Thresholds for Effective Sale Scheduling
Before inputting dates into Shopify, merchants must establish profit protection thresholds. High-growth stores typically aim for a minimum of a 15-20% net margin during promotional windows. To ensure scalability, calculate your Break-Even Return on Ad Spend (ROAS) based on the planned discount percentage. For instance, if your baseline gross margin is 60% and you apply a 20% site-wide discount, your new margin is 40%, necessitating a 50% increase in conversion volume just to maintain current profit levels. When scheduling via the Discounts panel, avoid the mistake of discounting low-stock items (fewer than 10 units) which can lead to overselling during peak traffic synced with the sale’s start time. Instead, filter your scheduled collections to include only SKUs with deep inventory to maximize the utility of the automation.
When scheduling a flash sale, ensure featured SKUs have at least 3x the inventory of a standard 7-day sales period to prevent 'out of stock' badges within the first hour of scheduling.
Managing Theme-Level Countdown Timers and Visibility
A scheduled sale is invisible to the customer until they reach the cart unless theme-level modifications are implemented. To create a cohesive 'Deal of the Day' experience, you must synchronize your Discount schedule with your Liquid theme files or a dedicated landing page builder. Using metaobjects, you can store the 'Sale End Date' and fetch it to drive a countdown clock on the product page. This ensures customers see a live timer ticking down to the exact second the Shopify discount expires. Without this synchronization, a significant gap exists between the 'Compare at' price logic and the checkout reality, often resulting in abandoned carts from confused users who don't see the discount applied early enough in the funnel.
- 1Define Metaobject
Create a new Metaattribute for 'Sale Expiry' to store the UTC timestamp of your scheduled discount.
- 2Logic Sync
Ensure the 'Starts at' time in your metaobject exactly matches the Discount 'Active from' field.
- 3Liquid Snippet
Insert a JS-based countdown timer into your product-template.liquid file that references the metaobject value.
- 4Buffer Period
Set the timer to hide 5 minutes before the technical cutoff to account for regional cache delays.
Synchronizing Market-Specific Pricing Calendars
Shopify Markets allows for localized pricing, but scheduling requires precision when dealing with multiple time zones. If you schedule a sale to begin at 12:00 AM, Shopify defaults to the store's primary timezone. This can lead to compliance issues in regions like the EU (Omnibus Directive), where price transparency and historical pricing must be tracked for 30 days prior to a sale. When scheduling international sales, use the CSV upload method for 'Compare at' prices to ensure that currency conversions are correctly reflected in the discounted price. Failure to do so may result in 'broken' discounts where rounded currency rates conflict with fixed-amount discount codes.
| Region | Compliance Requirement | Recommended Scheduling Multiplier |
|---|---|---|
| European Union | Omnibus Directive Tracking | 30-day Price History |
| United Kingdom | ASA Pricing Guidelines | 28-day Consistent Price |
| United States | FTC Deceptive Pricing | Substantial Volume Rule |
| Australia | ACCC Misleading Claims | Actual Former Price |
Automating Social Media and Email Triggering
The biggest operational bottleneck in scheduling a sale is the lag between the Discount becoming active and the marketing blast being sent. Use Flow automations to bridge this gap. You can set a trigger for 'Discount Created' or a scheduled time trigger that matches your sale start. This automation should update a 'Sale Active' tag on your products, which in turn can trigger a Klaviyo flow or a push notification. Expert merchants often schedule the sale to start 15 minutes before the email blast to ensure the Shopify cache has fully cleared and the discount is 100% functional for the first wave of click-throughs. This prevents 'Invalid Code' errors which are common during high-concurrency launches.
- Tag products with 'On Sale' exactly at T-minus 0.
- Update the 'Announcement Bar' via Flow automations or API.
- Trigger a refresh of the Sitemap to alert Google Bot.
- Enable a high-performance 'Collection Filter' for discounted items only.
- Switch the 'Hero Image' to the promotional version.
Post-Sale Recovery and Margin Analysis
Once the 'End Date' of a scheduled sale passes, Shopify automatically stops applying the discount, but it does not automatically revert 'Compare at' prices if they were adjusted manually or via app. This creates a technical debt known as 'Discount Decay.' Merchants should run a Price Audit report 24 hours after a sale concludes. This report compares current 'Price' and 'Compare at Price' fields to identify any 'stuck' promotional pricing. Furthermore, use Shopify Analytics to pull the 'Discounts' report to verify total margin impact. A successful scheduled sale should see an AOV (Average Order Value) increase of at least 10% to offset the discount percentage, otherwise, the scheduling serves only to accelerate revenue while eroding profitability.
If you forget to clear 'Compare at' prices after a scheduled sale, Google Merchant Center may flag your feed for 'Preceptive Pricing,' which can lead to a suspension of your CSS ads.
Plan price changes, promotions and automatic restoration — without discount codes.
Learn moreFrequently asked questions
The most common questions merchants ask us about pricing.