nextlevels logo
DEEN

Black Friday preparation for online shops: the playbook

What you can still do before 27 November and what to plan for next year

Commerce & Shopware20 min read

In 2026, Black Friday falls on 27 November and Cyber Monday on 30 November. From mid-November, that leaves a little over two weeks.

That is tight, but enough for the work that prevents the most damage: a code freeze that starts no later than 16 November, a check of strikethrough prices against the 30-day rule and a test of the purchase path under load. New this year is a fourth item: since June, online shops have had to offer an electronic withdrawal function, and that flow has not yet been through a promotional peak.

The promotional period is also longer than a single day. Many retailers launch their deals the week before, and in logistics the peak comes even later: in 2025, DHL sorted its record volume only on the Tuesday after Cyber Monday, around 12.4 million parcels, almost twice as many as on a normal day (DHL Group). For the 2025 discount days, the German Retail Federation (HDE) had for the first time expected a drop in revenue, to €5.8 billion (Handelsblatt).

The Black Friday preparation timeline

Most Black Friday problems are caused by work that started too late. A theme update a week before, a new payment plugin on the Monday, a price list imported the night before the promotion starts. The timeline counts backwards from the start of the promotion, here using a Black Week that begins on Friday, 20 November 2026.

Black Friday preparation 2026: timeline for technology, prices and campaign (Black Week from 20 November)
PhaseFor 2026TechnologyOffer & pricesCampaign
6–8 weeks beforeEarly OctoberDefine the load target, clarify capacity with your hostSet the range and discount logic, calculate marginsStrengthen newsletter sign-up, check deliverability
3–4 weeks beforeLate OctoberRun the load test, fix bottlenecks, install updatesCreate promotions in Shopware, maintain 30-day pricesBuild the deal page, write the emails
7–10 days beforefrom 10–13 NovemberCode freeze, plan on-call dutySpot-check strikethrough pricesPrepare the announcement, approve ads
Promotion period20–30 NovemberMonitoring, no deploymentsWatch stock and sell-throughSend the sequence, evaluate responses
Afterwardsfrom 1 DecemberReduce capacity only after the holidaysEvaluate returns and code usageMove new customers into the existing-customer flow

The columns depend on each other. A discount logic that is only fixed three days before launch will not make it into any load test. And a deal page that goes live on Thursday evening has never been seen under load by anyone.

Black Friday preparation 2026: calendar 12–30 November with code freeze from 16 November, Black Week and Cyber Monday
Black Friday preparation 2026: calendar 12–30 November with code freeze from 16 November, Black Week and Cyber Monday

When only two weeks are left

For many readers, the first two rows of the table are already behind them, and the regular freeze date of 10 November has passed as well. At that point, prioritisation counts for more than completeness. No longer sensible in two weeks: a theme change, a hosting move, a new payment provider, a new shop system. The risk outweighs the benefit.

What you can still do, in order of urgency:

  1. From 16 November at the latest: start the code freeze and tell everyone involved, including external service providers.
  2. Starting now: do not launch any further price promotion for items you plan to reduce on Black Friday. Every lower price in the 30 days before becomes the reference price and shrinks the discount you are allowed to show. Exception: a series of reductions that keeps going lower without interruption may refer throughout to the price before it began (§ 11(2) PAngV).
  3. By 18 November: check the lowest price of the last 30 days for all promotional items and enter it in Shopware.
  4. By 18 November: create promotions with validity period, usage limits and combination rules, and test them on staging.
  5. By 19 November: run a shortened load test on the purchase path, covering at least cart and checkout.
  6. By 19 November: click through the entire withdrawal flow once, including the confirmation email.
  7. Before launch: fix on-call duty, the contact list and a second payment method, and restrict email sending to the active segments.

Technology: the shop has to withstand the peak

Load testing with a realistic profile

A load test answers one question: how many concurrent visitors and orders can the shop handle before response times rise or errors occur? You derive the load target from your own data. A simple model calculation: if the Black Week 2025 peak was 600 sessions and 12 orders per minute and you expect 20% growth, that makes 720 sessions and around 14 orders. With a safety factor of two, you test for 1,440 sessions and 29 orders per minute.

