BFCM is 14 weeks out. Here is the stuff you can only fix now

Every BFCM checklist tells you to test your checkout and plan your emails. This isnt that. These are the things that are cheap to fix in August and either impossible or terrifying to fix in November. Ive marked which ones matter for smaller stores versus stores already doing volume.

Now, 14 weeks out:

Check your shipping zones for holes. This is the silent one. If a country or postcode range has no rate configured, the customer reaches checkout, sees no shipping available, and leaves. No error for you, nothing in your reports. Open Analytics, look at sessions by country, and find any country sending real traffic with zero orders. Then check Settings, Shipping and delivery covers it. People set up domestic, add rest of world later, and leave gaps in the middle they never notice. Fixing this is free.

Fill in Cost per item on every product. Its on the product page under Pricing. Once its filled Shopify calculates gross profit for you in Analytics, which means during BFCM you can see whether a discount is actually making money. You cannot backfill this accurately later. Smaller stores especially, do this while you still have few enough SKUs for it to be an afternoon.

If you are on Plus and ever used Shopify Scripts, check what broke. Scripts stopped executing entirely on 30 June 2026. If your Script only ran seasonal or tiered discount logic, it stopped working two months ago and nothing told you, because the logic doesnt fire outside promo season. You would find out on Black Friday morning. Details here:

Bigger stores, get your payments documentation ready. This one isnt in Shopifys docs, its a pattern people report every year, so treat it as a warning rather than a policy. A store doing several times its normal volume can trigger a payments review, and payouts get held during the exact week you need the cash. What shortens it is replying the same hour instead of two days later. Have ready now: government ID, business registration, a bank statement showing the account name matches your legal entity, and supplier documentation if you dropship. Also confirm your bank account name matches the entity exactly, since a mismatch is the most common thing that keeps a review open.

6 weeks out:

Test every discount you plan to run, including the combinations. Automatic discounts and code discounts do not stack unless you have explicitly allowed it. Open each discount, look at the Combinations section, and set it deliberately. Then place a real test order using the actual code, on mobile, in incognito. The number of stores that discover their BFCM code cannot be combined with their free shipping offer on the day itself is not small.

Check your default variant is in stock on your top traffic products. If a product page loads on a sold out variant, someone arriving from an ad sees a dead button before they touch anything. You never notice because you always click the size you have.

Warm up your email sending now if you are planning a big send. Going from a few thousand emails a month to a hundred thousand in one week is exactly what gets you filtered.

2 weeks out:

Freeze the theme. Pick a date, write it down, and stop touching code after it. Every year someone ships a small change on the Wednesday and finds out on the Friday.

Freeze app installs at the same time. A new app on the day is an untested variable in your checkout.

Screenshot your working checkout and your working discount setup. When something looks wrong at 2am you want to know what right looked like.

During:

Watch your cancel and refund rate, not just conversion. Shopify counts an order as an order the moment its placed. Cancellations, refunds and undeliverable addresses all sit on the other side of that line, so conversion can rise while money falls.

Know that Shopify does not restock automatically on a cancel or refund. There is a restock checkbox in that flow and under volume everyone misses it. Thats where your inventory counts drift.

The week after:

Expect address changes and order edits to spike. Customers who ordered in a rush get the address wrong more often than usual, and a wrong address becomes a return, which becomes a refund. Decide now who handles those and how fast, because the difference between fixing it in an hour and fixing it in two days is whether the parcel has left.

Pull the cohort report in January, not in December. Analytics, Reports, Customers. BFCM buyers are their own cohort and how many come back in the following 90 days tells you far more about whether the discount was worth it than the November revenue number did:

If anyone has a scar from a previous year that isnt on here, add it. The shipping zone one cost a store I know about four days of traffic before anyone worked out what was happening.

Awesome prep list! The only other thing I have to add is your email list.

If you haven’t sent anything meaningful in a few months and then blast your whole list on Black Friday, a decent chunk will land in spam, because sudden volume from an infrequent sender is exactly the pattern filters look for.

You want to be sending regularly between now and then, starting with your most engaged segment and widening out. That’s at least a 2-4 week ramp up job.

The discount-logic line in that checklist deserves its own heading, because it’s the one with a silent failure mode. Scripts died June 30. A tiered-pricing or BOGO Script doesn’t throw an error once it’s gone. The cart just quietly charges full price. If last year’s BFCM ran on Scripts and nobody rebuilt them, the first hard evidence arrives in late November as a conversion dip nobody can explain.

The test takes ten minutes. Add the qualifying products to a cart today and check the math. If the discount doesn’t fire, there are fourteen weeks left to rebuild it on Functions, through an app (I build one, [Scriptly](Scriptly: Scripts to Functions - Rebuild your dead Scripts as no-code checkout rules | Shopify App Store), so discount that accordingly) or custom dev if your old Ruby mutated line item properties, which Functions apps mostly can’t do.

Either way, settled by October beats discovered in the war room on November 28.

@YutaWatanabe The baseline idea is better than what I wrote. One artifact I would add that makes the change report actually possible.

Download the theme file at freeze. Then a November diff against that zip tells you which template or script changed, rather than anyone relying on memory. Worth knowing the zip excludes images, so its a code snapshot not a restore point. For the restore point, duplicate the live theme and leave the copy unpublished, so a rollback is a publish rather than a repair job at 2am.

@DanielAnderson greed, and the segment ramp is the right way to do it.

One thing worth checking alongside the ramp, because its DNS work and DNS work always takes longer than you think. Make sure your sending domain is properly authenticated with SPF, DKIM and DMARC before you start increasing volume. Ramping a domain thats not authenticated just gets you filtered faster and more convincingly.

The other number to watch is your spam complaint rate. Googles bulk sender guidelines want it under 0.3 percent and Yahoo lines up with that, and BFCM is exactly when it spikes, because you send to people who havent heard from you in months and half of them hit report rather than unsubscribe. Which is really just your point again, said from the other end.

@Denyslg One thing I would add to it. Testing the discounts you remember only catches the discounts you remember. The version that catches the rest is to pull an actual order from last November, rebuild that exact cart today, and compare the totals line by line.

That surfaces logic nobody knew existed, which is the real problem with inherited Scripts. Plenty of them were written by an agency three years ago, and the person who could tell you what they did left. If last years order came to a number you cannot reproduce today, something was doing work that isnt doing it any more.

Your point about Ruby mutating line item properties is the one I would want people to read twice. Thats not a rebuild, thats a rethink, and fourteen weeks is comfortable for that while October is not.

That November-order replay is a better test than the one I suggested - it catches the logic nobody remembers owning, which is exactly the dangerous kind. Small addition: if any of last year’s orders combined a discount with international shipping, replay one of those - carts like that walked through the most Script paths at once. And agreed on the rethink framing. Fourteen weeks is enough to do it calmly. October is not.