LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

OPS · PERFORMANCE · SHOPIFY PLUS · 20 AUGUST 2026 · 8 MIN READ

The Black Friday runbook

A readiness checklist is what you do in October. A runbook is what someone opens at 2am with a phone in one hand and no time to think.

A quarter of work on a board, the week in progress marked

A Black Friday runbook is not a preparation checklist. It is the document someone opens during the event, and it contains four things: who is on, and how to reach them by phone; which dashboards to look at and what normal looks like on each; six to eight named failure scenarios written as symptom, check, action, and who is allowed to decide; and the rollback procedures with the exact steps, not a description of them. Everything else — the freeze, the load testing, the app audit — is readiness, and belongs in a different document. The test of a runbook is whether a competent person who was not in any of the planning meetings can follow it at 2am without ringing anybody.

IN SHORT

  • A runbook is used during the event; a readiness checklist is used before it. Mixing the two produces a document nobody can navigate under pressure.
  • Every scenario should be written as symptom, check, action, and decision owner — the last one matters most, because the delay in an incident is almost always a person waiting for permission.
  • Shopify’s Storefront API does not rate-limit buyer traffic, while the Admin API restore rate varies by plan — which is why peak breaks in your integrations rather than on your storefront.
  • Decide the thresholds in advance, in numbers: how many minutes of unexported orders before someone is woken, how many failed webhooks before an integration is switched to manual.
  • Rollback steps must be literal. "Revert the theme" is not a procedure; the name of the theme version, who has access and how long publishing takes is.
  • A runbook nobody has rehearsed is fiction. One two-hour game day in October is worth more than another twenty pages.

What a runbook is not

Most documents called a Black Friday runbook are readiness checklists with the wrong title. They contain the code freeze dates, the app audit, the load test results and a project plan — all useful, none of it usable at the moment something breaks. During an incident nobody scrolls past four pages of October decisions to find the phone number they need.

Keep them separate. Readiness is the work: what to change, what to postpone, what to freeze, what to remove. The runbook is the operating manual for the four days, and it should be short enough that a person can hold the shape of it in their head. If it runs past a dozen pages, the scenarios have turned into essays.

The other thing it is not is a document about Shopify falling over. Checkout capacity is Shopify’s problem and they are better at it than you are. What fails at peak is what you added on top — the integrations, the apps, the discount logic, the export that runs every fifteen minutes and has never seen this volume. Write the runbook for those.

The front page: who, how, and who decides

One page, before anything technical. It answers three questions someone will have within thirty seconds of opening the document.

  • Who is on, hour by hour, across the whole window. Names, mobile numbers, and the timezone they are in. Not a rota in a separate tool that needs a login nobody remembers at 2am.
  • Who decides what. Name the person who can authorise switching an integration to manual, disabling an app, pausing a campaign, or pushing a theme change during the freeze. If that is one person, name their backup and the rule for when the backup takes over.
  • The escalation path, with the point at which you stop trying and ring someone. Include Shopify support and your merchant success contact if you are on Plus, and any vendor whose outage would stop orders — payment provider, 3PL, ERP middleware.
  • Three links, at the top. The store’s admin, the shared incident channel, and the status pages you would check first. Everything else can be further down.
  • What "normal" looks like. Orders per hour at this point last year, typical error rate on the integration, the usual depth of the fulfilment queue. Without a baseline, every number looks alarming at 3am.

The scenarios worth writing, and the shape to write them in

Six to eight, no more, chosen by what actually breaks rather than what would be most dramatic. Each in the same four-part shape so they can be read fast: symptom (what someone will notice or be told), check (the one screen or query that confirms it), action (numbered steps), decides (the named person whose call it is).

