Setting up pricing, discounts, and promotions on Shopify is one of those things that takes a few hours to get right and then pays you back every single day. Your pricing structure determines how products get found in filtered searches, how credible your sale prices look, and whether customers feel like they got a deal or got played. Get the fundamentals set up correctly and the promotional work that comes later is much easier to execute.

This guide covers how to set up each piece of Shopify’s pricing and discount system, with links to detailed walkthroughs for each topic. Start with the section that applies to where your store is right now.

Key Takeaways

How Shopify’s Pricing and Discount System Works

Before setting anything up, it helps to know how the pieces fit together. Shopify has two distinct layers for controlling what customers pay:

  • Product pricing: Set on individual products and variants. Includes the sale price (what customers pay) and the compare-at price (the crossed-out original price). This is what shows on product pages, in collections, and in search results.
  • Discounts: Applied at checkout or automatically at cart stage. These are separate from product pricing and include percentage discounts, fixed amount discounts, free shipping, and buy X get Y deals.

Both layers can work together. A product might already show a sale price (via compare-at pricing), and a customer might also apply a discount code at checkout on top of that. Or you might run automatic discounts without touching product prices at all. Knowing which tool to use for which goal is the first decision you need to make.

Choosing the Right Pricing Tactic for Your Store Stage

The pricing system that works for a store doing $50K/year is different from the one that works at $5M/year. A quick map of which tactics matter most at each stage:

  • New stores ($0-50K/year revenue): Focus on price perception fundamentals: charm pricing, compare-at on launch products, free-shipping thresholds. Skip complex tiered discounting until you have data on what’s converting.
  • Growing stores ($50K-500K/year): Layer in seasonal sale collections, abandoned cart discount codes, and automatic discounts for first-time buyers. The systematic approach starts paying off here.
  • Established stores ($500K-5M/year): Add VIP/tiered pricing, BFCM and seasonal campaign automation, product-exclusion rules for protected SKUs. Invest in tracking which discount strategies actually drive incremental revenue vs. cannibalizing full-price sales.
  • Mature stores ($5M+/year): Custom checkout discount logic (Shopify Plus Functions), dynamic pricing rules, and per-segment promotional strategies. Margin protection matters more than ever at this scale.

The sections below cover each tactic in detail. Start with the one that matches your current stage and revisit the others as you grow.

Understanding Price Perception

The number on a price tag is only part of what customers respond to. How that number is presented, what it’s compared to, and where it sits relative to your other products all shape how customers feel about paying it. How to use price perception on Shopify covers the principles behind pricing psychology and how to apply them inside your store, from anchor pricing to charm pricing to how product page layout affects perceived value.

A few specific things worth knowing before you set prices:

  • Charm pricing works: $19.99 outperforms $20.00 consistently, especially for products under $50. The effect is smaller for higher-ticket items, but still measurable.
  • Price anchoring matters at collection level: If your cheapest product in a collection is $12 and your most expensive is $18, every price looks reasonable. Introduce a $45 option and suddenly the $18 looks like the smart middle choice.
  • Variant pricing signals quality: When a product has multiple size options, customers read upward price increments as evidence that the larger size is worth more, not just bigger. Use this deliberately when setting per-unit economics.

When Comparative Pricing Backfires

Showing a crossed-out original price next to a sale price is one of the oldest conversion tactics in retail. It works, but not always, and using it incorrectly can damage trust rather than build it. How comparative pricing doesn’t always work on Shopify looks at the situations where compare-at pricing loses its effect, including when customers have seen the same product at the same price for so long they stop believing the original figure, and what to do instead.

The cases where compare-at pricing consistently fails:

  • The “original” price was never actually charged. If you set a compare-at price without ever selling at that price, customers who research will notice and trust drops.
  • The discount is implausibly large. A 70% off tag on a product that looks like it should cost $30 raises more suspicion than it converts.
  • It’s applied to every product, permanently. When everything is always on sale, nothing feels like a real deal.

Creating a Compare at Price for Variants

When you’re running a sale on a product with multiple variants, each variant can carry its own compare-at price to make the discount visible at the variant level. How to create a compare at price for a variant during a sale on Shopify walks through setting this up so customers see the original and sale price regardless of which size, color, or option they select.

