Running a sale on Shopify should be straightforward, but the reality is that misconfigured sales are one of the most common issues we see with UK ecommerce brands. Discount codes that do not work, compare-at prices that display incorrectly, stacking issues that erode margins, and sale messaging that lingers long after the sale has ended — these are problems that cost real money and damage customer trust.

This guide walks through every step of setting up a sale on Shopify, from choosing the right discount mechanism to the often-forgotten post-sale cleanup process. Whether you are running a flash sale, a seasonal clearance, or a Black Friday promotion, the principles and steps are the same.

Types of sales on Shopify

Shopify offers three primary mechanisms for running a sale. Each serves a different purpose and has different operational implications.

Compare-at pricing

The most visual approach. You set a “compare at” price (the original price) and reduce the main price to the sale price. Shopify automatically displays the discount percentage and shows the original price with a strikethrough. This is the cleanest approach for sitewide or collection-wide sales where you want every product page to show the discount visually.

Best for: Seasonal sales, Boxing Day clearance, end-of-line markdowns, any sale where you want the discount visible on product pages and collection pages.

Automatic discounts

Discounts that apply automatically in the cart or at checkout without the customer needing to enter a code. These are configured in Shopify Admin under Discounts. You set the discount type (percentage, fixed amount, or buy-X-get-Y), the conditions (minimum purchase, specific collections, customer eligibility), and the schedule (start and end dates).

Best for: Sitewide percentage-off promotions, free shipping offers, buy-one-get-one deals, and any promotion where you want a frictionless customer experience.

Discount codes

Codes that customers enter at checkout to receive a discount. These are more work for the customer but offer tracking benefits — you can attribute revenue to specific marketing channels or campaigns based on which code was used.

Best for: Email-exclusive offers, influencer promotions, VIP early access deals, and any promotion where you need to track the source or limit access.

Setting up compare-at pricing

Here is the step-by-step process for setting up a compare-at price sale:

Step 1: Record your original prices

Before changing any prices, export your product catalogue as a CSV and save it. This is your backup. If anything goes wrong during the sale, you can reimport the original prices immediately. This step is non-negotiable — skip it and you risk not being able to restore prices accurately after the sale.

Step 2: Set compare-at prices

For each product or variant you want to include in the sale, set the “Compare at price” field to the current (original) price. Then reduce the “Price” field to your desired sale price. Shopify will automatically calculate and display the discount percentage.

Step 3: Verify the display

After updating prices, preview your product pages and collection pages to verify that the compare-at price, sale price, and discount percentage are displaying correctly. Check both desktop and mobile views. Different themes handle sale pricing display differently, so verify that your specific theme shows the information clearly.

Step 4: Check your Google Shopping feed

If you use Google Shopping, your product feed will automatically reflect the new prices. Verify that the sale prices and original prices are feeding through correctly to your Google Merchant Centre account. Sale pricing in Google Shopping can significantly improve click-through rates.

UK pricing regulations

Under UK Consumer Protection from Unfair Trading Regulations, compare-at prices must represent a genuine price at which the product was offered for sale for a reasonable period. Using inflated or fictitious compare-at prices is a regulatory risk and damages consumer trust. Only set compare-at prices that reflect your actual recent trading prices.

Setting up compare-at pricing on Shopify
Compare-at pricing is the most visual sale mechanism on Shopify. It automatically shows discount percentages and strikethrough pricing across your store.

Configuring automatic discounts

Automatic discounts are configured in Shopify Admin > Discounts > Create discount > Automatic discount. Here is how to set them up correctly:

Discount type selection

  • Percentage off. The most common type. Set the percentage and choose whether it applies to specific products, collections, or the entire order.
  • Fixed amount off. A set pound amount off the order total. Works well for “£10 off orders over £50” type promotions.
  • Buy X get Y. Promotional mechanics like “buy 2 get 1 free” or “buy a shirt, get 50% off a tie”.
  • Free shipping. Free shipping above a threshold or on all orders. Can be combined with product discounts.

Conditions and eligibility

Configure the minimum requirements (minimum purchase amount or minimum item quantity), customer eligibility (all customers, specific segments, or specific customers), and maximum uses (total uses or per-customer limits). Getting these conditions right is critical — a misconfigured automatic discount can apply more broadly than intended, eroding margins.

Scheduling

Set the start date and time, and the end date and time. Use your local time zone. Automatic discounts will activate and deactivate at the scheduled times without manual intervention. Double-check that the dates are correct — a typo in the end date can leave a promotion running longer than intended.

Creating and managing discount codes

Discount codes are created in Shopify Admin > Discounts > Create discount > Discount code. Best practices:

  • Code naming. Use clear, memorable codes. BFRIDAY26 is better than XKJF84. For email-exclusive codes, include a reference to the channel: EMAILVIP20.
  • Usage limits. Set total usage limits to prevent codes from being shared beyond your intended audience. For VIP codes, set a per-customer limit of one use.
  • Combination rules. Decide whether the code can be combined with other discounts. During sales, you typically want codes to not stack with compare-at pricing or automatic discounts.

For guidance on email marketing to promote discount codes, read our article on the seven Klaviyo flows every ecommerce store needs.

Building sale collection pages

A dedicated sale collection page makes it easy for customers to find all discounted products in one place.

Automated sale collection

Create an automated collection with the condition: “Compare at price is greater than product price”. This automatically includes every product with a compare-at price, and automatically removes products when you restore their prices after the sale. This is the most efficient approach for managing your sale page.