The ones we write for nearly every store:

  • Orders are not reaching the ERP or 3PL. The most common peak incident by some distance. Symptom is usually a fulfilment person saying it has gone quiet. Check the integration’s error log and the webhook delivery history. Action is a documented switch to manual export and a defined catch-up procedure for the backlog.
  • A discount is applying more broadly than intended. Symptom is margin, not errors — an order value that looks wrong, or a support message. Check the discount’s conditions and any stacking against a real order. Action needs to be decisive: deactivating a discount is instant and reversible, and it is almost always right to do it and then work out what happened.
  • Inventory is overselling. Symptom is a fulfilment queue with lines that cannot be picked. Check the disagreement between Shopify, the WMS and any marketplace listing. Action is usually to stop the channel that is furthest from the truth rather than to reconcile live.
  • A third-party script is slowing or breaking a page. Symptom is conversion dropping on one template while traffic holds. Check the browser console on the affected page. Action is the documented procedure for disabling that app or script — which needs to exist for every script-injecting app you run.
  • A payment method is failing. Symptom is checkout completion falling for one method. Check the provider’s status page and recent declines. Action is whether to disable it, and the decision owner should be named because the instinct is to wait and see.
  • Someone has made a change during the freeze. Symptom is anything that broke shortly after a deploy or a theme edit. Check the theme’s version history and the admin activity log. Action is revert first, diagnose after.
  • The site is genuinely down. Rare, and the shortest entry: check Shopify’s status page, post the holding message, do not start changing things.

Why it fails in the integrations, and not on the storefront

There is a structural reason peak incidents cluster where they do, and understanding it changes what you watch.

Shopify’s documentation is explicit that for the Storefront API, "Buyer traffic isn't rate-limited at all". Browsing and checkout are engineered to absorb the spike. The Admin API is a different system with a different contract: it uses a leaky bucket with a bucket size and restore rate set by the store’s plan, documented as 100 points per second on standard plans, 200 on Advanced, 1000 on Shopify Plus, and 2000 on enterprise. Short bursts are fine provided average cost stays under the restore rate.

So the shape of a peak failure is this: the storefront takes ten times the usual traffic without complaint, ten times the usual orders are created, and every system that reads or writes those orders through the Admin API is suddenly running at ten times its normal rate against a limit that has not moved. The export job that comfortably kept up in October starts falling behind at 9pm on Thursday, and nobody notices until the queue is four hours deep.

That is why the runbook’s most important dashboard is not page speed. It is the age of the oldest unprocessed order, and it belongs on the front page with a number beside it.

Decide the thresholds now, in numbers

The single biggest source of delay during an incident is not diagnosis. It is someone at 2am wondering whether this is bad enough to wake a colleague. Take that decision away from them by writing it down in October, when everyone is calm and nobody is embarrassed.

Each threshold is a number, a consequence and a name. "If orders have not exported for thirty minutes, ring Priya — she does not mind." "If checkout completion drops more than X below the baseline on the front page for two consecutive fifteen-minute windows, disable the most recently added checkout extension and tell the channel." "If the fulfilment backlog passes a day’s capacity, stop the paid spend on the campaign driving it."

Set the numbers from your own baseline rather than from anything published. There is no industry threshold that knows how deep your fulfilment queue can safely get, and a borrowed number is worse than one you argued about internally for ten minutes.

Write the permission alongside it. An on-call engineer who has been told in advance that they may disable any app without asking will do it in ninety seconds. One who has not will spend forty minutes trying to reach a director.

Rollback steps have to be literal

"Revert the theme" is not a procedure. The procedure is: the name of the known-good theme version, where to find it, who has the permission to publish, roughly how long publishing takes, and what breaks in the meantime — a live cart, a running campaign pointing at a section that will disappear.

The same applies everywhere. For each app you might disable, note whether disabling removes its script from the theme immediately or leaves a block behind that must be removed by hand. For each integration, note whether switching to manual means turning something off, or turning something else on. For a discount, note whether deactivating it affects carts that already have it applied.

The test for every rollback entry is whether it can be executed by someone reading it for the first time. If a step assumes knowledge that lives in one person’s head, either write the knowledge down or accept that this rollback is only available when that person answers their phone.

