Before Black Friday, test the parts of your Shopify store that can stop an order: add to cart, discounts, last-unit inventory, checkout, purchase tracking, and the Thank you page. Run each check below, write down exactly where anything fails, and fix those issues before your sale changes go live.
This is the technical checklist. Promotions, email, fulfillment, and campaign planning are covered in Shopify's own BFCM checklist. Black Friday 2026 falls on November 27 and Cyber Monday on November 30, so there is still time to test, fix, and retest.
Check what changed in 2026
This is the first BFCM after two Shopify platform changes. Either one can break something that worked last November without anyone noticing at normal traffic levels.
- Shopify Scripts stopped running on June 30, 2026. This affects Shopify Plus stores that used Scripts for discount, shipping, or payment logic. Shopify Functions and apps built on them are the replacement. If a tiered discount, a hidden shipping rate, or a payment rule from last year no longer appears, a retired Script is one possible cause.
- ScriptTags stopped running on the Order status page for non-Plus stores on August 26, 2026. Older tracking or post-purchase code that relied on them no longer loads there. The supported replacements are pixels for tracking and app blocks or UI extensions for page content.
You do not need to audit every past customization. Keep both changes in mind as you run the tests below, especially the discount and tracking checks. Our guide to Shopify script tag deprecation covers the migration in more detail.
Run one complete test order
Test the full path a customer takes, in one session, instead of checking pages separately:
- Open a real product page and select a variant.
- Add it to the cart. Change the quantity, remove the item, and add it again.
- Go to checkout and confirm the expected shipping and payment options appear.
- Complete the order and confirm you reach the Thank you page.
- Open the order in your Shopify admin and check the items, discounts, and shipping method.

Our test order started in a development store running Horizon 4.2.0, with an automatic product discount already visible in the cart.
Choose the payment method carefully. Shopify supports three ways to place a test order: its test payment gateway (Bogus Gateway), Shopify Payments test mode, or a real transaction that you cancel and refund. On a live store, test mode has a real cost: customers can't place live orders while your payment provider is in test mode. If you use it, pick a low-traffic window and switch it off as soon as you finish. A real order that you refund keeps checkout open for customers, but it may carry transaction fees.
If you sell in more than one market, repeat the order in your most important market and currency. Our guide to Shopify Markets, languages, and currencies explains what changes between markets.
Test your discounts together
Each discount can look correct on its own and still fail when a customer combines them. Recreate the combination you plan to run and check the final checkout total.
We tested three discounts together: an automatic 10% product discount, an order discount code called BFCM, and an automatic free shipping discount.
Before you test, check the Combinations settings on every discount. Under Shopify's discount combination rules, multiple discounts apply only when the setting on each discount allows the combination. Allowing it on one side is not enough.

The number beside each discount class counts the discounts that can actually combine with this one. If a class you expect to combine shows 0, open the other discount and check its Combinations settings.

With both sides allowed, all three discounts applied in checkout. Total savings of $80.60 match the $52.60 product discount, the $20 order discount, and the $8 shipping rate.
Check the savings total against your own math. Then change one condition, such as the quantity or the product, and confirm the discount changes or disappears as intended. If one discount is missing, check its eligibility, minimum requirements, active dates, and Combinations settings on both discounts before assuming a Shopify bug.
Check what happens at the last unit
A best-seller that sells out mid-sale should behave the way you intended. Set a test variant's inventory to 1, complete a test order for it, and then reload the product page as a customer.
After our test order, the variant showed 0 available and 1 committed. Shopify counts units in unfulfilled orders as committed inventory, so a test order reserves stock until you cancel and restock it.

The storefront result depends on the variant's Continue selling when out of stock checkbox. In the collapsed variant view, the admin summarizes it as Sell when out of stock.

Setting off: the sold-out size is crossed out and the button reads Sold out.