Collection page optimisation

  • Write a clear collection title and description that includes relevant keywords for SEO
  • Upload a sale-themed collection image
  • Sort products by discount percentage (highest first) or by popularity to put your strongest offers front and centre
  • Add sub-collections by category if your sale spans multiple product types
Shopify sale collection page setup
An automated sale collection dynamically includes all discounted products, making it the most efficient approach for managing your sale page.

Site-wide sale messaging

Your sale needs to be visible immediately when customers arrive on your site. Key elements:

Announcement bar

Update your theme’s announcement bar to promote the sale. Keep the message concise: “Sale: Up to 50% off — Shop now”. Link it to your sale collection page. Most Shopify themes allow you to customise the announcement bar in the theme editor.

Homepage hero banner

Replace your standard homepage hero banner with sale creative. Include clear messaging about the discount, a prominent CTA button linking to the sale page, and the sale end date if applicable. Prepare this creative in advance — it should be ready to swap in with minimal effort on launch day.

Product page badges

Many Shopify themes automatically display “Sale” badges on product cards when a compare-at price is set. If your theme does not do this, consider adding a sale badge through theme customisation. These visual indicators help customers identify sale items when browsing collection pages.

Bulk price updates for large catalogues

If your catalogue has hundreds or thousands of products, updating prices individually is impractical. Here are your options:

Shopify bulk editor

Select multiple products in Shopify Admin > Products, then use the bulk editor to update pricing fields. This works well for up to 100-200 products. For larger updates, the CSV approach is more efficient.

CSV export and import

Export your products as a CSV, update the pricing columns in a spreadsheet (Google Sheets or Excel), and reimport. The key columns are “Variant Price” and “Variant Compare At Price”. Use spreadsheet formulae to calculate sale prices in bulk — for example, multiplying the original price by 0.7 for a 30% off sale.

Third-party apps

Apps like Matrixify, Bold Discounts, or Amai Bulk Discount & Sales enable scheduled price changes, bulk rule-based discounting (for example, 20% off all products tagged “summer”), and automatic price restoration. These are particularly useful if you run frequent sales and want to avoid manual CSV management.

Discount stacking and combination rules

Discount stacking is one of the most common sources of margin leakage during sales. Shopify’s combination settings let you control how discounts interact:

  • Product discounts (compare-at pricing) cannot be controlled through Shopify’s combination settings — they are always visible. To prevent codes from stacking with sale prices, configure your codes to not combine with product discounts.
  • Automatic discounts and discount codes can be configured to combine or not combine with each other.
  • Shopify Plus merchants can use Shopify Functions (formerly Scripts) for more granular control over discount logic.

Test every combination scenario before launching your sale. The most expensive stacking issues are ones you discover from customer complaints after the sale has been running for hours.

Testing your sale before launch

Thorough testing prevents costly errors. Here is a pre-launch testing checklist:

  • Place test orders with sale-priced products to verify correct pricing
  • Test discount codes in the checkout to ensure they apply correctly
  • Verify that discount codes do not stack with sale pricing (unless intended)
  • Check that the sale collection page shows the correct products
  • Verify announcement bar and homepage banners display correctly
  • Test the mobile experience — product pages, collection pages, and checkout
  • Confirm that shipping calculations work correctly with sale prices (especially if you have free shipping thresholds)
  • Check your Google Shopping feed reflects the correct sale prices
  • Verify email links in your launch campaign point to the correct pages
  • Test with different customer accounts (new, existing, VIP) to verify eligibility rules

For more on ensuring your Shopify store performs well under load, see our guide on Core Web Vitals on Shopify.

Testing Shopify sale configuration
Thorough pre-launch testing catches pricing errors, stacking issues, and display problems before your customers encounter them.

Post-sale cleanup and price restoration

The post-sale cleanup is the step most brands forget or rush. A clean restoration to normal trading is essential.

Price restoration

If you used compare-at pricing, restore original prices by either removing the compare-at price field (setting it to blank) or reimporting your pre-sale CSV backup. Verify that no products still show sale pricing after the restoration.

Discount deactivation

Deactivate any discount codes and automatic discounts that should no longer be active. If you used scheduled end dates, verify they worked correctly. A discount code that remains active beyond the sale period is a margin leak waiting to happen.

Site messaging removal

Update your announcement bar, homepage banner, and any sale-specific navigation links. Remove or update sale badges. Your site should reflect normal trading within hours of the sale ending.

Google Shopping feed update

Verify that your Google Shopping feed reflects restored prices. If your feed updates on a schedule, force a manual refresh to ensure sale prices are not still showing in Shopping results after the sale has ended.

Analytics and reporting

Run a post-sale report covering: total sale revenue, number of orders, average order value, discount usage, margin impact, and channel attribution. This data informs your next sale’s strategy.

For broader guidance on ecommerce analytics, read our guide on ecommerce analytics setup and what to track.


Setting up a sale on Shopify is not complicated, but it requires attention to detail. The mechanics are straightforward — compare-at prices, automatic discounts, discount codes — but the potential for errors is high if you rush the setup, skip testing, or forget the post-sale cleanup.

Take the time to plan your sale properly, test every element before launch, and restore your store to normal trading promptly after the sale ends. These habits prevent the margin leakage, customer confusion, and operational stress that poorly executed sales create.

If you need help configuring your Shopify store for a sale or seasonal promotion — from technical setup to email campaign integrationget in touch. We help UK ecommerce brands run sales that work smoothly and profitably.