A consent dialogue is not a design element. It is the visible tip of a legal assessment. Anyone running a business website in Germany has to satisfy two sets of rules at the same time: the TDDDG governs access to the user device, while the GDPR governs what happens to personal data afterwards. This guide separates the two, explains what remains lawful without consent, describes how a consent dialogue must be built to survive a regulatory review, and lists the design mistakes that supervisory authorities keep flagging.
Why consent is not a design detail
Most consent dialogues on the web were added on top of a website that was already finished. That is exactly where the familiar problems come from: scripts start loading while the dialogue is still rendering, purposes are described so vaguely that nobody can tell what they are agreeing to, and rejecting takes three clicks while accepting takes one. In legal terms, however, the dialogue is not an accessory. It is the evidence that a given processing operation has a legal basis at all. Without that evidence, the basis is missing retroactively for the entire period in which data was flowing. That is why the consent question belongs at the start of a website project rather than at the end. If you create a website with AI, map the data flows from the first sketch, because removing them later takes considerable effort.
The European coordination process shows how seriously regulators treat the topic. Following 422 complaints (European Data Protection Board, Cookie Banner Taskforce report) about consent dialogues filed with several European supervisory authorities, the European Data Protection Board set up a dedicated taskforce and published a shared assessment framework in 2023. For breaches of the processing principles, GDPR fines can reach 20 million euros (Article 83(5) GDPR) or four percent of worldwide annual turnover, whichever is higher. In day-to-day practice, complaints from visitors and unfair-competition letters are the more common risk, but the direction is clear: consent is being examined, not assumed.
TDDDG and GDPR: two checks, one website
The two frameworks apply in sequence rather than as alternatives. First, Section 25 TDDDG asks whether information is stored on the user device or read from it. That provision has applied in Germany since 2021 (Federal Law Gazette, TTDSG of 23 June 2021, in force since 1 December 2021); the Digital Services Act implementation renamed the statute TDDDG in May 2024, leaving the substance of Section 25 untouched. The rule is technology neutral: cookies, local storage, session storage, values held in the browser cache and the reading of device characteristics all fall under it, regardless of whether personal data is involved. Only afterwards does the GDPR ask which legal basis covers the subsequent processing and what information the individual has to receive about it.
- Step 1 (Section 25 TDDDG): does anything get written to or read from the device? If so, consent is required unless one of the two statutory exemptions applies.
- Step 2 (Article 6 GDPR): on what basis is the data processed afterwards? Where TDDDG consent was required, the basis is usually consent under Article 6(1)(a) as well.
- Step 3 (Article 13 GDPR): what has to be disclosed? Purpose, recipients, retention period, third-country transfers and the right to withdraw belong in the privacy policy, not only in the dialogue.
- Step 4 (Article 5 GDPR): can the purpose be achieved without touching the device at all? Data minimisation is a principle in its own right, not an optional extra.
Do not swap the order
What stays lawful without consent
Section 25(2) TDDDG contains two exemptions: access that serves only the transmission of a message over a telecommunications network, and access that is strictly necessary to provide a service the user has expressly requested. Strictly necessary has to be read narrowly. It covers what does not work technically without the stored value, not what makes operations more convenient or analytics more rewarding. The German Data Protection Conference set out this line in its guidance for telemedia providers (Datenschutzkonferenz), making clear that the provider's own view of necessity is not the deciding factor. The following cases are typically treated as exempt.
Session cookie
Keeps the signed-in state or the shopping basket alive during one visit. Without that value the requested service simply does not work.
Security token
Protects forms against forged requests. The value is tied to the session and is not combined into a longer-lived profile.
User's own choice
Language, contrast mode or font size the person selected themselves so the service is delivered the way they asked for it.
Consent record
The decision taken in the dialogue has to be stored somewhere, otherwise the same question would appear on every single page view.
Load balancing
A technical value that keeps a request on the same server, as long as it does not allow recognition beyond the current session.
Plain server logs
Access logs on the web server do not touch the device at all; here only the GDPR balancing test and the retention period matter.
What is clearly not covered: audience measurement, marketing pixels, embedded videos, remotely loaded web fonts, map services, chat windows from outside providers and split testing of page variants. German supervisory practice also treats purely statistical measurement as not strictly necessary, even when no names are involved, because writing the value onto the device already triggers the consent requirement. Anyone who wants reach figures without a dialogue therefore needs a method that avoids reading from and writing to the browser, for example server-side evaluation without any recognition token. How strongly such decisions shape structure and loading time is covered in the article on static delivery and PageSpeed 100, and the effect of a page without external embeds can be seen in the demo websites.
A consent dialogue that survives review
The requirements for valid consent sit in Article 4(11) and Article 7 GDPR: freely given, specific, informed and unambiguous. In case C-673/17 the Court of Justice of the European Union held in 2019 that a pre-ticked box does not meet those requirements, and the German Federal Court of Justice transferred the ruling into national law in 2020 in the follow-up case I ZR 7/16. The European Data Protection Board adds in its Guidelines 05/2020 on consent that scrolling on or simply continuing to browse is not a clear affirmative action. What follows is a short review list that a team can work through in a few hours.
- Reject and accept sit side by side on the first layer: same size, comparable visual weight, the same number of clicks.
- No optional toggle is pre-selected; only technically necessary processing is fixed as active and labelled as such.
- Purposes can be chosen individually and are described in plain language, not bundled as vague labels such as convenience and marketing.
- Every embedded service is listed with provider, purpose, retention period and recipient country, reachable through a second layer.
- The dialogue does not block content that has to remain accessible without consent, and it can be operated entirely by keyboard.
- Scripts that require consent start only after approval instead of loading first and then being declared inactive.
- Withdrawal is reachable through a permanently visible entry point, usually in the footer of every single page.
| Design question | Defensible implementation | Common risk |
|---|---|---|
| First layer | Reject and accept equally prominent | Reject hidden as a small text link |
| Pre-selection | All optional purposes switched off | Toggles or boxes already ticked |
| Purpose wording | One plain sentence per purpose | Umbrella phrases such as improving your experience |
| Load timing | Script starts after approval | Script loads first, the question follows later |
| Withdrawal | Fixed entry point in the footer | Only reachable through browser settings |
| Third country | Transfer named and justified | No mention of recipients outside the EU |
| Operability | Focus order and contrast verified | Dialogue usable with a mouse only |
Frequently criticised patterns
Withdrawal, logging and accountability
Article 7(1) GDPR requires the controller to be able to demonstrate consent. That is an active demonstration rather than a claim: every consent record needs the timestamp, the purposes actually selected, the version of the dialogue and the revision of the information texts that applied at the moment of the decision. Once the list of embedded services changes, the earlier consent is worthless for the new service, so the dialogue has to be shown again. Data minimisation applies to the log itself as well: a pseudonymous record without names and without a full IP address is usually sufficient, because it evidences the decision without building an additional profile.
Under Article 7(3) GDPR, withdrawing consent must be as easy as giving it. In practice that means: if approval took one click, withdrawal must not require three nested menus. A permanent footer entry that reopens the same dialogue and shows the stored selection has proven itself in practice. Just as important, a withdrawal has to stop the affected scripts and remove the values that were set. A dialogue that stores the choice while the loaded services keep running only creates the appearance of control, and it fails a review immediately. How this differs from classic CMS installations with retrofitted extensions is explained in the overview of our approach and services.
{
"consent_id": "b7f4c1e0-9a25-4d31-8f0a-6c2e51d7ab93",
"given_at": "2026-07-21T09:14:22Z",
"dialogue_version": "3",
"policy_revision": "2026-05-01",
"purposes": {
"necessary": true,
"audience_measurement": false,
"external_media": false
},
"action_taken": "explicit choice on the first layer",
"withdrawal_via": "/en/privacy/#consent",
"valid_until": "2027-07-21T09:14:22Z"
}Reduce data flows instead of polishing dialogues
The strongest lever is not the design of the dialogue but the number of services behind it. More than nine out of ten pages embed at least one resource from an outside server (Web Almanac, HTTP Archive, Third Parties chapter), and every one of those resources creates a connection complete with IP address, browser signature and timestamp. Serving fonts, icons, maps and videos from your own domain instead cuts the number of consent-relevant cases substantially; often only a handful of purposes remain, and in simple setups none at all. A website without consent-relevant services needs no approval dialogue, only a complete and accurate privacy policy.
Legal texts, hosting and processor agreements
The dialogue is only one item on the list. Alongside it sit the information duties of Article 13 GDPR, the record of processing activities under Article 30, processor agreements under Article 28 with every service provider involved in hosting, mail delivery and form handling, plus the provider identification that has been governed by Section 5 of the German Digital Services Act since May 2024. Processing outside the European Union falls under Articles 44 and following of the GDPR; after the Court of Justice of the European Union invalidated the earlier transfer arrangement in case C-311/18 in 2020, transatlantic data flows now rest on the adequacy decision adopted by the European Commission in 2023. Keeping processing and storage inside the EU avoids most of that debate. XICflow is operated by XICTRON in Söhlde, Germany; the details are set out on the company profile page.
- A privacy policy per domain and per language, aligned with the services that are actually embedded.
- A legal notice under Section 5 of the German Digital Services Act with full contact details and, where applicable, register data and the competent authority.
- A record of processing activities covering contact forms, newsletters, job applications and server logs.
- Processor agreements with every service provider involved, including sub-processors and their locations.
- A deletion policy with clear retention periods for form enquiries, log files and consent records.
Compliance rarely comes from adding one more dialogue. It comes from an architecture in which most of the questions that dialogue would ask do not arise in the first place.
Consent by default: how XICflow handles it
XICflow is built so that data protection requirements do not have to be retrofitted. Pages are generated from a configuration, delivered as static files and served without dependencies on outside servers; fonts, icons and images live on the same domain as the page itself. The consent dialogue is part of the system, with equally weighted buttons, individually selectable purposes and a permanent withdrawal entry point in the footer. Legal texts are generated per domain and per language and stay tied to the features that are actually switched on. The step-by-step project overview explains how that works in a real project, and the service overview sets out what is included.
Consent by default
Equally weighted rejection, individually selectable purposes and a permanent withdrawal link are part of every page instead of separate rework.
Delivery inside the EU
Hosting, domain and SSL run from locations inside the European Union, backed by a processor agreement as the legal basis.
Legal texts per domain
Legal notice and privacy policy are generated per domain and language and follow the features that are genuinely in use.
Where to start on your own website
Taking stock does not have to take weeks. In our experience a structured pass surfaces most of the open points within a few hours, because the critical cases cluster into a small number of patterns. Start with the network panel in the browser and assign a legal basis to every outgoing connection; then review the dialogue and finally the texts. Comparable review patterns show up in accessibility under the European Accessibility Act and in multilingual sites with hreflang, which is why a combined review pass usually pays off. What is included at which level is set out on the pricing page.
- Open the network panel in the browser and note every outgoing connection, once before and once after approval.
- Assign each entry to a category: strictly necessary, consent-relevant, or simply dispensable.
- Remove what is dispensable, serve replaceable assets from your own domain, and document the rest in the dialogue.
- Check the dialogue for equally weighted options, absent pre-selection, plain-language purposes and keyboard operation.
- Bring the privacy policy, the legal notice and the record of processing activities in line with what remains.
- Test the withdrawal path: change the selection, reload the page, and verify stored values and outgoing connections again.