The profile is what matters. A test that only calls the home page mainly measures the cache. The critical path lies elsewhere.

In Shopware, search, cart, checkout and order completion are not served from the HTTP cache. Filtered category pages are cacheable, but every filter combination is a separate entry and is hit correspondingly rarely. Each of these requests puts real load on PHP, the database and the search index.

Shopware provides its own k6 test suite for this, with scenarios for pure browsing, the full purchase process and API imports. Two notes from the documentation matter: disable captchas and email sending before the test, and inform your hosting provider in advance. Otherwise its protection blocks the test load and the result is worthless.

Shopware HTTP cache: cacheable pages compared with search, cart and checkout, which bypass the cache
Shopware HTTP cache: cacheable pages compared with search, cart and checkout, which bypass the cache

HTTP cache and cache invalidation

For shops with significant traffic, a reverse proxy such as Varnish sits in front of Shopware, and the platform ships a standard configuration for it. The real pitfall is invalidation.

Picture the sequence: at midnight, an import changes the prices of 5,000 promotional items. Each change invalidates the cached pages of those products and their categories. At the same time, the search index starts reindexing, and the first promotional email has already gone out. Visitors hit a largely empty cache, and every page view goes to the database, which is busy with the import.

Shopware mitigates this with delayed invalidation: changes are collected and, by default, processed in batches every five minutes. The performance documentation recommends storing this data in Redis.

Two things follow from this. Price changes appear in the frontend with a delay, and the team needs to know that. And the price switch should be run on staging beforehand, with measured durations for import, indexing and cache warm-up. Afterwards you know whether midnight is realistic or whether the switch should run early in the morning, before the first email goes out.

Queue, workers and background jobs

Order confirmations that arrive an hour late and prices that do not appear in the frontend often have the same cause: a message queue that is not being processed. Shopware handles indexing, emails and flows asynchronously.

In production, these jobs run on dedicated CLI workers. The admin worker only works while someone is logged into the backend and is not fit for promotion week. The documentation also recommends sending emails via the queue so that order confirmations do not slow down checkout.

Before promotion week, check which scheduled tasks fall into peak hours: nightly full imports from the ERP, sitemap generation, feed exports for price comparison sites. Anything that does not have to run during the promotion moves to a quiet time. From Shopware 6.7.1, sitemap generation can be taken out of the scheduler and started via a separate cron job.

Stock and overselling

With heavily discounted items, stock is gone within minutes. For goods that cannot be restocked, tick the “Clearance sale” checkbox in Shopware: the item can then only be ordered while available stock remains.

