Black Friday is November 27. Peak rehearsals are booking now. Book a slot

Blog Ecommerce Performance

How to prepare your website for Black Friday: the 12-week plan

Black Friday 2026 lands on 27 November, and most sites that fail that morning failed weeks earlier, when nobody rehearsed the traffic. This plan counts down from the day: set targets from last year's analytics, find your real ceiling while fixes are still possible, rehearse the opening spike, then freeze and stand watch. Starting late? Jump in at your week.

Written by: Ahmad Farzan ·

A twelve-week countdown to Black Friday on 27 November: targets set at week 12, the first load test by week 8, fixes and a re-test by week 6, a spike rehearsal by week 4, a code freeze from week 2, while the expected traffic curve climbs to its peak on the day.

What does Black Friday-ready actually mean?

A website is ready for Black Friday when it can serve the peak number of simultaneous shoppers you expect, at speeds they will tolerate, through the journeys that take their money. Readiness is two numbers you can defend: the concurrent load you have proven, and the response times you held while proving it.

The stakes keep growing. Adobe measured 11.8 billion dollars of US online spend on Black Friday 2025, up 9.1 percent on the year before, and Salesforce put global Black Friday online sales at 79 billion dollars (December 2025). Your slice of that arrives compressed into hours. When the site cannot serve it, the loss is just as compressed: Splunk and Oxford Economics put the average cost of unplanned downtime at 15,000 dollars a minute in their 2026 study of large companies, and Black Friday minutes are worth far more than average minutes.

Being ready is not a feeling, and it is not a green Lighthouse score from a quiet Tuesday. It is a rehearsal with evidence. That is what the next twelve weeks are for. If you are reading this on publication day, Black Friday 2026 is just over twelve weeks away, so week 12 is this week; start today.

What do you need before you start?

You need four things before week 12 starts, and none of them is a tool purchase. Gather them in an afternoon and every later step gets easier: the data to size from, an environment to test against, a way to generate realistic load, and one person who owns the countdown.

  • Last year’s analytics, or an honest substitute. The plan sizes everything from your own peak hour. A store with no history sizes from its marketing reach instead, covered in the next section.
  • An environment you are allowed to break. Production in a quiet window with an agreed abort rule, or a staging environment that genuinely resembles production. A staging box with half the servers and a tenth of the catalogue proves half a ceiling at best.
  • A load testing tool that can walk a journey, browse, search, cart, checkout, rather than only hammering URLs. If the term is new, start with what load testing is and come back; this plan assumes no prior testing background beyond that.
  • A named owner. Not a committee. One person who tracks the countdown, chases the fixes, and has the authority to call the freeze.

Agree one more thing up front: what “acceptable” means. A number nobody wrote down cannot fail, and that is exactly why targets get skipped. Write yours down in week 12.

Weeks 12 to 10: set your targets from last year’s numbers

The first job is arithmetic, not engineering: turn last year’s traffic into this year’s test target. Open your analytics, find the busiest hour of last year’s Cyber Week, and write down three numbers: sessions in that hour, average session duration, and orders in that hour. Those three produce your target.

Concurrent users, the number that actually loads your servers, comes from a simple formula: sessions per hour multiplied by average session duration in minutes, divided by 60. If your peak hour last year saw 12,000 sessions averaging five minutes, you were carrying about 1,000 concurrent shoppers. That is your baseline, not your target.

Now add headroom. Traffic grows, and promotions concentrate it: 20 to 50 percent on top of last year’s peak is a sane starting band, with the higher end if your discounts or ad spend are up. The pattern to respect is concentration. Adobe’s hour-by-hour data shows money arriving in narrow windows, with Black Friday 2025 running around 12.5 million dollars through US carts every minute between 10am and 2pm, so an average-day target is the wrong target.

Number to write downWhere it comes fromExample
Peak concurrent usersPeak-hour sessions x duration (min) / 601,000
Test targetPeak concurrent users + 20-50% headroom1,300-1,500
Acceptable speedThe response times you will defend at peakProduct page under 2s, checkout steps under 3s
Revenue per peak minutePeak-hour revenue / 60Your number, on the wall

That last row is the one that gets budget approved. When a fix costs a week, compare it to what a down minute costs you.

No trading history yet? Size from reach instead. Estimate the shoppers your launch email and ads will land in the first hour: list size times open rate times click-through, plus expected ad clicks. Treat that as your peak-hour sessions and run the same formula. The number will be rough, which is fine, because the plan’s next step is to find the real ceiling by test rather than by faith. And whatever your history says, scale the headroom with the aggression of the promotion: a 40 percent site-wide discount announced to your whole list does not produce last year’s curve plus a little. It produces a sharper, taller one.

Weeks 10 to 8: find your ceiling with a first load test

By ten weeks out, run a real load test: simulated shoppers moving through the same journeys as real ones, browse, search, add to cart, check out, ramped up to your target and then past it until something bends. The point of going early is brutal and simple. Whatever this test finds, you still have time to fix it. The same discovery in November is just bad news.

