In short and in plain language
Before Christmas, many shops sell a lot. During this time, every change to the shop is a risk.
A change freeze helps. From a fixed day on, you change very little in the shop. The freeze starts first for new features and design.
Important security updates stay possible. For this, you agree on a fixed path in advance.
Before the freeze, there is a lot to do. Certificates and licences are renewed. You test whether the shop can be restored from a backup.
We plan the freeze with you. We are there for you during the freeze.
For many merchants the business year is decided between mid-November and the turn of the year: 18.5 percent of annual retail turnover falls into November and December, and for those two months the German retail association most recently forecast 126.2 billion euros in turnover (HDE, November 2025). A change to the shop is no worse in those weeks than it is in May - it is only more expensive, because the way back is missing and so are the people who would take it. A change freeze is the date from which the shop only does what it already knows how to do. This article describes how that date gets into the maintenance plan: which change classes rest from when, which exception path stays open for security fixes, what belongs in the October list, and who is reachable while the freeze runs.
Key takeaways
- The freeze is a calendar, not a ban: every change class gets its own date from which it rests - features and design first, configuration and content later, security fixes not at all.
- November and December carry 18.5 percent of annual retail turnover (HDE). The freeze does not protect the technology, it protects that share from changes without a rehearsed way back.
- No freeze holds without a documented exception path. If the route for a critical security fix is not agreed beforehand, December produces a change without a written record instead of one with.
- October carries the load: pull forward certificates and licenses that expire in December, rehearse the restore, check headroom on storage and compute, and clear the clock change on the last Sunday in October (Directive 2000/84/EC).
- The freeze does not end by itself on 1 January. It ends with an approval, a fixed sequence for the changes that piled up, and a date written into the maintenance plan.
Why a change freeze is not a standstill
The objection to a change freeze sounds reasonable: precisely in the most important quarter you want to stay able to act. The objection confuses two things. A shop is able to act when it can take a fault back within minutes - not when it rolls out a new payment method in the week before the second Advent Sunday. In practice the expensive December incidents rarely come from attacks; they come from your own releases: a package version that ran fine on the test system, a setting that shifts a tax rule, a theme that pushes the order button below the fold on small screens. How a planned intervention is scheduled cleanly is described in the article on maintenance windows without revenue loss; the freeze is the level above it - it says which interventions are not even planned for a few weeks.
A change freeze has four parts, and none of them is a ban. First, a classification: what kinds of change exist in this shop at all? Second, a calendar: from which date does which kind rest? Third, an exception path: how does a critical security fix still get in without softening the rule? Fourth, on-call cover: who is reachable during that period, in which time windows, and for which kind of alert? If one of the four parts is missing, the freeze typically holds until the first urgent request.
A freeze without an exception path lasts less than three weeks
The change calendar: which class rests when
A single freeze date for everything is the most common design - and the least practical one. Content and pricing have to stay movable in December, otherwise the shop cannot react to a short-notice offer. A theme update, by contrast, serves no purpose from mid-November onwards. The calendar therefore separates by change class, not by system. Where exactly the dates sit is answered better by last year's own revenue curve than by any industry figure. The industry supplies the order of magnitude: for November and December the German Retail Federation expected 22.2 billion euros in online retail turnover, nominally 3.3 percent more than the year before (HDE forecast, November 2025).
The table below shows a classification that has proven itself in small and mid-sized shops. More important than the exact number of classes are three fields per row: from when the class rests, who decides on an exception, and which way back was rehearsed beforehand. Without the third field the calendar is a statement of intent. Which work a running maintenance package already covers is shown in the overview of services - the change calendar belongs on the same line there as the maintenance window.
| Change class | Rests from | Who decides on an exception | Way back, rehearsed beforehand |
|---|---|---|---|
| Features and design | Mid-November | Business unit together with maintenance | Previous package state, release rolled backwards |
| Extensions and themes | Mid-November | Maintenance | Previous package state including database migration backwards |
| Shop configuration | End of November | Shop owner | Export of the previous day's settings |
| Content and pricing | Keeps running | Editorial team | Page versioning, rollback inside the admin interface |
| Security fixes | Does not rest | On-call lead | Rollback package, prepared before deployment |
| Infrastructure and certificates | Early November | Maintenance | Second certificate in place, old entry still valid |
Two rows deserve a second look. The infrastructure class rests earliest because its faults surface latest: a certificate expiring in December does not report itself at deployment time, it reports itself on the expiry date. And the extensions class needs an inventory before the freeze, because it usually contains more than the shop owner keeps in mind - test systems, stale subdomains and forgotten installations all belong to the same attack surface. How that inventory is cleaned up is described in the article on forgotten test systems and stale subdomains.
What gets cleared in October
October carries the load of the freeze. Everything that would fall due in November and December is pulled forward or extended - and everything that can no longer be rehearsed in December is rehearsed now. One fixed date belongs in this month anyway: under European law summer time ends on the last Sunday in October (Directive 2000/84/EC, Article 3), which in 2026 is 25 October. What that night does to cron jobs, timestamps and jobs running twice is covered in the article on the clock change and its effect on cron jobs.
Pull certificates forward
Every TLS certificate expiring between 1 November and 15 January is renewed in October or moved onto an automated path. A second, already valid state sits next to it.
Renew licenses
Record the expiry date per extension, pull the renewal forward, clarify the billing route. An expired license often does not take away the feature, only the right to updates.
Rehearse the restore
The latest backup is restored in full on a separate environment until the shop there can take an order. Two durations are measured: to emergency operation and to normal operation.
Check headroom
Free space on the volumes for order data and for backups, CPU utilisation in the peak hour, database memory. What is recorded is the slope, not just the current level.
Clear the clock change
Check cron jobs on the night of the last Sunday in October: jobs running twice, runs skipped entirely, timestamps in orders and invoices.
Test the alert route
Send a test alert through the whole chain: measurement, forwarding, phone call, acknowledgement. Dead distribution lists and old phone numbers surface while there is still time to fix them.
The six items share one property: they cost hours in October and days in December. In practice the licenses item is the most unpleasant, because it has two effects that are easily confused - an expired license in many cases does not take away the feature, only the right to updates. The shop keeps running, but the security fix in January no longer arrives. Which deadlines count here and how to monitor them is set out in the article on extension license expiry.
The exception path for security fixes
The exception path is not an emergency exit, it is a second, narrower procedure. It differs from the normal route in four points: the trigger is defined more narrowly, the decision sits with a named person instead of a committee, the test run is shortened but not dropped, and the written record is more detailed than usual. Anyone who couples this path to on-call cover has built half of it already - in emergency support reachability, decision authority and record-keeping are already one process.
The trigger is what decides. Define it too broadly and every request travels down the exception path, leaving the freeze without effect. Define it too narrowly and an exploited gap stays open for three weeks. In practice a combination of two conditions works: the vulnerability is exploitable in the state actually deployed - not merely present in the product - and it affects a path the shop offers publicly. Together those two are rare enough to keep the calendar and frequent enough to catch the cases that matter.
# Fourth-quarter change calendar - extract from the maintenance plan.
# The file lives in the repository, not in someone's mailbox.
freeze:
start: 2026-11-14
end: 2027-01-06
timezone: Europe/Berlin
classes:
features_design:
frozen_from: 2026-11-14
decision: business_unit + maintenance
way_back: previous_package_state
extensions_themes:
frozen_from: 2026-11-14
decision: maintenance
way_back: previous_package_state
configuration:
frozen_from: 2026-11-28
decision: shop_owner
way_back: settings_export
content_pricing:
frozen_from: null # keeps running, way back via page versioning
decision: editorial
infrastructure_certificates:
frozen_from: 2026-11-07
decision: maintenance
way_back: second_certificate_in_place
security_fixes:
frozen_from: null # not frozen, see the exception path
exception_path:
trigger: # both conditions together
- exploitable_in_the_deployed_state
- affects_a_publicly_reachable_path
decision_by: on_call_lead
required:
- test_run_on_a_separate_environment
- rollback_package_ready_before_deployment
- written_record_with_timestamps
notify: shop_owner
on_call:
weekdays: "08:00-18:00"
evenings: "18:00-22:00"
weekend: "10:00-18:00"
unprompted_check: "daily 07:30 and 19:30"
The file belongs in the same repository as the rest of the configuration, so that every change to the calendar is a change with a history. Two fields are easy to overlook. The timezone keeps a freeze in a distributed chain from slipping by an hour, especially after the changeover at the end of October. And notify makes sure the shop owner learns about an exception before spotting it in the figures. Whether the exception worked is then shown by ongoing shop monitoring - a change without a follow-up measurement is a bet in December.
One point comes up regularly in discussion: does content really belong in the calendar if it keeps running anyway? Yes, but with a different field. For content the interesting value is not the freeze date but the way back within the session. Anyone rebuilding a category page and removing a filter changes what is delivered just as a developer does. The difference is that an editor can take that way back inside the admin interface, provided versioning is switched on. That is exactly what should be tried once before the freeze, not assumed.
On-call cover: who is reachable and for what
The freeze shifts work, it does not remove it. What is not changed in December has to be watched - by people who are allowed to decide. An on-call plan for the fourth quarter answers four questions in writing: which time windows are covered, which alert types trigger a phone call, which ones wait until the next working day, and who stands in during illness. Without the fourth answer the plan hangs on a single person. How reachability, response time and decision authority fit together is described on the page about emergency support.
The on-call plan belongs before the freeze, not beside it. Concretely: phone numbers and mailboxes are tested in October, not asserted in December. A test alert through the entire chain - measurement, forwarding, phone call, acknowledgement - takes half an hour and in practice finds at least one dead address. Often it is a distribution list pointing at a mailbox nobody has opened since the summer. The other direction counts too: anyone keeping access on holiday that they do not need during that time has already softened the plan.
Three windows, three commitments
Deadlines that hit in December
The most unpleasant mistake in a change freeze is not the overly strict rule, it is the overlooked deadline. A deadline does not negotiate: it expires while the freeze is running and forces exactly the change that was meant to be avoided. The list below collects the deadlines that regularly fall into December in this environment. It is worked through in October, every item gets a date, and every date between the start and the end of the freeze is pulled forward or extended.
One deadline deserves its own line, because it is not a maintenance topic and still hangs on the technology. German VAT law permits paper for turnover in 2027 only until 31 December 2027, and only where total turnover in the preceding calendar year was no more than 800,000 euros (Section 27 (38) no. 2 of the German VAT Act). For everyone above that, the paper option ends with the turn of the year. A differing electronic format stays possible alongside it for the same period without any turnover threshold, provided the recipient consents and the invoice is transmitted via EDI (Section 27 (38) no. 3 of the German VAT Act). Anyone planning the switch for January is planning it directly behind the freeze - what the shop needs to be able to do is covered in the article on e-invoicing from 2027.
- Renew TLS certificates expiring between 1 November and 15 January, or move them onto an automated path, before the freeze starts
- Record licenses and maintenance contracts for the extensions in use with an expiry date per package, pull renewals forward, clarify the billing route
- Check access to payment and shipping providers: keys with expiry dates, stored callback addresses, phone numbers for queries
- Clear domain and DNS deadlines: registration, registrar lock, records with a short validity that somebody renews by hand
- Collect legal dates with a technical effect: VAT deadlines, price disclosure rules, withdrawal periods that sit in the shop's text blocks
- Review contracts with a notice period at year end - an unintended renewal is annoying, an unintended termination is an outage
- Note the people-related deadlines: holiday planning, cover arrangements, handover of access before 1 December
The restore rehearsal before the freeze
A change freeze lowers the probability of a self-inflicted outage, it does not lower it to zero. That is why a rehearsal belongs to the freeze: the latest backup is restored on a separate environment, in full, until the shop there can take an order. The difference from merely checking the backup files is considerable. A backup that can be opened proves the file is readable - not that a running shop comes out of it.
The rehearsal measures two figures that should afterwards sit in the maintenance plan: how long does it take to reach emergency operation, and how long to reach normal operation? The German BSI Standard 200-4 separates those two goals explicitly and describes the second one as follows: „Die Wiederherstellungsplanung hat zum Ziel, einen Zustand zu erreichen, in dem der Normalbetrieb wieder möglich ist.“ (BSI) - recovery planning aims at a state in which normal operation is possible again. Anyone rehearsing only emergency operation does not know the second figure - and the second figure is the one a shop owner is asked about in December. The procedure is described in the article on disaster recovery and restoring the shop.
Three details decide whether the rehearsal is worth anything. First, it runs on an environment that resembles production in size and versions, not on a developer machine. Second, what is measured is the path a customer takes: home page, category, product, basket, checkout up to the payment selection. Third, the result is written down with a date, because in January hardly anyone remembers which state was rehearsed. The rehearsal runs before the freeze starts, so that a fault it finds can still be fixed through the normal procedure.
Headroom for storage and compute
The third preparation is the least conspicuous one: headroom. In December it is not only the number of orders that rises, but also the volume of what the shop produces along the way - session data, search logs, invoice documents, images in several formats, caches. A full volume is an outage that looks like a database fault and gets hunted in the wrong place for hours. How to find that limit in advance is described in the article on load testing for peak traffic.
For practical purposes four measurements are enough, taken once in October and monitored afterwards: free space on the volume holding order data, free space on the volume holding backups, CPU utilisation in the peak hour, and memory used by the database. More important than the absolute value is the slope. A volume losing two percentage points a week is arithmetically full by the end of the freeze, even if twenty percent are still free today.
The report is deliberately boring. Its purpose is the headroom in weeks, not the percentage: only the headroom connects today's level with the date on which the freeze ends. The two alarms in this example are the normal case - in practice certificates and licenses show a preference for expiring between Christmas and New Year, because a year earlier they were set up between Christmas and New Year.
How the freeze ends
A freeze that simply lapses without an approval produces, on the first working day in January, a release containing everything that has piled up since November. That is the riskiest release of the year: many changes at once, a team that has just come back, and a shop still processing returns and gift-voucher redemptions. The calendar therefore needs an end date and, behind it, a sequence.
The sequence after the freeze follows the stack, not the calendar. What everything else builds on comes back first, and one at a time: infrastructure and certificates, then configuration, then extensions, finally features and design. Between the steps sits a day with measurement. Releasing everything on the same day saves a week and gives up the ability to attribute a fault to a cause. It has also proven useful to place the end date deliberately after the first working day: 6 January, or the weekend that follows, is as a rule quieter than the 4th.
A change freeze is not a vote of no confidence in the team. It is the decision to reduce the number of variables in the most expensive quarter of the year.
What the freeze needs in the contract
For the calendar to hold in December it belongs in the maintenance contract, not in an email. Four points are enough: the period of the freeze with its start and end, the classification of change classes with their freeze dates, the exception path with a named decision-maker and an obligation to record, and the on-call plan with its windows and alert types. How these points are usually worded and tied to response times is shown in the overview of the SLA maintenance contract.
A fifth point is often forgotten and is the only one that counts retrospectively: the record of the maintenance state before the freeze. It captures which versions were running on the cut-off date, which backups were last rehearsed and with what result, and which deadlines were deliberately extended beyond the freeze. In a dispute this record is the basis for showing that a change did not take place in December - in the normal case it is the template for next year's calendar.
Change calendar and on-call cover as one process
Sources and studies
Related Articles
Shop Server Logs: How Long IP Addresses May Be Stored
How long may IP addresses stay in server logs? What the GDPR requires, what the five weeks from the BfDI mean, and how rotation, truncation and backups fit in.
WordPress security updates: what old branches still get
WordPress 7.1.2 closed a critical flaw and the fix was backported to 4.7 as a courtesy. What older branches receive, what they do not, and when to move up.
Discount codes in Black Week: detecting abuse early
Discount codes in Black Week: code length, a rate limit at the coupon field, alerts on failed attempts and new-customer discounts that resist multiple accounts.