Rehearse it once, or accept it is fiction

A runbook that has never been used is a document about what somebody imagined would happen. The cheapest fix is a two-hour game day in October: pick three scenarios, do not warn the on-call person which, and run them against a staging store or in a read-only walkthrough against production.

The failures are always the same and always worth finding early. A phone number is wrong. A dashboard needs a login two of the four people do not have. The 3PL’s out-of-hours contact goes to a mailbox nobody reads until Monday. The revert step needs a permission the on-call engineer does not hold. None of these are interesting problems, and every one of them costs an hour during the actual event.

Rehearsing is also the only way the document gets shorter. Nobody deletes a paragraph from a runbook they have never had to read under pressure.

What we would talk you out of

Most stores do not need a staffed war room. Six people watching dashboards for four days is expensive, tiring, and tends to produce interventions nobody asked for — somebody spots an anomaly at hour thirty and changes something, and now you have an incident that peak did not cause. One person on call with a good document, a clear escalation path and explicit permission to act beats a room of people waiting to be told what to do.

We would also talk you out of adding monitoring in November. New alerting with no baseline produces noise at exactly the moment noise is most expensive, and an on-call engineer who has learned to ignore an alarm is worse off than one who never had it. If the instrumentation was not in place by October, note the gap in the runbook and work around it.

The lasting version of this is not a document at all — it is having the same people looking after the store in March as in November, so the runbook is something they maintain rather than something they write once a year. That continuity is most of what a [support and maintenance arrangement](/services/support) is actually buying, and it is why the second peak is always calmer than the first.

The half hour on the Monday

Book thirty minutes on the Monday after, while it is still fresh, and capture three things: what actually happened, what the runbook got wrong, and what nobody had written down. Edit the document in that meeting rather than promising to later.

That is the only mechanism by which a runbook improves. A document reviewed once a year in October is rewritten from memory by people who have forgotten the details that mattered. One edited on the Monday is a record of what was true.

Questions this raises

What should a Black Friday runbook contain?

Four things: the on-call rota with phone numbers and who is allowed to decide what; the dashboards to watch with a baseline for each so an unusual number is recognisable; six to eight failure scenarios written as symptom, check, action and decision owner; and literal rollback procedures. Preparation work — freezes, audits, load tests — belongs in a separate readiness document, because nobody can navigate past it during an incident.

How is a runbook different from a peak readiness checklist?

A checklist is used before the event and is a list of work to complete. A runbook is used during the event and is a list of decisions already made. They have different readers, different lifespans and different formats, and combining them produces a document that is too long to use when it matters.

What usually breaks on Black Friday for a Shopify store?

Not the storefront. Shopify documents that Storefront API buyer traffic is not rate-limited, and checkout capacity is their responsibility. What breaks is everything downstream of the order: exports to an ERP or 3PL, webhook-driven integrations, discount logic meeting a combination nobody tested, and inventory disagreeing across channels. The Admin API has a per-plan restore rate that does not increase because it is November.

Who should be on call during peak?

Fewer people than most plans assume — one person per shift with real authority beats a room of people waiting for permission. What matters is that whoever is on can reach a named decision-maker, has the access to execute every rollback in the document, and knows in advance which actions they may take without asking.

When should thresholds and escalation rules be set?

In October, when everyone is calm. The delay in most incidents is not diagnosis but someone deciding whether the situation justifies waking a colleague. Writing the number down in advance — thirty minutes of unexported orders, a defined drop in checkout completion — removes that hesitation and the argument that follows it.

Is it worth rehearsing a runbook?

Yes, and two hours is usually enough. A walkthrough of three unannounced scenarios reliably surfaces a wrong phone number, a dashboard somebody cannot log in to, and a rollback that needs a permission the on-call engineer does not have. All three are trivial in October and cost an hour each during the event.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.