This matters more than it sounds. If your product has 8 variants and only the default variant shows a sale price, customers who select other options see a full-price tag and may assume the deal doesn’t apply to their choice. Setting compare-at prices at the variant level closes that gap and keeps the discount message consistent across every option.

Building a Sale Collection

Rather than sending customers to hunt for discounted products across your store, a dedicated sale collection pulls everything together in one place. How to create a sale collection on Shopify covers setting up an automated collection that populates with products that have a compare-at price, so it stays current without manual updates every time you add or remove something from a promotion.

How to set up the automated condition:

  1. In Shopify admin, go to Products > Collections and create a new collection.
  2. Set the collection type to Automated.
  3. Set the condition: “Compare at price” is greater than “0” (or “is not empty”, depending on your Shopify version).
  4. Save the collection and add it to your navigation. Products automatically appear when they have a compare-at price set and disappear when it’s removed.

One practical note: this automated rule catches everything with a compare-at price, including any products you’ve permanently discounted. If you only want seasonal sale items, you’ll need to either use a tag-based condition (tag products with “on-sale” during the campaign) or manage the collection manually.

Running Seasonal Discounts

Seasonal promotions are some of the highest-converting campaigns a Shopify store can run, but the execution matters as much as the timing. How to use seasonal discounts on Shopify covers planning and setting up time-limited discount codes, how to structure them so they drive urgency without eroding your baseline pricing, and what to watch for when a seasonal campaign ends to make sure nothing stays active longer than intended.

BFCM (Black Friday / Cyber Monday) Setup

BFCM is the one seasonal event where every Shopify store needs a plan, even if you don’t normally run promotions. A few things to prepare at least two weeks in advance:

  • Create your discount codes before the week of: Shopify’s discount creation doesn’t take long, but you want time to test codes, verify exclusions, and confirm they work at checkout before you blast them to your email list.
  • Set explicit start and end dates: Discount codes in Shopify support date and time limits. Use them. A code that accidentally stays active for two weeks after BFCM trains customers to wait for sales instead of buying at full price.
  • Test on mobile before launch: A significant portion of BFCM traffic comes from mobile. Test the complete checkout flow, including the discount code field, on an actual phone before the campaign starts.
  • Prepare your sale collection in advance: Move products into your sale collection (or add compare-at prices) before the campaign starts so there’s no scramble on the day.

Discount Codes vs. Automatic Discounts: Which to Use

Shopify gives you two ways to apply discounts: codes that customers enter manually at checkout, and automatic discounts that apply without any action from the customer. The right choice depends on what you’re trying to accomplish.

Use discount codes when:

  • You’re targeting a specific audience (email subscribers, social followers, loyalty members)
  • You want to track which channel or campaign is driving conversions
  • The promotion is exclusive and shouldn’t apply to all visitors
  • You need to control usage limits (e.g., one use per customer)

Use automatic discounts when:

  • You’re running a sitewide sale and want every qualifying order to get the price without extra steps
  • You’re doing a buy X get Y promotion that should apply automatically
  • You want to reduce cart abandonment by removing the friction of code entry

One important constraint: Shopify allows customers to combine one automatic discount with one discount code. They can’t stack two discount codes or two automatic discounts in a single order (without Shopify Plus Functions, which enables more complex stacking rules).

Managing Discounts Day to Day

Once you have more than a handful of active discount codes, keeping them organized takes deliberate effort. How to duplicate a discount on Shopify is useful when you’re running a similar promotion to one you’ve run before and don’t want to rebuild the conditions from scratch. How to re-enable a disabled discount on Shopify covers bringing a discount back to active status when you need to reuse it or when one was turned off by mistake.

And how to view and make comments on a discount’s timeline on Shopify explains how to use the timeline to track changes and leave notes, which becomes important the moment more than one person on your team is managing promotions.

A few habits worth building early:

  • Name codes by campaign, not product: “SUMMER2026” is searchable. “DISC20” is not.
  • Always set an end date: Open-ended discount codes are the most common source of margin leaks in Shopify stores. If a code is meant to run for a week, set a 7-day expiration when you create it.
  • Audit monthly: Go to Discounts > Active in your Shopify admin once a month and disable anything that shouldn’t still be running. Codes from six months ago are often still active.

Excluding Products from Discounts

