Black Friday Cyber Monday 2026 is November 27–30. If you manage or build on Shopify stores, you have about four weeks to find the things that will break under peak load.
Most BFCM guides tell you to compress images and check your theme's PageSpeed score. That's not wrong — but it's not what takes stores down. Here's what actually does.
1. Checkout Extensions Under Concurrent Load
Shopify's checkout infrastructure is built to scale. Your custom checkout UI extension is not automatically included in that guarantee.
If your extension makes an external API call — a loyalty points lookup, a shipping estimate, a custom validation — test what happens when that endpoint is slow or unavailable. Extensions that time out don't always fail gracefully.
// Add explicit timeouts to any fetch inside a checkout extension
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 3000);
try {
const res = await fetch(LOYALTY_API_URL, { signal: controller.signal });
// handle response
} catch {
// fail silently — don't block checkout
} finally {
clearTimeout(timeout);
}
2. Discount Function Stacking Edge Cases
If you're using Shopify Functions for automatic discounts alongside merchant-created manual codes, test every combination that will be active simultaneously during BFCM.
The failure mode: an automatic "20% off everything" Function combined with a BFCM20 manual code results in 40% off because the Function doesn't check for existing discounts before applying.
The fix is explicit precedence logic inside your Function:
// In your discount Function — check for existing discounts first
const hasManualDiscount = discountNode.codeDiscountApplications.length > 0;
if (hasManualDiscount) {
return noDiscountResult; // don't stack
}
Test this in a real store with both discount types active, not just in isolation.
3. ERP and 3PL Webhook Queue Capacity
Most Shopify → ERP integrations are sized for average daily order volume. BFCM peak can be 10–50x that, and webhook queues that back up mean inventory figures going stale and overselling.
Check two things:
- What is the maximum queue depth your integration can handle before it starts dropping or delaying webhooks?
- What happens to inventory sync when the queue is 2 hours behind?
If you don't know the answer to either, find out now — not at 9 PM on November 27.
4. Payment Fallback Configuration
Shopify Payments is reliable but not infallible. If it goes down during your peak hour, what happens?
At minimum: have one additional payment method configured (PayPal, Stripe via a provider, manual payments) so customers have a path to complete checkout even if your primary gateway has issues.
5. B2B Draft Order Flow
If you have wholesale or B2B customers, their checkout path goes through draft orders — a completely separate flow from D2C checkout. It almost never gets BFCM prep attention, and it breaks in completely different ways.
Test: can a B2B buyer on a company account place a large draft order, apply their company-specific pricing, and complete checkout during BFCM? Do it manually in staging before November.
The Checklist
- [ ] Checkout UI extensions tested under concurrent sessions
- [ ] All
fetch()calls inside extensions have explicit timeouts + silent failure - [ ] Discount Function stacking tested with every campaign combination
- [ ] ERP/3PL webhook queue depth confirmed at 10x normal volume
- [ ] Payment fallback configured and tested
- [ ] B2B draft order flow tested end-to-end
One month is enough time to fix any of these. Two weeks isn't.
Originally published at arslanraza.com/blog
Top comments (0)