The site of the Luxembourg parliament — 48 requests, five hosts. The only external recipient is the TWIPLA analytics platform, but it operates in full: a persistent visitor identifier, a polls service, and a persistent WebSocket connection opened at the 2711th millisecond. No consent mechanism was found on the site. The data protection notice describes collection only via forms and petitions, and says nothing about processing during ordinary browsing — not a word about cookies, not a word about analytics.
Request timeline
Declared versus actual
Transfer timings
main.js with a site identifier.
Monitoring settings for the site.
POST worker-log, response 201.
ssr-worker.js.
Page address and a persistent visitor identifier in plain text in the request address.
WebSocket connection, code 101.
Detected trackers
- TWIPLA / Visitor Analytics (app-worker.visitor-analytics.io, visits.visitor-analytics.io, lb-api.visitor-analytics.io) — nine requests, including a persistent WebSocket connection
Indicators of GDPR non-compliance
- ePrivacy — Loi du 30 mai 2005, Art. 4 (in conjunction with GDPR Art. 6(1)(a))No consent-management mechanism was found on the site: across all 48 requests, there is not a single request to a consent platform and not a single script bearing the hallmarks of a banner. The TWIPLA analytics platform, meanwhile, runs in full: a script at +1726 ms, a request for site settings at +1996 ms, a log transmission at +2363 ms, a second script at +2523 ms, a request to the polls service at +2527 ms, and finally, establishment of a persistent WebSocket connection at +2711 ms with a 101 status code — meaning the channel is opened and held open.
- GDPR Art. 13(1)(e) — disclosure of recipientsThe data protection notice names no web-data recipients at all. Its list of recipients consists of report-mailing contractors, other Luxembourg public administration bodies, and the State Information Technology Centre — the latter only in connection with checking a national-register entry when a public petition is filed. The analytics platform, to which every homepage visitor's data goes out in the scan, is absent from the document.
- GDPR Art. 5(1)(a) and Art. 13(1)(c) — transparency and purposes of processingThe notice describes personal-data collection with an exhaustive list: via the contact form, when subscribing to Chamber materials and transcripts, when writing by email, and when filing or signing petitions. The document says nothing about processing that occurs simply by browsing the site: the words cookie, analytics, and visitor statistics do not appear in it once. Meanwhile, on opening the homepage, a persistent visitor identifier is transmitted to an external platform along with the address of the page being viewed.
Context
chd.lu is the website of the Chamber of Deputies of Luxembourg, the unicameral parliament of the Grand Duchy. It publishes parliamentary files, deputies’ questions, plenary-session transcripts, petition materials, and educational sections. The data controller is the Chamber itself, Rue du Marché-aux-Herbes 23, Luxembourg; the Data Protection Officer role is performed by an external contractor from Deloitte Tax & Consulting. The platform is Drupal with a custom theme.
Scan: 48 requests, five hosts. Thirty-nine requests to the site’s own domains, nine to the analytics platform. Capture duration: 2.7 seconds; full page load completed at 2003 ms. Captured on June 15, 2026, on the French-language homepage.
A single document — a personal data protection notice — describes the processing.
Who receives data directly
TWIPLA (Visitor Analytics).
Declared versus actual
The discrepancy here isn’t in the details — it’s in the very subject matter of the description.
The document doesn’t acknowledge that the site has visitors. The notice is built around situations where a person actively contacts the parliament: fills out a contact form, subscribes to parliamentary files or transcripts, writes an email, files or signs a petition. For each situation, the categories of data are honestly listed — down to place and date of birth for a public petition — with legal bases, retention periods, and recipients named, including the State Information Technology Centre for cross-checking against the national register.
The document says nothing about processing that occurs simply by opening the page. The word cookie doesn’t appear in it once. Nor do the words “analytics,” “visitor statistics,” “audience measurement.” The section on what data is collected opens with the contact form and subscriptions, exhaustively delineating collection and leaving no room for observation of the reader.
Yet observation does occur, and in a fully deployed form. From the 1726th millisecond, the TWIPLA platform deploys, also known under its former name Visitor Analytics. The sequence is: a script carrying a site identifier, a request for the site’s monitoring settings, a log transmission via POST with a 201 response — meaning a record on the platform’s side was created — a second script, a request to the poll-targeting service, and establishment of a persistent connection.
Two elements deserve particular attention.
The first is the request to the polls service at +2527 ms. The address of this request carries, in plain text, as ordinary parameters, the address of the page being viewed and a persistent visitor identifier. The identifier is a fixed-length base64-encoded string, used to recognize the same visitor on subsequent visits. It is not reproduced in full in this analysis.
The second is the connection at +2711 ms. The request goes out over the WebSocket protocol and receives a code of 101, meaning a protocol switch: the channel is established and remains open as long as the page is open. This is a fundamentally different mode from a one-off event transmission: over such a channel, data can be transmitted continuously, in both directions, without separate visible requests.
The platform’s second script is named ssr-worker.js. TWIPLA’s feature set includes session recording, and the abbreviation in the file name is consistent with that purpose; however, this cannot be stated as fact from a browser-based scan, where response bodies are not preserved — only the file name and the presence of a persistent channel are recorded.
There is no consent mechanism. Across all 48 requests, there is not a single request to a consent-management platform and not a single script bearing the corresponding hallmarks. Names of known platforms and general patterns in addresses were checked — zero matches.
What is worth noting in the site’s favor. There is only one external recipient in total. Fonts, images, theme scripts, and internal requests go exclusively to the site’s own domains — no mapping libraries, no third-party icon sets, no embedded players. A set of protective headers is present: strict transport security, a restriction on being embedded in a frame from an external source, a restriction on content-type sniffing, a restrictive referrer policy, and a separate header disabling the browser’s cohort-based advertising technology. The Content-Security-Policy header, however, is not set.
Separately, regarding third countries. The notice explicitly states that no transfers outside the European Union occur within the listed processing activities. TWIPLA is a Berlin-based company, and by its own statements, processing takes place within the Union; this is not verifiable by a browser-based scan. This observation is not recorded as a cross-border-transfer violation — the caveat “within the listed processing activities” simply does not apply to web analytics, since it is not part of that list.
Consent: what is proven and what is not
Proven: there is no consent mechanism in the capture. Not a single request to a consent-management platform, not a single script bearing the corresponding hallmarks, across all 48 requests.
Proven: analytics ran in full and transmitted data. The log transmission received a 201 response, meaning a record was created on the platform’s side. The request to the polls service carries the visitor identifier and page address. A persistent connection was established with code 101.
Proven: loading does not depend on the user’s choice. The initiator of the platform’s script is recorded as the site’s own theme script, loaded from the page footer — meaning the call is built into the site’s code and executes as it runs. There is no condition tied to the user’s choice preceding it.
Not proven and not required: the absence of a text notice in the markup. Response bodies have been stripped from the published file, so the presence of an informational notice in the HTML cannot be checked from it. The conclusion is not built on this, but on the fact that analytics launches from the theme’s code and does not depend on any notice, and that no platform capable of managing it exists on the page.
Separately: the browser sent a DNT: 1 header during the capture. This had no effect on the composition or volume of the transmissions.
Limits of observation
The scan covers a single page — the French-language homepage — in a single state. The petitions sections, where the documents indicate name, date, and place of birth are collected, were not part of this scan, and this analysis makes no claims about them.
The observation records browser behavior, not the internal workings of the services: processing on the platform’s side, its contractual relationship with the parliament, the data it retains, and the geography of processing are not verified by a browser-based scan. Legal assessment falls to the competent authority — the Commission nationale pour la protection des données.
The file is published stripped of personal data: cookie headers, response bodies, the tab header, and the body of the transmitted log have been removed. The persistent visitor identifier is not reproduced in full in this analysis. The set of cookies on a device cannot be reconstructed from the published file, and no conclusion in this analysis relies on it: all statements rest on request addresses, their order, response codes, and recorded initiators.
Content transmitted over the persistent connection is not preserved in this kind of browser capture — only the fact of the channel’s establishment and the response code are recorded. The purpose of the ssr-worker.js script is inferred from its file name and the platform’s known capabilities; it cannot be verified from the scan.
Identification of the service relies on the visitor-analytics.io domains, the address pattern carrying a site identifier, and the response headers of the platform’s hosts.
Conclusion
The Luxembourg Chamber of Deputies’ data protection notice is written carefully and in detail — for those who write letters to the parliament, subscribe to transcripts, or file petitions. For those who simply open the site to read the news, there is not a single line: the word cookie does not appear once, analytics is not mentioned, and processing during browsing is not described as a phenomenon at all.
Meanwhile, an external analytics platform deploys on opening the homepage: it requests monitoring settings, transmits a log, carries a persistent visitor identifier along with the address of the page being viewed in the request address, and opens a persistent connection that stays held open for as long as the page remains open. No consent mechanism was found on the site — no banner, no platform, no stored choice.
Otherwise, the site is set up in a restrained manner: a single external recipient, its own fonts and images, a reasonable set of protective headers. This makes the gap between that restraint and the document’s complete silence about the one instance of monitoring that is nonetheless taking place all the more notable.
Remediation: introduce a consent mechanism that controls the loading of the analytics platform, and do not launch it from the theme’s code before the visitor’s choice; supplement the notice with a section on processing during site visits — naming the platform, the fields transmitted (including the visitor identifier), the purposes, the retention period, and the legal basis; describe the purpose of the persistent connection and the polls service.
How to verify: download the file and compute its checksum — sha256sum file.har (Linux, macOS) or certutil -hashfile file.har SHA256 (Windows); it must match the one shown. The conclusions apply to the scope of this measurement — see the limitations of the method.
06a00fceddcbe439097f2098bc5af64fdb52d611949b983be467a921f9555728Want a response from the company about this audit? → Open the tool
Fill in once — it will be inserted into every letter below:
All fields are required to print the document — this is a formal requirement of the letter itself (the particulars of an official submission), not data collection: nothing is sent or saved anywhere, it all stays in your browser and disappears when you close the page. See the methodology for details.
RIA DigiDoc — phone · Smart-ID / Mobile-ID
Send this letter directly to the company first — before contacting the regulator it has the right to respond (GDPR Art. 12(3) — 30 days).
Тема: Запрос доступа к персональным данным (ст. 15 GDPR) — chd.lu Кому: [укажите адрес компании — DPO / поддержка / юридический отдел] От: [Ваше имя], [контактный email] Прошу предоставить доступ к моим персональным данным, обрабатываемым в связи с использованием сайта chd.lu. 1. Категории данных и цели обработки (ст. 15(1)(a)-(c)) На основании независимого технического анализа сайта прошу подтвердить и подробно раскрыть следующие категории обработки: 1) Механизма управления согласием на сайте не обнаружено: за все 48 запросов не встречается ни одного обращения к платформе согласия и ни одного сценария с признаками баннера. Аналитическая платформа TWIPLA при этом отрабатывает полностью: сценарий на +1726 мс, запрос настроек площадки на +1996 мс, отправка журнала на +2363 мс, второй сценарий на +2523 мс, обращение к службе опросов на +2527 мс и, наконец, установление постоянного соединения по протоколу WebSocket на +2711 мс с кодом 101 — то есть канал открыт и держится. 2) Уведомление о защите данных не называет ни одного получателя веб-данных. Перечень адресатов в нём состоит из подрядчиков по рассылке отчётов, других органов публичной администрации Люксембурга и Центра информационных технологий государства — последний только в связи с проверкой записи в национальном реестре при подаче публичной петиции. Аналитическая платформа, которой в замере уходят данные каждого посетителя главной страницы, в документе отсутствует. 3) Уведомление описывает сбор персональных данных исчерпывающим перечнем: через форму обратной связи, при оформлении подписки на материалы палаты и на стенограммы, при обращении по электронной почте, а также при подаче и подписании петиций. Об обработке, происходящей при простом просмотре сайта, документ не сообщает ничего: слова cookie, аналитика, статистика посещений в нём не встречаются ни разу. Между тем при открытии главной страницы во внешнюю платформу передаётся устойчивый идентификатор посетителя вместе с адресом просматриваемой страницы. 2. Получатели, сроки хранения и передача за пределы ЕЭЗ (ст. 15(1)(c)-(d), 46) Прошу также указать полный список третьих лиц-получателей, применимые сроки хранения по каждой категории и правовые основания передачи данных за пределы ЕЭЗ, если таковая происходит. Полный технический разбор с доказательствами (сохранённый сетевой журнал, контрольная сумма SHA-256) опубликован по адресу: https://gdpru.eu/en/audits/lu-chd-lu/ 3. Автоматизированная обработка и профилирование (ст. 15(1)(h)) Прошу сообщить, применяется ли в отношении меня автоматизированное принятие решений или профилирование, и если да — раскрыть логику такой обработки. С уважением, [Ваше имя] [контактный email] [Страна] [Дата]
Subject: Data access request (GDPR Art. 15) — chd.lu To: [insert the company's address — DPO / support / legal department] From: [Your name], [contact email] I request access to my personal data processed in connection with the website chd.lu. 1. Categories of data and purposes of processing (Art. 15(1)(a)-(c)) Based on an independent technical analysis of the site, I request confirmation and detailed disclosure of the following categories of processing: 1) No consent-management mechanism was found on the site: across all 48 requests, there is not a single request to a consent platform and not a single script bearing the hallmarks of a banner. The TWIPLA analytics platform, meanwhile, runs in full: a script at +1726 ms, a request for site settings at +1996 ms, a log transmission at +2363 ms, a second script at +2523 ms, a request to the polls service at +2527 ms, and finally, establishment of a persistent WebSocket connection at +2711 ms with a 101 status code — meaning the channel is opened and held open. 2) The data protection notice names no web-data recipients at all. Its list of recipients consists of report-mailing contractors, other Luxembourg public administration bodies, and the State Information Technology Centre — the latter only in connection with checking a national-register entry when a public petition is filed. The analytics platform, to which every homepage visitor's data goes out in the scan, is absent from the document. 3) The notice describes personal-data collection with an exhaustive list: via the contact form, when subscribing to Chamber materials and transcripts, when writing by email, and when filing or signing petitions. The document says nothing about processing that occurs simply by browsing the site: the words cookie, analytics, and visitor statistics do not appear in it once. Meanwhile, on opening the homepage, a persistent visitor identifier is transmitted to an external platform along with the address of the page being viewed. 2. Recipients, retention periods, and transfers outside the EEA (Art. 15(1)(c)-(d), 46) I also request the full list of third-party recipients, the applicable retention period for each category, and the legal basis for any transfer of data outside the EEA. The full technical audit with evidence (saved network log, SHA-256 checksum) is published at: https://gdpru.eu/en/audits/lu-chd-lu/ 3. Automated processing and profiling (Art. 15(1)(h)) Please state whether I am subject to automated decision-making or profiling, and if so, disclose the logic involved. Sincerely, [Your name] [contact email] [Country] [Date]
RIA DigiDoc — phone · Smart-ID / Mobile-ID
Where to file: Commission nationale pour la protection des données (CNPD) — cnpd.lu
The regulator reviews complaints in its national language. There is an officially translated template from the European Data Protection Board (EDPB) — you can use it instead of or alongside this letter: Official EDPB complaint form (PDF, your language)
Тема: Жалоба на обработку персональных данных — chd.lu 1. Предмет жалобы Я подаю жалобу в отношении обработки моих персональных данных сайтом chd.lu. 2. Обстоятельства Я посетил сайт chd.lu и обнаружил признаки несоответствия обработки моих персональных данных требованиям GDPR. Технический разбор, опубликованный на gdpru.eu 15.06.2026 (открытая методология, воспроизводимые измерения), документирует следующие признаки: 1) Механизма управления согласием на сайте не обнаружено: за все 48 запросов не встречается ни одного обращения к платформе согласия и ни одного сценария с признаками баннера. Аналитическая платформа TWIPLA при этом отрабатывает полностью: сценарий на +1726 мс, запрос настроек площадки на +1996 мс, отправка журнала на +2363 мс, второй сценарий на +2523 мс, обращение к службе опросов на +2527 мс и, наконец, установление постоянного соединения по протоколу WebSocket на +2711 мс с кодом 101 — то есть канал открыт и держится. 2) Уведомление о защите данных не называет ни одного получателя веб-данных. Перечень адресатов в нём состоит из подрядчиков по рассылке отчётов, других органов публичной администрации Люксембурга и Центра информационных технологий государства — последний только в связи с проверкой записи в национальном реестре при подаче публичной петиции. Аналитическая платформа, которой в замере уходят данные каждого посетителя главной страницы, в документе отсутствует. 3) Уведомление описывает сбор персональных данных исчерпывающим перечнем: через форму обратной связи, при оформлении подписки на материалы палаты и на стенограммы, при обращении по электронной почте, а также при подаче и подписании петиций. Об обработке, происходящей при простом просмотре сайта, документ не сообщает ничего: слова cookie, аналитика, статистика посещений в нём не встречаются ни разу. Между тем при открытии главной страницы во внешнюю платформу передаётся устойчивый идентификатор посетителя вместе с адресом просматриваемой страницы. Полная техническая документация опубликована по адресу: https://gdpru.eu/en/audits/lu-chd-lu/ 3. Положения GDPR, соблюдение которых прошу проверить ePrivacy — Loi du 30 mai 2005, ст. 4 (в связке с GDPR Art. 6(1)(a)); GDPR Art. 13(1)(e) — раскрытие получателей; GDPR Art. 5(1)(a) и Art. 13(1)(c) — прозрачность и цели обработки 4. Требование Прошу проверить изложенные обстоятельства и, если несоответствие подтвердится, принять меры, предусмотренные статьёй 58(2) GDPR. 5. Приложения Полная доказательная база — HAR-файл, контрольная сумма SHA-256 и цитата из политики конфиденциальности сайта, документирующая указанное противоречие — опубликована и проверяема по ссылке в пункте 2 выше. С уважением, [Ваше имя] [контактный email] [Страна] [Дата]
Subject: Complaint regarding personal data processing — chd.lu 1. Subject of the complaint I am filing a complaint regarding the processing of my personal data by the website chd.lu. 2. Circumstances I visited the website chd.lu and found indications that the processing of my personal data does not comply with the GDPR. The technical analysis published on gdpru.eu on 15 June 2026 (open methodology, reproducible measurements) documents the following indications: 1) No consent-management mechanism was found on the site: across all 48 requests, there is not a single request to a consent platform and not a single script bearing the hallmarks of a banner. The TWIPLA analytics platform, meanwhile, runs in full: a script at +1726 ms, a request for site settings at +1996 ms, a log transmission at +2363 ms, a second script at +2523 ms, a request to the polls service at +2527 ms, and finally, establishment of a persistent WebSocket connection at +2711 ms with a 101 status code — meaning the channel is opened and held open. 2) The data protection notice names no web-data recipients at all. Its list of recipients consists of report-mailing contractors, other Luxembourg public administration bodies, and the State Information Technology Centre — the latter only in connection with checking a national-register entry when a public petition is filed. The analytics platform, to which every homepage visitor's data goes out in the scan, is absent from the document. 3) The notice describes personal-data collection with an exhaustive list: via the contact form, when subscribing to Chamber materials and transcripts, when writing by email, and when filing or signing petitions. The document says nothing about processing that occurs simply by browsing the site: the words cookie, analytics, and visitor statistics do not appear in it once. Meanwhile, on opening the homepage, a persistent visitor identifier is transmitted to an external platform along with the address of the page being viewed. Full technical documentation is published at: https://gdpru.eu/en/audits/lu-chd-lu/ 3. GDPR provisions I ask you to examine ePrivacy — Loi du 30 mai 2005, Art. 4 (in conjunction with GDPR Art. 6(1)(a)); GDPR Art. 13(1)(e) — disclosure of recipients; GDPR Art. 5(1)(a) and Art. 13(1)(c) — transparency and purposes of processing 4. Request I request that you examine the circumstances described and, if non-compliance is confirmed, apply the measures provided for in Article 58(2) GDPR. 5. Attachments The full evidence base — the HAR file, its SHA-256 checksum and the quotation from the site's privacy policy documenting the stated contradiction — is published and verifiable at the link in point 2 above. Sincerely, [Your name] [contact email] [Country] [Date]