Not every product in your store should be eligible for every discount. New arrivals, already-reduced items, and high-margin products are often better kept outside of sitewide promotions. How to exclude certain products from discounts on Shopify covers how to set those exclusions up when creating a discount, so your promotion applies exactly where you want it to and nowhere else.

The practical approach most stores use: create a “Full Price” or “No Discount” collection containing products that should never be discounted, then scope your sitewide discounts to apply to “All products except” that collection. This is faster than listing individual products and updates automatically when you add new items to the protected collection.

Promoting Discounts with Shareable Links

Getting a discount code in front of the right people is as important as the discount itself. A shareable link that auto-applies the code at checkout removes friction and increases the likelihood that someone who clicks actually converts. How to promote a discount using a shareable link on Shopify covers generating these links, where to use them, and how they behave at checkout from the customer’s side.

Shopify auto-apply links follow this format:

https://yourstore.com/discount/CODENAME

When a customer visits this URL, the code is stored in their session and applies automatically when they reach checkout. You can also append a redirect to send them directly to a specific product or collection:

https://yourstore.com/discount/CODENAME?redirect=/collections/sale

These links are particularly effective in email campaigns, influencer posts, and paid social ads where you want to pre-load the discount before the customer even starts browsing.

Tracking Which Promotions Actually Work

Running promotions without tracking them is guessing. Shopify Analytics includes a discount codes report under Analytics > Reports, which shows redemption count, revenue generated, and average order value per code. This tells you which promotions drove the most volume.

But volume isn’t the whole picture. A discount code with 500 redemptions from customers who would have bought anyway at full price is a loss, not a win. The metric that matters is incremental revenue: orders that wouldn’t have happened without the discount. To measure this properly, you need a holdout group (a segment of customers who don’t receive the promotion) and a way to compare their purchase rate against those who did. Third-party analytics tools like Polar Analytics or Triple Whale make this easier, but even a simple A/B split on your email list gives you directional data.

For a complete walkthrough of the operational setup, see our guide to Shopify payments, shipping, and orders setup.

Common Mistakes to Avoid When Setting Up Shopify Discounts

These are the errors that come up repeatedly when stores first configure their pricing and discount setup:

  • Forgetting to remove compare-at prices after a sale ends: Products stay in your sale collection indefinitely if you don’t clear the compare-at price field. After any time-limited promotion, update products in bulk to clear the compare-at price.
  • Setting discount codes without usage limits: Without a per-customer limit, a single code can be used hundreds of times by the same person or shared publicly beyond your intended audience. Set a limit of 1 per customer for targeted codes.
  • Not testing the discount at checkout before launch: Always complete a test checkout (use a $0 product or Shopify’s test mode) to confirm the discount applies correctly, respects exclusions, and shows the right amount deducted before announcing it to customers.
  • Applying compare-at pricing to every product by default: This devalues the signal. Reserve compare-at prices for products that are genuinely reduced from their standard price.
  • Combining automatic discounts with discount codes without checking the math: Shopify allows one of each, but if your automatic discount already takes 20% off, adding a 15% code on top can take the combined discount to a level that wipes your margin on lower-ticket items. Calculate the combined discount before enabling both simultaneously.

Putting It All Together

Each of the topics above handles one piece of Shopify’s pricing and discount system. They work best when you treat them as connected rather than separate tasks:

  • Start with price perception: get the baseline right before you add any promotional layer
  • Use compare-at pricing carefully: only where customers will find it credible, and only while the promotion is actually running
  • Organize sales into collections: so customers can browse discounted items without hunting
  • Choose codes vs. automatic discounts deliberately: codes for targeted audiences, automatic for sitewide events
  • Plan seasonal campaigns in advance: set start and end dates, prepare codes early, and test checkout before launch
  • Keep your discount list clean: duplicate what works, disable what doesn’t, and use timeline comments so your team stays aligned
  • Set exclusions before launching: protect products that shouldn’t be discounted using a dedicated no-discount collection
  • Share discount links directly: reduce checkout friction by auto-applying codes from the first click
  • Track incrementally: measure revenue added by promotions, not just code redemptions

When these pieces work together, your pricing setup runs consistently. Products display correctly, promotions turn on and off on schedule, and customers see trustworthy pricing across your store.