Two rules make the first test honest. Test journeys, not pages: a homepage test mostly measures your cache, because a CDN serves the cacheable pages while cart and checkout hit your origin uncached. And test at realistic pace, with pauses between clicks the way real shoppers behave, so the load pattern matches the day. Our walkthrough of how a load test actually runs covers scenario design step by step; the short version is that the test should look like your Saturday traffic, sped up.

Run the test as a ramp, not a wall: climb toward the target over ten minutes or more, hold the plateau long enough to trust the reading, and keep think time in the scenario, the natural pauses while a person reads a page or types a card number, so the request pattern matches human traffic. Then keep ramping past the target until you find the edge. A practical stopping rule: the test has found the ceiling when the slow tail of response times bends sharply upward or errors pass one percent of requests, whichever comes first.

Read the result as a curve, not a verdict. As simulated shoppers climb, response times stay flat, then bend, then break. The bend is your ceiling. If it sits below your target from week 12, the gap is your work list. This is also where testing with real browsers earns its keep: measuring what shoppers actually experience at load, page by page, session by session, rather than only how fast the server answered. That evidence is the difference between “the API held” and “the checkout was unusable on mobile”. A failure at peak isn’t a percentile. It’s a session.

Weeks 8 to 6: fix what the test exposed, then prove it again

Fix in revenue order. The paths that take money, checkout, cart, login, stock checks, come first; content pages can be slow without costing a sale. This ordering matters because the money paths are precisely the ones your cache cannot save, and they are usually where the first test bends.

The usual suspects, roughly in the order they surface: database queries that were fine at ten users and quadratic at a thousand, undersized connection pools, site search hammering the database, and third-party calls (payments, tax, shipping rates) that slow down exactly when everyone else is also having their busiest day. Platform specifics matter too; if you run Magento, the way checkout saturates first while cached pages stay fast is its own story.

Give mobile its share of attention while you are here. Adobe measured 57.5 percent of Cyber Monday 2025 online sales on mobile devices, and Omnisend’s 2026 data puts mobile cart abandonment at 79.92 percent against 69.19 percent on desktop. A checkout that degrades under load degrades hardest for the majority of your buyers.

Then re-test with the same scenario and the same targets. A fix is proven when the curve moves, not when the ticket closes. Two or three of these fix-and-prove cycles are normal; that is why they live in September and October.

Weeks 6 to 4: rehearse the peak shape and decide about a queue

An average-load test proves capacity. Black Friday also opens with a stampede: the email lands, the doors open, and traffic multiplies within minutes. That shape is a spike test, and it deserves its own rehearsal, because systems that hold a steady 1,500 shoppers can still fail when 1,500 arrive in ninety seconds. Autoscaling in particular needs minutes you may not have.

If the spike rehearsal shows demand beyond any capacity you can build in time, decide now about a waiting room, a queue page that admits shoppers at a controlled rate. The honest way to set its admission rate is the ceiling you just measured. A queue set by guesswork either annoys shoppers needlessly or fails to protect the site.

This is also the week the operational side becomes real. Put dashboards on the numbers you tested against, and keep the set small enough to watch: response time on the checkout path, error rate, and orders per minute tell you nearly everything, with server load as the supporting cast. Route the alerts to named people, not just a channel that nobody owns at 7am. Then write a one-page runbook: who watches, who decides, what gets switched off first if the site labours, in what order. Decide the degrade-gracefully moves in daylight, calmly, so nobody designs them at 9am on the day.

Weeks 4 to 2: freeze the code and verify the freeze

A code freeze is a date after which non-essential changes stop. It is not bureaucracy; it is the recognition that every deploy after your last load test ships unproven capacity. The feature merged in mid-November has never met 1,500 concurrent shoppers, whatever its unit tests say.

Freezing two to four weeks out leaves room for an exceptions process, because real fixes will still be needed. The bar for an exception is simple: is this change worth re-testing, and if it is not worth re-testing, is it worth the risk. Then run one final verification test on the frozen build, the same scenario as always, so the last result you hold describes exactly the code that will face the day.

The final week, and the day itself

The final week is standby, not construction. Walk the runbook once with everyone named in it, confirm alerts reach a person and that the person knows they are on watch, and open a channel where the day’s decisions will be made, so nobody hunts for the right thread mid-incident. Pre-scale infrastructure the night before rather than trusting reflexes to be faster than a stampede, warm the caches that can be warmed, and check the site once more at opening time from a real shopper’s position: phone, normal network, full journey.

Then, on the day, watch the three numbers that matter: response time on checkout, error rate, orders per minute. The first symptom of trouble is rarely a crash. It is usually the checkout’s slow tail creeping up while the cached pages stay innocently fast, which is why a homepage check tells you the site is fine right up until the revenue graph says otherwise.