Setting on: the same size remains available to buy at 0 inventory.
Neither result is wrong. Continued selling suits preorders and made-to-order products. For limited stock, it leads to overselling. Check this setting on your top products before the sale, and cancel and restock your test orders afterward so they do not hold real inventory.
Confirm purchase tracking fires
A completed order does not prove your analytics recorded it. Test tracking during the same test purchase.
For a quick, platform-level check, we added a temporary custom pixel under Settings > Customer events > Custom pixels. It writes the checkout_completed event to the browser Console:
analytics.subscribe("checkout_completed", (event) => {
const checkout = event.data.checkout;
console.log("[BFCM test] checkout_completed", {
order: checkout.order?.id,
total: checkout.totalPrice?.amount,
currency: checkout.currencyCode,
});
});
Connect the pixel, open your browser's Developer Tools on the Console tab, and complete the test order.

The event fired on the Thank you page with the order ID, the $453.40 total, and the currency, matching the order summary.
If the event appears, Shopify is emitting purchase events for your checkout. That does not confirm your ad or analytics tools received them. Check those separately, such as in GA4 DebugView or your ad platform's event testing tool. If the event does not appear, check the pixel's customer privacy permissions first. By default, new custom pixels require marketing and analytics permissions, so a visitor who has not given consent will not trigger them.
Disconnect the test pixel when you finish.
Walk through checkout on a real phone
Browser mobile previews can miss problems that appear on a real device, such as overlapping sticky bars and popups that are hard to close. On your own phone, go through the same path as the test order and check that:
- The menu opens and closes.
- Every variant option can be selected.
- Add to cart works, and the cart drawer is not hidden behind another element.
- Popups, sale banners, and sticky buttons can be dismissed and do not cover the Add to cart button or checkout.
- Checkout fields and buttons are usable, and the back button does not strand you.
If you add sale popups or banners for BFCM, repeat this walkthrough after adding them. If Add to cart fails only on the phone, our guide to a Shopify Add to cart button that is not working covers how to isolate the cause.
Record a speed baseline
Run PageSpeed Insights on your homepage and one representative product page. Record the date, the URLs, and the mobile results. After any theme or app change, rerun the same URLs and compare.
The number matters less than the change. Lab results vary between runs, so run each test more than once. On a low-traffic store, the real-user section may show No Data because Chrome has not collected enough visits; the lab results are still useful for comparison. If your storefront is password-protected, PageSpeed Insights reaches the password page, so test after the store is open.
Make a rollback copy and set a freeze date
Before you fix anything these tests found, duplicate your live theme. Shopify recommends a backup copy before customizing, and the theme library holds up to 20 themes.

Give the copy a clear name and date. Make risky edits on a duplicate, publish once they pass, and repeat the test order after every published fix. Our guide to updating Horizon without losing custom code covers safer ways to manage theme changes.
Then set a freeze date: a day after which you stop editing the theme, installing apps, and changing checkout settings until the sale ends. Choose a date early enough to retest and roll back if needed; a change made during the sale week leaves little time for either.
What to do when a check fails
- Add to cart fails: Note the product, variant, and device, then compare the behavior in a fresh copy of your theme and with app embeds turned off.
- A discount is missing: Check eligibility, dates, minimums, and the Combinations settings on every discount involved.
- Sold-out behavior is wrong: Check inventory tracking, the continue-selling setting, and which locations fulfill online orders. If a product shows Sold out while admin lists stock, follow our guide to products that show sold out but have inventory.
- The purchase event is missing: Check customer privacy permissions, your pixels and app settings, and any tracking that used ScriptTags on the Order status page.
- Only mobile fails: Reproduce it on the same device and browser, then turn off popups and app embeds one at a time.
- Speed dropped: Compare the same URLs before and after your most recent change.
Treat each item as a first check. Change one thing at a time and retest the original failure. If the cause belongs to an app or theme, contact that developer first. Our comparison of ways to fix a Shopify bug covers the other routes, from Shopify support to hiring a developer.
If a check fails and the cause is not clear, a Shopify developer can reproduce the failure and isolate whether it comes from the theme, an app, checkout settings, or custom code. That is the work our Shopify bug fix service covers.