In the 6.7 branch, there was a bug that left clearance items orderable despite empty stock if they were already in the cart (GitHub issue #12805). It has been fixed since 6.7.4.0. If you are on an older version, the update logic is in the Shopware 6 version roadmap. You can test the case yourself in five minutes: two browsers, one item with stock 1, two simultaneous orders.

If an ERP manages stock, the sync interval decides. A sync every 60 minutes is enough in normal operation. At the load target from the model calculation above, up to around 1,700 orders run against outdated stock in such an interval, and customer service spends December writing cancellation emails.

Code freeze and on-call duty

The code freeze begins seven to ten days before launch: no plugin updates, no theme release, no new integrations. Security updates are the exception, but they also go through staging. Whatever has not been tested by then waits until after Cyber Monday.

For the promotion period, you need on-call duty with clear responsibilities. Who decides whether a promotion is stopped? Who has access to hosting, the payment dashboard and DNS? Which number reaches the host outside business hours?

This list has to be written down in a place where someone can find it at two in the morning. If a service provider looks after your shop, Shopware maintenance should have this week firmly scheduled.

Template emergency card for Black Week: role, responsibility, availability and decision authority
Template emergency card for Black Week: role, responsibility, availability and decision authority

Payment and third-party providers

Payment, ERP and external services have their own limits, which often do not show up in a load test on staging. Tell your payment service provider about the expected peak and ask about its limits. At least one second payment method should be ready, and it should be settled in advance who deactivates a payment method if something fails.

External search, review widgets, tracking and chat scripts carry the same risk: every script loaded in the frontend costs loading time and can hang. Anything nobody needs during promotion week gets removed.

Shopware ships a rate limiter, for example for login, the newsletter form and adding items to the cart. The cart limiter, however, has no limit by default (core.cart.lineItemAddLimit is set to 0). It only works against bots that put promotional goods into carts once you set a value.

Offer and prices: discounts that hold up legally and leave margin

The 30-day rule by example

An item normally costs €89.90. From 25 October to 7 November, it ran in an autumn promotion at €79.90. For Black Friday, it is to cost €69.90. What discount are you allowed to show?

30-day rule under § 11 PAngV: permissible discount in the worked example
Reference priceCalculationDiscount shown
Regular price €89.9069.90 / 89.90−22% (not permitted)
Lowest price of the last 30 days €79.9069.90 / 79.90−12.5% (correct)

The reason is § 11 PAngV. Anyone advertising a price reduction to consumers must state the lowest total price of the last 30 days before the reduction. In September 2024, the Court of Justice of the European Union (CJEU, in German EuGH) clarified that percentage figures and advertising claims such as “price highlight” must also be based on this lowest price (EuGH, C-330/23).

Germany’s Federal Court of Justice (BGH) followed up in October 2025: the reference price must be clearly recognisable and easy to read. In the case decided, an asterisk pointing to small print at the bottom of the page was not sufficient (BGH, I ZR 183/24).

So if you already ran promotions in October, you can often show smaller discounts in November than planned. Price history belongs at the start of promotion planning.

30-day rule example: Black Friday discount of −12.5% instead of −22% after an autumn promotion at €79.90
30-day rule example: Black Friday discount of −12.5% instead of −22% after an autumn promotion at €79.90

Three distinctions come up regularly in practice. According to Taylor Wessing, range-wide promotions such as “20% off everything” also fall under the rule, for each affected item individually. Individual discounts such as a personal birthday voucher are exempt, whereas a publicly advertised code that anyone can enter is not an individual discount.

Caution is advised with the manufacturer’s recommended retail price (UVP): in December 2025, the Higher Regional Court (OLG) of Düsseldorf ruled that comparing a price with the UVP can, depending on its presentation, be understood as a price reduction (Bird & Bird).

Since version 6.4.10, Shopware has had fields for the lowest price of the last 30 days, which appear in the storefront next to the reduced price. Shopware does not calculate the value itself, though. It has to be maintained, via bulk edit, import or API (Shopware Release News). Without a tool that records the price history, this is hardly possible without errors for large ranges.

This section is not legal advice. For borderline cases, a quick call to a law firm is worthwhile. We have summarised typical warning-letter traps in our article on avoiding warning letters in your online shop.

Setting up discounts in Shopware

A fixed discount code in the newsletter often turns up on voucher sites after a short time. Then everyone gets the subscriber discount, and the budget is used up faster than planned. Shopware maps discounts via Promotions, and four settings control exactly these cases.

The validity period (Valid from, Valid until) starts and ends the promotion automatically. Nobody has to flip a switch at midnight. The code type determines the reach: promotions without a code apply automatically as soon as the conditions are met, a fixed promotion code applies to everyone, and individual promotion codes can each be redeemed only once.

With the maximum number of uses overall and per customer, you cap the budget. Priority and the option to prevent combination with other promotions let you define whether the Black Friday discount, newsletter voucher and loyalty points stack.

For discounts that only your own list should get, individual promotion codes are the cleaner choice. With percentage discounts, a maximum amount per order limits the risk of a large basket blowing up the calculation.

Calculate margin before discount

A discount has to pay for itself through additional sales. How much additional volume is needed depends on the gross margin.

How much additional volume a discount needs at a 40% gross margin
Net selling pricePurchase priceGross profit per unitUnits needed for the same gross profit
€100 (regular)€60€401×
€90 (−10%)€60€301.33×
€80 (−20%)€60€202×
€70 (−30%)€60€104×

Model calculation at a 40% gross margin, excluding shipping, payment fees and returns.

At a 40% gross margin, a 20% discount needs twice the sales volume just to match the gross profit. Returns, shipping and fees shift the calculation further. A blanket “everything reduced” is rarely the best choice. A selection of items with high margin or overstock, bundles that raise the order value, or free add-ons instead of a price cut often work better.

Points promotions are discounts too; they just show up later in the accounts. Why “10x points” on Black Friday costs more than it looks is explained in our article on the loyalty programme.

Countdowns, scarcity and bait offers

A countdown to the end of the promotion is permitted if the promotion actually ends then. Under no. 7 of the Annex to § 3(3) of the German Act Against Unfair Competition (UWG), a false claim that an offer is only available for a very limited time is prohibited (gesetze-im-internet.de). A timer that restarts when it runs out, or a “last chance” after which the promotion is extended, falls squarely under this.

For quantities, no. 5 applies. Anyone who advertises a price and can foresee not having enough goods for a reasonable period must point this out. If stock lasts less than two days, the retailer has to prove that the quantity was reasonable. For deals with a small allocation, stating the quantity openly (“while stocks of 200 units last”) is the simplest solution.

You may use the term “Black Friday” itself freely. The German word mark has been finally cancelled following a judgment of the Kammergericht Berlin (Berlin Court of Appeal) and a 2023 BGH decision (CMS Hasche Sigle).

The deal page: a landing page that comes back every year

For many visitors, the promotion overview is the entry point. It gets a fixed address, such as /black-friday, and stays in place all year. A new URL every year, like /black-friday-2026, starts from zero with links and search engines each time. Outside the promotion, the same page shows a preview of the next promotion and a newsletter sign-up.

In Shopware, the page is created as a category with a Shopping Experiences layout. The products come from a dynamic product group that collects, for example, all items from certain promotional categories or with a strikethrough price set. That way you maintain the selection through product data rather than by hand in the layout. One technical detail: if indexing of dynamic product groups is switched off for performance reasons, category pages only update when the HTTP cache expires.

Three things make the page usable. Filters and sorting by discount and category, so nobody has to scroll through 400 items. A clear approach to sold-out items: hide them or sort them to the end.

And the mobile view. According to a Bitkom survey, a good half of internet users in Germany intended to use the discount days in 2025, 69% of them exclusively online. For online shopping in general, 73% of online shoppers use their smartphone. So the deal page gets signed off on a phone first.

What happens next in checkout decides the revenue. The usual reasons for abandonment weigh more heavily under promotional pressure; the most important levers are covered in our article on cart abandonment in Shopware shops.

Wireframe of a mobile Black Friday deal page with filters, strikethrough prices and the 30-day price
Wireframe of a mobile Black Friday deal page with filters, strikethrough prices and the 30-day price

Newsletter and campaign

The list is built beforehand

During Black Week, the newsletter is the cheapest channel, but only for the addresses you already have. Under § 7(2) no. 2 UWG, promotional emails require prior express consent, in practice via double opt-in.

The exception in § 7(3) UWG allows advertising to existing customers without consent, but only if four conditions are met at the same time:

  • The address was obtained in connection with a sale.
  • The advertising is for your own similar goods.
  • The customer has not objected to the use.
  • The customer was informed of the right to object when the address was collected and in every email.

A discount email to everyone who has ever ordered usually does not fully satisfy this exception.

The weeks before Black Friday are sign-up weeks. Early access for subscribers, meaning access to the deals a few hours before everyone else, is an honest reason to sign up.

Deliverability: the invisible prerequisite

Five promotional emails in one week to a list that normally hears from you once a month: this is exactly the pattern the major mailbox providers penalise. Since February 2024, Gmail (from 5,000 emails a day) and Yahoo have required bulk senders to authenticate with SPF, DKIM and DMARC, to offer one-click unsubscribe (List-Unsubscribe under RFC 8058) and to keep the spam complaint rate below 0.3% (Google, Yahoo). Microsoft has had comparable rules for Outlook.com since May 2025 (Microsoft).

During Black Week this becomes critical, because many retailers suddenly multiply their sending frequency. If the emails then go to many inactive addresses, they generate exactly the complaints that push a sender into the spam folder. Clean the list beforehand, send the promotional emails to active segments first and increase the frequency gradually. Send via a specialised email service provider, not via the shop’s SMTP server, which has to deliver order confirmations at the same time.

A sequence that fits the timeline

Newsletter sequence for Black Week and Cyber Monday 2026
Timing 2026EmailContent
approx. 17 NovemberAnnouncementDate, categories, mention of early access
19 or 20 NovemberEarly accessDirect link to the deal page, early access for subscribers
27 NovemberMain emailThe strongest offers, clear duration
29 NovemberReminderOnly to segments without a purchase
30 NovemberFinal emailHonest end date, separate Cyber Monday offers if applicable

Segmentation reduces complaints. Anyone who already bought on Friday gets no reminder on Sunday, at most a shipping update. In paid channels, click prices can rise during promotion week because many retailers are bidding at the same time. Budgets, ad copy and promotion periods in Google Ads are fixed before the code freeze and are not improvised on Friday morning.

Newsletter sequence for Black Week 2026: announcement, early access, main email, reminder, Cyber Monday
Newsletter sequence for Black Week 2026: announcement, early access, main email, reminder, Cyber Monday

After the peak: withdrawal button, capacity and evaluation

Since 19 June 2026, online shops that sell to consumers have been required to offer an electronic withdrawal function (§ 356a BGB, the German Civil Code). After this Black Week, customers can therefore, for the first time, declare their withdrawal in large numbers via this route as well. How many will do so, and how many will keep sending items back through a returns portal, cannot be predicted. Either way, the flow has to work.

Shopware has shipped the function natively since version 6.7.9.0: a button in the footer, a withdrawal form as a Shopping Experience and the assignment in the master data. In the forum, retailers report cases where confirmation emails did not arrive (Shopware forum). The law, however, explicitly requires a confirmation of receipt to the customer. A complete test run before launch, with real email delivery, is mandatory.

Withdrawal flow in Shopware 6.7.9: button, form, confirmation of receipt and processing
Withdrawal flow in Shopware 6.7.9: button, form, confirmation of receipt and processing

When it comes to capacity, the temptation to scale servers down right after Cyber Monday is strong. The Christmas season follows immediately, and logistics only peaks afterwards: in 2025, DHL’s record day was Tuesday, 2 December. Reduce resources after the holidays at the earliest.

For the evaluation, revenue alone is not enough. Four metrics say more: additional revenue compared with a normal reference week, gross profit per order after discount, the share of new customers and the return rate of promotional orders compared with normal operation.

Add a look at the codes. Which ones turned up on voucher sites, and how much discount went to customers who were never meant to get it? With these figures, planning for 2027 starts in October, eight weeks ahead instead of two.

Frequently asked questions

Is mid-November too late for Black Friday preparation?

For major changes, yes; for the most important safeguards, no. Postpone a theme change, hosting move or new payment provider to January. A code freeze, a price check under the 30-day rule, promotions in Shopware, a shortened load test on cart and checkout and a test of the withdrawal flow are all feasible in two weeks.

Do I have to state the lowest price of the last 30 days for “20% off everything”?

According to the prevailing view, yes, for each affected item individually. For a general announcement without specific product prices, for example in a newsletter, the reference price can be shown with the item in the shop. If the email shows a specific item with a discount, however, the 30-day price belongs in the email as well.

Can I still run a discount promotion before Black Friday?

Yes, but it changes your Black Friday discount. Every lower price in the 30 days before the Black Friday reduction becomes the reference price. A pre-promotion that ends and returns to the old price therefore shrinks the percentage you can show on Black Friday. If, on the other hand, it moves without interruption into a deeper Black Friday reduction, you may refer throughout to the price before the first step (§ 11(2) PAngV).

Can I advertise Black Friday offers with a countdown?

Yes, if the promotion actually ends at the time shown. A timer that restarts, or an announced last chance followed by an extension, is a false statement about availability and is prohibited under the UWG.

Next step

Is your Shopware shop ready for Black Week?

The free Shopware audit checks your shop by URL for performance, security, SEO and setup, a quick check before your promotion starts.