If the numbers drift, act in the order you wrote down: shed the non-essential load first, recommendation widgets, chat, heavy analytics, background jobs, and protect checkout to the end. A slightly slower site that keeps selling is a good day. Most Black Friday disasters are not the first slowdown; they are the improvised response to it. And whatever happens, keep the graphs: the day itself is next year’s sizing data, honest in a way no forecast can be.

How do you know you are ready?

You are ready when every line below is true and you can show the evidence, a report, a date, a name, for each one:

  • A load test at target plus headroom, on realistic journeys, passed within the last month.
  • The spike shape rehearsed, and the opening minutes survived at sale-open rate.
  • The bottleneck list empty, or each remaining item consciously accepted by someone entitled to accept it.
  • The freeze active, with the final verification test run on the frozen build itself.
  • Dashboards live on the tested numbers, alerts routed to named people.
  • A one-page runbook that names people, not roles, and lists what gets shed first.

That list is deliberately short. If one line is false, the week that fixes it is named above, and you know exactly which section to reread. Readiness is not a feeling; it is this list with evidence attached.

Common problems and fixes

Every first-time Black Friday preparation hits at least one of these. The pattern to internalise: most of them are not infrastructure failures but measurement failures, a test that looked reassuring because it quietly measured the wrong thing. Match your symptom, apply the fix, and fold the lesson into next year’s week 12.

SymptomLikely causeFix
Test passes easily, day still hurtsTested the homepage, not the journeys; cache took the loadRe-test browse-to-checkout paths; treat cached and uncached ceilings as different numbers
Response times awful from the first minute of the testTest traffic blocked or rate-limited by WAF or bot protectionAllow the test source before the run; verify with a small smoke test first
Checkout collapses while everything else holdsUncacheable path saturating database or third-party callsFix in revenue order: pools, queries, payment and shipping timeouts; then re-test
Great steady-state result, opening minutes failSpike shape never rehearsed; autoscaling too slow for a stampedeRun a spike-shaped test; pre-scale for the opening; consider a queue with a measured cap
November deploy breaks what October provedNo freeze, or exceptions skipped re-testingFreeze by week 2; every exception earns a verification run

Twelve weeks compresses honestly: what cannot compress is the order. Targets before testing, testing before fixing, fixing before freezing, and no unproven code into the day. Do that and Black Friday becomes what it should be, your best trading day, observed from a quiet dashboard.

Test in real browsers. Debug in real sessions. Book a demo and we will size a Black Friday rehearsal on your real customer journeys.

Ahmad Farzan, Founder at Evaluat

About the author

Ahmad Farzan · Founder at Evaluat

Founder of Evaluat. Has spent years building and load-testing Adobe Commerce and Magento storefronts, and built Evaluat to test sites the way real browsers actually hit them.

More from Ahmad →

Common questions

FAQ

When should I start preparing my website for Black Friday?

Start about 12 weeks out, which for Black Friday 2026 (27 November) means early September. The first load test should happen by 8 weeks out so there is still time to fix what it finds and test again. Starting later is workable: compress the fix cycles, not the testing itself.

How much traffic should I test for on Black Friday?

Start from last year's peak hour, not the daily average. Convert it to concurrent users, then add 20 to 50 percent headroom for growth, and more if this year's promotions are heavier. If you have no history, size from your email list and ad reach, and test to failure so at least you know the ceiling.

Should I load test staging or production before Black Friday?

Test the environment that will take the traffic if you can do it safely, in a quiet window, with an abort rule agreed in advance. A production-identical staging environment is the next best thing. A staging box half the size of production only proves half a ceiling.

What is a code freeze and when should it start?

A code freeze is an agreed stop on non-essential changes before a peak event, usually from two to four weeks out. It exists because any change made after your last load test carries unproven risk. Keep an exceptions process for genuine fixes, reviewed and re-tested rather than rushed.

Do I need a virtual waiting room for Black Friday?

Only if expected demand exceeds the capacity you can realistically build by the day. A waiting room caps how many shoppers enter at once, and the honest way to set that cap is a load test: the queue admits the rate you proved, instead of a guess.

Is a CDN enough to handle Black Friday traffic?

No. A CDN absorbs the cacheable traffic, product images, static pages, scripts, which is real help. But cart, checkout, login, and stock lookups cannot be cached and land on your origin at full force. Those uncached paths are where sites fail, and a CDN does not change their ceiling.

What should I do if my website slows down during Black Friday?

Follow the runbook you wrote in the calm weeks: shed non-essential load first, pause heavy background jobs, third-party widgets, and non-critical features, and protect checkout above everything. Slower but selling beats fast but down. Improvising an architecture change mid-sale is how outages get longer.

Is it safe to run a load test close to Black Friday?

A verification test in a quiet window with a clear abort rule is reasonable up to about two weeks out. Discovery testing, pushing to failure to find a new ceiling, belongs earlier in the plan. The last fortnight is for confirming what you already proved, not for surprises.

See it on your site

Test in real browsers.
Debug in real sessions.

Want to see this measured on your app?

30 minutes. We build a scenario on your real customer journey, run a small test, and walk you through the report.