How to Schedule Shopify Black Friday Discounts as a Conflict-Free Stack
Most Shopify merchants run at least four separate promotions during Black Friday and Cyber Monday. Most merchants don't plan them as four separate configurations. That's the entire problem.
The typical BFCM lineup looks something like this: an early access offer for loyalty customers, the main Black Friday storewide sale, one or two flash discount codes pushed via SMS and email, and a Cyber Monday extension for stragglers. That's four promotions, all touching the same checkout, all with different eligibility rules, and all running in overlapping windows.
When merchants configure these four promos without a deliberate stacking strategy, checkout breaks. Not sometimes. Reliably.
This guide covers how to structure and schedule Shopify Black Friday discounts as a coherent stack: which configuration method to use for each tier, how to set the combinable flag for each, and which conflict scenarios you'll hit if you don't plan it explicitly.
One concept governs the whole stack: the combinable setting
Before configuring each tier, you need to understand one Shopify concept that the entire stack depends on.
Every Shopify discount has a combinable setting. When two discounts are both set to non-combinable, Shopify applies whichever produces the larger cart saving - the customer gets the better deal, but not both at once. When both are set to combinable, both apply and the savings stack. Shopify's default is combinable: on. Every discount you create will stack with others unless you explicitly turn this off.
Most merchants have never deliberately configured this setting. That's why BFCM stacks break at checkout.
What the BFCM discount stack looks like
A discount stack is what happens when more than one promotion is technically active at the same time for the same customer.
For most Shopify stores during BFCM 2026 (Black Friday: November 27), the stack looks like this:
| Phase | Dates | Who qualifies | Discount | Config method | Combines with others? |
|---|---|---|---|---|---|
| VIP Early Access | Nov 25-26 | Tagged loyalty customers | 40% off | Automatic discount, customer tag condition | No - applies larger discount only |
| Main BFCM Sale | Nov 27-29 | All customers | 30% off storewide | Automatic discount, no conditions | No - applies larger discount only |
| Flash Code Moments | Nov 27-29 | Email and SMS segment recipients | 35% off | Discount code, unique or multi-use | No - overrides storewide automatic |
| Cyber Monday | Nov 30 - Dec 1 | All customers | 25% off | Automatic discount, separate config | No - overrides any always-on rates |
Note on the Thanksgiving window: the table above leaves November 26 (Thanksgiving) as a gap between VIP early access and the main sale. That's intentional for many stores - but if you want Thanksgiving traffic covered, extend your VIP early access to include November 26, or start your main sale at midnight on Thanksgiving night.
During any overlap window - the 48 hours when your VIP automatic discount and your storewide automatic discount are both active - a tagged VIP customer can trigger both. With both set to non-combinable (as the table above specifies), Shopify applies whichever is larger. The customer gets the better deal and the two discounts don't stack.
How to configure each tier
Tier 1: VIP Early Access (Nov 25-26)
Configuration method: Automatic percentage discount with customer tag condition.
In Shopify Admin, go to Discounts > Create discount > Automatic discount. Set the percentage (typically 30-40% for high-value VIP offers). Under "Customer eligibility," restrict to customers with a specific tag - your VIP or loyalty tag.
If you haven't tagged customers yet, you can create a customer segment in Shopify Admin under Customers > Segments, then bulk-tag based on purchase history before configuring this discount.
Set a specific end date: November 26 at 11:59 PM in your store's local timezone. This is critical. If you leave this running into the main sale period, every VIP who adds to cart during Black Friday will have access to both the VIP rate and the storewide rate.
Combinations setting (in Shopify Admin > Discounts > [this discount] > Combinations): Disable combination with other percentage discounts. If a VIP customer also receives a flash SMS code during the Black Friday window, you need to decide: does the code apply on top of their VIP rate? In most cases, the answer is no. With both set to non-combinable, Shopify applies whichever is larger at checkout automatically.
Tier 2: Main BFCM Sale (Nov 27 midnight)
Configuration method: Automatic percentage discount with no customer conditions.
This is your storewide offer. Create a second automatic discount - separate from the VIP one - with your main BFCM rate. No customer tag condition: this applies to everyone.
Schedule it to activate at exactly November 27 at 12:00 AM in your store's timezone. This is where timezone configuration matters: Shopify discount scheduling defaults to UTC unless you've set your store timezone in Settings > Store details. A discount scheduled for "midnight" that actually fires at 6 AM Eastern loses the most urgent shopping window of the year.
Combinations setting: Disable combination with other percentage discounts. Shopify applies the larger one. For most stores, the VIP rate (40%) is higher than the storewide rate (30%), so VIP customers automatically continue receiving the better discount through the Black Friday window, even after the VIP period has technically ended.
If you want to allow stacking (rare, but defensible for some high-margin categories), enable combinations and verify the combined rate in a test checkout before launch.
Tier 3: Flash Code Moments (Nov 27-29)
Configuration method: Discount code, code-specific discount.
Flash codes sent via SMS and email are unique to this channel. Create a discount code (FRIDAY35, or equivalent) in Shopify Admin. Set the percentage to slightly above your storewide rate to make the code feel exclusive - 35% when the storewide rate is 30% is a common approach.
Set usage limits if your margins require it. "One use per customer" is the standard setting for flash code campaigns.
Combinations setting (Discounts > [this discount] > Combinations): Disable combination with percentage discounts. This is the most counterintuitive configuration: the code appears to offer more than the storewide rate, but if a customer applies the code while the storewide automatic discount is also active, you want only one to apply. Non-combinable ensures they receive the code rate (35%) and the storewide automatic discount is set aside, not added.
One edge case to test: if a customer holds both a flash code AND has the VIP tag, which applies? With both set to non-combinable, Shopify applies the largest single discount. Run this specific test in a test customer account before launch.
Tier 4: Cyber Monday (Nov 30 - Dec 1)
Configuration method: Automatic percentage discount, separate from the Black Friday configuration.
Create a fourth distinct discount in Shopify. Do not extend the Black Friday automatic discount - end it on November 29 at 11:59 PM and create a new one starting November 30 at 12:00 AM. This gives you a clean audit trail and simplifies rollback if something goes wrong. It also lets you set a genuinely different rate (25% is typical for Cyber Monday, down from 30% on Black Friday) without modifying your Black Friday discount mid-event.
Combinations setting: Disable combination with everything. By November 30, your VIP early access and flash codes should no longer be active. But if any persistent discount exists in your store - a loyalty program's always-on rate, a welcome discount for new customers - verify that it doesn't combine with the Cyber Monday rate. An always-on 10% welcome discount combining with a 25% Cyber Monday rate gives 35% off to new customer accounts, likely without you planning for it.
A note on third-party discount apps
The configuration above assumes you're using native Shopify discounts. If you use apps that generate discount codes - Klaviyo for welcome flows, LoyaltyLion or Smile.io for loyalty rewards, Bold Discounts for scheduled sales - the behavior with Shopify's native combinable setting may differ. Some third-party app discounts are governed by Shopify's native stack logic; others are handled within the app itself. Check with each app's documentation before launch, and test the combined checkout behavior with a test customer account that holds both a native BFCM discount and an app-generated code.
Three conflict scenarios that break checkout
Conflict 1: VIP and storewide stack silently
You configure the VIP discount and the storewide discount as separate promotions, both automatic. Both are left at the Shopify default (combinable: on). On November 27, a VIP customer adds to cart and sees both discounts applied at checkout - 40% + 30% = roughly 58% off. You find out when you review the transaction logs.
Prevention: Set both discounts as non-combinable explicitly before launch. Never leave the combinations setting at its default; always set it intentionally.
Conflict 2: Flash code stacks with automatic
A customer receives your SMS with a FRIDAY35 code. They apply it at checkout while the storewide 30% automatic is also active. Both apply. Their cart shows a combined 59% discount. Your SMS margin math assumed 35%.
Prevention: In Shopify Admin, go to the flash code discount's Combinations section and disable combination with percentage discounts.
Conflict 3: Cyber Monday and Black Friday overlap
You scheduled your Black Friday sale to end November 29 and your Cyber Monday sale to start November 30. But you set the Black Friday end date as November 29 at midnight UTC, and your store runs in Eastern time (UTC-5). At midnight Eastern on November 30, both discounts are briefly active for 5 hours while the UTC clock catches up.
Prevention: First, verify your store timezone is set correctly in Settings > Store details. Then set your Black Friday end date as November 29 at 11:59 PM in your store's local timezone, and your Cyber Monday start date as November 30 at 12:00 AM local time. Check the discount detail page in Shopify Admin to confirm the displayed dates match your intended local times, not UTC.
The rollback problem
Every BFCM stack needs a named rollback path before launch. "If tier 2 fires incorrectly, who deactivates it and how?" is a question that should be answered in writing before November 27, not figured out at 1 AM.
The good news: deactivating a Shopify discount requires no developer access. Any Shopify staff account with discount permissions can do it. Go to Admin > Discounts > [discount name] > Deactivate. That's the entire path.
For each discount in your stack before launch:
- Note the exact Admin URL to deactivate it
- Assign someone to monitor checkout in the first 30 minutes after each tier activates
- Understand what deactivation means for open carts: Shopify can honor a discount on a cart where the discount was applied before deactivation, even if the discount is now off
The Shopify Admin discount detail page shows real-time usage counts. Monitor this in the first 60 minutes after each tier activates. If the usage rate is wildly higher than expected, investigate immediately - it usually signals an unintended combination.
Why configure your BFCM discount stack before October
The argument for configuring this now is not about early enthusiasm. It's about reversibility.
Configuration decisions made before October have zero deadline pressure. You can model the margin impact of each tier, test the combinations settings in a test customer account, and make changes without consequences. The same decisions made in late October are made under two competing pressures: the deadline to launch, and the need to get it right. Those pressures produce mistakes.
Shopify allows you to configure discounts with future start dates. You can build all four tiers today, set the correct activation dates, and leave them scheduled. Between now and November, run one dress rehearsal: activate all four discount tiers simultaneously in a test account, work through a checkout as a non-VIP customer, then as a VIP-tagged customer, then apply each flash code, and record the actual checkout totals. Compare them to your expected rates. Fix whatever doesn't match.
For the broader BFCM planning timeline - when to finalize your discount strategy, build your email sequence, and run the dress rehearsal - see Your BFCM Promotions Playbook for Shopify.
PromoOS handles this planning and testing phase by showing the full November window as a calendar timeline - you can see exactly when each tier activates, whether any overlap, and verify the configuration before Black Friday deadline pressure sets in.
The practical starting point
The table at the top of this guide - with the Combines column filled in - is the planning document. Build it for your own store before you build any discounts in Shopify. Know the answers to each column for each tier: dates, eligibility, discount depth, config method, and whether it combines. Then configure. Then test.
The most common BFCM stack mistake isn't a discount that's too deep or too shallow. It's two promotions left at combinable: on by default when the merchant never considered the question at all.
If you're planning four BFCM promotions this year, map the full stack before you build it. PromoOS gives you a calendar view of the entire November window so you can see overlaps before they become checkout problems. Or use a spreadsheet. Either way, map it first.
