{"id":5299,"date":"2026-11-13T13:35:42","date_gmt":"2026-11-13T13:35:42","guid":{"rendered":"https:\/\/sawaryn.com\/?p=5299"},"modified":"2026-11-13T13:41:14","modified_gmt":"2026-11-13T13:41:14","slug":"post-implementation-website-privacy-audit","status":"publish","type":"post","link":"https:\/\/sawaryn.com\/en\/publikacje\/post-implementation-website-privacy-audit\/","title":{"rendered":"Post-implementation website audit. Check whether your privacy policy matches what actually runs on the website"},"content":{"rendered":"<p>You have published a new privacy policy, the cookie banner works, and the notices have been updated. GDPR compliance is now taken care of \u2014 or at least that is what the post-implementation report suggests. But then someone opens your online store in a clean browser session and discovers that one tool described in the policy does not exist on the website, while three others are operating even though they are not mentioned in either the policy or the record of processing activities.<\/p>\n<p>This is not a hypothetical situation. It is a pattern that regularly emerges several weeks after a GDPR implementation has been completed. The management board believes that the documentation is complete. Meanwhile, the website takes on a life of its own \u2014 marketing installs new plugins, the provider updates integrations, and no one informs the person responsible for data protection.<\/p>\n<p>This article explains what a <strong>post-implementation website audit<\/strong> is, why a <a href=\"https:\/\/sawaryn.com\/en\/publikacje\/gdpr-privacy-cookie-policy-requirements\/\">privacy policy<\/a> alone is not enough to demonstrate GDPR compliance, and how to check in a few steps whether the declarations in your documents match what actually runs on your website. You will also learn about the risks arising from discrepancies between your documentation and the actual state of affairs \u2014 and what to do about them before the President of the Polish Data Protection Authority does it for you.<\/p>\n<h2>Key concepts you need to know<\/h2>\n<p>Before we move on to the assessment method, it is worth clarifying a few terms. This is not about theory \u2014 it is about making sure you know exactly what you are checking and why.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Concept<\/th>\n<th style=\"text-align: left;\">What it means in the context of your website<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Post-implementation audit<\/strong><\/td>\n<td style=\"text-align: left;\">A technical and documentation review conducted several weeks after GDPR recommendations have been implemented \u2014 it checks whether the changes are actually working and whether any new discrepancies have emerged<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"https:\/\/sawaryn.com\/en\/publikacje\/gdpr-record-processing-activities\/\">Record of processing activities<\/a><\/strong> (Article 30 GDPR)<\/td>\n<td style=\"text-align: left;\">A document in which the controller describes every operation involving personal data: its purpose, legal basis, categories of data, and recipients. The obligation applies to every controller, regardless of company size<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Consent mode<\/strong><\/td>\n<td style=\"text-align: left;\">The technical configuration of analytics and advertising tools that determines whether scripts run before the user gives consent or only after consent has been given<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Consent management mechanism (<a href=\"https:\/\/sawaryn.com\/publikacje\/czy-twoj-cookie-banner-jest-zgodny-z-prawem\/\">cookie banner<\/a>)<\/strong><\/td>\n<td style=\"text-align: left;\">The interface through which users give or refuse consent to cookies \u2014 it must comply with the requirements of Article 7(3) GDPR and Article 399 of the Electronic Communications Law<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Information obligation<\/strong> (Article 13 GDPR)<\/td>\n<td style=\"text-align: left;\">The information that the controller must provide to a person when collecting their data: the controller\u2019s identity, the purpose of processing, the legal basis, the retention period, and the person\u2019s rights<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"https:\/\/sawaryn.com\/en\/publikacje\/safely-entrust-personal-data-processor\/\">Data processing agreement<\/a><\/strong> (Article 28 GDPR)<\/td>\n<td style=\"text-align: left;\">An agreement between the controller and a provider (e.g. the website provider) that processes data on the controller\u2019s behalf \u2014 it governs the scope, purpose, and conditions of processing<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Why implementing GDPR does not put the matter to rest<\/h2>\n<p>Implementing a privacy policy, launching a cookie banner, and updating notices is the starting point \u2014 not the end point. The accountability principle under Article 5(2) GDPR requires you to be able to demonstrate compliance at all times, not only on the day the documents are published.<\/p>\n<p>The problem is that a website changes faster than its documentation. Marketing adds a tracking pixel. Accounting integrates a new invoicing tool. The website provider updates a review collection plugin that enables automatic purchase review invitations by default. Each of these changes is a new processing activity \u2014 with its own purpose, legal basis, and potentially an obligation to obtain consent for electronic communications (Article 398 of the Electronic Communications Law).<\/p>\n<h3>Discrepancies can go both ways<\/h3>\n<p>This is the most important observation from post-implementation reviews. Discrepancies between the documentation and reality are not one-directional:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Direction of the discrepancy<\/th>\n<th style=\"text-align: left;\">What it involves<\/th>\n<th style=\"text-align: left;\">Provisions breached<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">A tool described in the policy but not operating on the website<\/td>\n<td style=\"text-align: left;\">The company declares processing that it does not carry out \u2014 misleading users about the scope of operations performed on their data<\/td>\n<td style=\"text-align: left;\">Article 5(1)(a) GDPR (fairness), Article 12(1) GDPR (transparency)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">A tool operating on the website but not included in the policy or the record<\/td>\n<td style=\"text-align: left;\">Processing takes place without a documented legal basis \u2014 the controller is unable to demonstrate it<\/td>\n<td style=\"text-align: left;\">Article 6 GDPR (no legal basis), Article 13 GDPR (no information), Article 30 GDPR (no entry in the record), Article 24 GDPR (lack of accountability)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>An audit conducted solely \u201con paper&#8221; \u2014 that is, one limited to reading the policy \u2014 will not detect either type of discrepancy. To identify them, you need to open the website and compare what happens there with what the documentation says.<\/p>\n<h3>Three common sources of discrepancies<\/h3>\n<ol>\n<li><strong>Plugins with features enabled by default.<\/strong> A post-purchase review collection plugin may automatically send emails inviting customers to leave a review \u2014 and it may do so from the moment it is installed, before anyone consciously decides to activate the feature. This is a separate processing activity and, if invitations are sent by email, it is also subject to Article 398 of the Electronic Communications Law.<\/li>\n<li><strong>Integrations added by other departments.<\/strong> An accounting and invoicing integration, a new analytics tool, or a marketing pixel \u2014 each processes personal data and must be entered in the record of processing activities, described in the policy, and checked to determine whether a data processing agreement is in place with the provider.<\/li>\n<li><strong>The consent management provider omitted from the documentation.<\/strong> The paradox is that the very tool intended to ensure GDPR compliance is itself omitted from the record of processing activities and the privacy policy. The consent management provider is the one most often forgotten \u2014 because it is \u201cthe compliance tool&#8221;.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/sawaryn.com\/en\/contact\/\">Contact us<\/a> if you would like to check whether your website has any such discrepancies.<\/p>\n<h2>How to conduct a post-implementation website audit step by step<\/h2>\n<p>A post-implementation review does not require specialist software. It requires a method. Below is the recommended sequence of steps \u2014 from opening your browser to analysing the policy\u2019s content.<\/p>\n<h3>Step 1: use a clean session and observe what happens before consent<\/h3>\n<ol>\n<li>Open your browser in private mode or clear the website data (cookies, cache, and local data).<\/li>\n<li>Visit the website \u2014 <strong>do not click anything on the cookie banner<\/strong>.<\/li>\n<li>Open the developer tools (F12 in most browsers).<\/li>\n<li>Go to <strong>Application \u2192 Storage \u2192 Cookies<\/strong> and list all cookies stored before you interact with the banner.<\/li>\n<li>Go to the <strong>Network<\/strong> tab and check which network requests have been sent \u2014 look for analytics, advertising, and third-party domains.<\/li>\n<li>Classify every cookie and request: is it technical (essential for the website to function), or does it require consent?<\/li>\n<\/ol>\n<p>If you see analytics or advertising cookies, or requests to advertising providers\u2019 domains before giving consent, that is a warning sign. It does not automatically mean there has been a breach, but it requires clarification: what is the legal basis for storing the data, and has the user been informed about it?<\/p>\n<h3>Step 2: check the consent mode configuration<\/h3>\n<p>Check the values of the consent mode parameters in the website code:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: left;\">Correct default value (before consent)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>analytics_storage<\/code><\/td>\n<td style=\"text-align: left;\"><code>denied<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ad_storage<\/code><\/td>\n<td style=\"text-align: left;\"><code>denied<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ad_user_data<\/code><\/td>\n<td style=\"text-align: left;\"><code>denied<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>ad_personalization<\/code><\/td>\n<td style=\"text-align: left;\"><code>denied<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If any of these parameters has a default value of <code>granted<\/code>, analytics or advertising tools run before the user gives consent.<\/p>\n<h3>Step 3: assess the first layer of the banner<\/h3>\n<p>Open the cookie banner and check which options the user sees on the first screen:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Element<\/th>\n<th style=\"text-align: left;\">Correct state<\/th>\n<th style=\"text-align: left;\">Incorrect state<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">\u201cAllow all&#8221; button<\/td>\n<td style=\"text-align: left;\">Present<\/td>\n<td style=\"text-align: left;\">\u2014<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">\u201cReject all&#8221; button<\/td>\n<td style=\"text-align: left;\">Present and <strong>visually equivalent<\/strong> to \u201callow&#8221;<\/td>\n<td style=\"text-align: left;\">Missing or hidden in the second layer<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">\u201cCustomise&#8221; \/ \u201csettings&#8221; button<\/td>\n<td style=\"text-align: left;\">Optional<\/td>\n<td style=\"text-align: left;\">Does not by itself replace \u201creject&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A \u201ccustomise \/ allow all&#8221; layout without an equivalent reject button is a pattern identified as unlawful in EDPB Guidelines 03\/2022. Article 7(3) GDPR requires withdrawing consent to be as easy as giving it. The CJEU judgment in C-673\/17 <em>Planet49<\/em> confirmed that consent requires active, specific action, while the judgment in C-61\/19 <em>Orange Rom\u00e2nia<\/em> held that consent is not freely given when the user must actively object to processing (<a href=\"https:\/\/www.uodo.gov.pl\/pl\/p\/decyzje\" target=\"_blank\" rel=\"noopener\">Decisions of the President of the Polish Data Protection Authority \u2013 list<\/a>).<\/p>\n<p>This is a change the website provider can implement at the configuration level \u2014 it does not require a new project or an additional budget.<\/p>\n<h3>Step 4: cross-check the policy against the website<\/h3>\n<p>This is where you combine the technical findings with the documentation. Prepare two lists:<\/p>\n<ol>\n<li><strong>Tools described in the policy but not found on the website<\/strong> \u2014 each such tool represents a declaration of processing that the company does not carry out.<\/li>\n<li><strong>Tools found on the website but not included in the policy or the record of processing activities<\/strong> \u2014 each such tool represents processing without a documented legal basis.<\/li>\n<\/ol>\n<p>A systems register that includes only positive entries (\u201cwe have this, it works&#8221;) will not detect the first type of discrepancy. It is therefore worth deliberately adding negative entries marked \u201cnot found&#8221; \u2014 this allows the register to account for the documentation rather than merely list the current state.<\/p>\n<h3>Step 5: verify privacy notices<\/h3>\n<p>Go through all forms on the website (contact, newsletter, and registration forms) and check the notices displayed below them:<\/p>\n<ol>\n<li>Have the controller\u2019s details been completed, or is there still a placeholder such as \u201c(personal data controller\u2019s details&#8230;)&#8221;?<\/li>\n<li>Does the notice contain the complete set of information required under Article 13 GDPR: the controller\u2019s identity, the purpose of processing, the legal basis, the retention period, and the person\u2019s rights?<\/li>\n<li>Does the newsletter form separate the two layers of consent: consent to the electronic communication channel (Article 398 of the Electronic Communications Law) and the legal basis for processing personal data under the GDPR?<\/li>\n<\/ol>\n<p>An incomplete placeholder can survive several consecutive reviews \u2014 because no one reads a notice they inserted themselves.<\/p>\n<h3>Step 6: analyse the content of the privacy policy<\/h3>\n<p>Analyse the policy\u2019s content last \u2014 so that you compare it with the established facts, not the other way around. Check:<\/p>\n<ol>\n<li>Whether the policy is labelled \u201cdraft&#8221; \u2014 if so, it is binding on data subjects while describing itself as unfinished.<\/li>\n<li>Whether the publication date has been completed.<\/li>\n<li>Whether it refers to Article 173 of the Telecommunications Law (repealed) instead of Article 399 of the Electronic Communications Law \u2014 a reference to a repealed provision is an immediate sign that the document is outdated.<\/li>\n<li>Whether it refers to documents that no one has prepared: a Transfer Impact Assessment (TIA), a risk assessment, or a Data Protection Impact Assessment (DPIA). A TIA and a DPIA are two separate documents \u2014 a TIA examines the effectiveness of transfer safeguards in the context of the third country\u2019s laws, while a DPIA assesses the effects of processing under Article 35 GDPR. A policy that refers to both must have both in place.<\/li>\n<\/ol>\n<h2>The most common shortcomings identified in post-implementation reviews<\/h2>\n<p>Experience from reviewing <a href=\"https:\/\/sawaryn.com\/publikacje\/rodo-i-ochrona-danych-najczestsze-bledy-w-sklepach-internetowych\/\">e-commerce websites<\/a> reveals a recurring pattern. The table below groups shortcomings by priority \u2014 from those requiring immediate action to those that require the facts to be established.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">Priority<\/th>\n<th style=\"text-align: left;\">Shortcoming<\/th>\n<th style=\"text-align: left;\">Who fixes it<\/th>\n<th style=\"text-align: left;\">Effort required<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">Urgent<\/td>\n<td style=\"text-align: left;\">No equivalent reject button on the first layer of the banner<\/td>\n<td style=\"text-align: left;\">Website provider<\/td>\n<td style=\"text-align: left;\">Configuration change<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Urgent<\/td>\n<td style=\"text-align: left;\">Incomplete placeholder for the controller\u2019s details in the notice below a form<\/td>\n<td style=\"text-align: left;\">Website provider<\/td>\n<td style=\"text-align: left;\">Content completion<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Urgent<\/td>\n<td style=\"text-align: left;\">Policy labelled \u201cdraft&#8221; without a publication date<\/td>\n<td style=\"text-align: left;\">Website provider \/ company<\/td>\n<td style=\"text-align: left;\">Remove the label and add the date<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Urgent<\/td>\n<td style=\"text-align: left;\">Reference to Article 173 of the Telecommunications Law instead of Article 399 of the Electronic Communications Law<\/td>\n<td style=\"text-align: left;\">Legal adviser<\/td>\n<td style=\"text-align: left;\">Update the policy\u2019s content<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Urgent<\/td>\n<td style=\"text-align: left;\">The policy refers to a TIA, risk assessment, or DPIA that does not exist<\/td>\n<td style=\"text-align: left;\">Company + legal adviser<\/td>\n<td style=\"text-align: left;\">Prepare the documents or remove the references<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Medium<\/td>\n<td style=\"text-align: left;\">Tools are operating but not included in the policy or the record<\/td>\n<td style=\"text-align: left;\">Company + legal adviser<\/td>\n<td style=\"text-align: left;\">Add an entry to the record and update the policy<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">Medium<\/td>\n<td style=\"text-align: left;\">A tool is described in the policy but not found on the website<\/td>\n<td style=\"text-align: left;\">Company + legal adviser<\/td>\n<td style=\"text-align: left;\">Remove it from the policy or implement it<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">To be determined<\/td>\n<td style=\"text-align: left;\">Review plugin with automatic invitations \u2014 feature status unknown<\/td>\n<td style=\"text-align: left;\">Company (internal verification)<\/td>\n<td style=\"text-align: left;\">Check the configuration<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">To be determined<\/td>\n<td style=\"text-align: left;\">Encryption of data at rest, backup testing, access rights review<\/td>\n<td style=\"text-align: left;\">Company (IT)<\/td>\n<td style=\"text-align: left;\">Confirm implementation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Note the entries marked \u201cto be determined&#8221;. An external review cannot tell you anything about encryption of data at rest or backup testing \u2014 these elements require confirmation from the IT team. It is better to state this explicitly than to let anyone believe that the report covers everything.<\/p>\n<p>One conclusion recurs in every review: <strong>most urgent shortcomings can be fixed through simple changes by the website provider<\/strong>. They require no effort from the company other than issuing an instruction. A list of shortcomings does not necessarily mean a new project and a new budget.<\/p>\n<h2>The systems register \u2014 a tool that brings order to the entire process<\/h2>\n<p>The review itself is a one-off assessment. To ensure that the results are not lost and that the next review has a point of reference, you need a <a href=\"https:\/\/sawaryn.com\/en\/publikacje\/processor-record-processing-categories-gdpr\/\">register of systems<\/a> and tools operating on the website.<\/p>\n<p>The register should contain at least four columns:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Tool \/ component (provider, country of establishment)<\/th>\n<th style=\"text-align: left;\">Function on the website<\/th>\n<th style=\"text-align: left;\">Provider\u2019s legal role and categories of data<\/th>\n<th style=\"text-align: left;\">Status and comments<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Consent management mechanism (provider X, Germany)<\/td>\n<td style=\"text-align: left;\">Collecting and managing cookie consent<\/td>\n<td style=\"text-align: left;\">Processor; data: cookie identifiers, IP address, user choices<\/td>\n<td style=\"text-align: left;\">Compliant \u2014 requires a data processing agreement<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Analytics tool (provider Y, USA)<\/td>\n<td style=\"text-align: left;\">Website traffic analysis<\/td>\n<td style=\"text-align: left;\">Independent controller or joint controller; data: identifiers, activity data<\/td>\n<td style=\"text-align: left;\">Compliant \u2014 transfer based on Decision (EU) 2023\/1795, provided that the importer is certified<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Marketing pixel (provider Z, USA)<\/td>\n<td style=\"text-align: left;\">Remarketing and conversions<\/td>\n<td style=\"text-align: left;\">Independent controller; data: identifiers, activity data<\/td>\n<td style=\"text-align: left;\">Not found on the website \u2014 negative entry<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Accounting and invoicing integration (provider W, Poland)<\/td>\n<td style=\"text-align: left;\">Invoice generation, customer data synchronisation<\/td>\n<td style=\"text-align: left;\">Processor; data: first name, surname, address, tax identification number, transaction data<\/td>\n<td style=\"text-align: left;\">Operating but not included in the policy \u2014 requires an entry in the record of processing activities and an update to the policy<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Negative entries (a tool described in the policy but not found on the website) are a deliberate documentation decision. They allow the register to account for the documentation rather than merely list the current state. An item assessed as compliant should also include a maintenance recommendation \u2014 otherwise, after a year, no one will remember that it was checked and found to be satisfactory.<\/p>\n<h3>Data transfers outside the EEA<\/h3>\n<p>For every tool whose provider is established outside the European Economic Area, check the <a href=\"https:\/\/sawaryn.com\/publikacje\/transfer-danych-osobowych-poza-ue\/\">basis for the transfer<\/a>. As of the publication date of this article, Commission Implementing Decision (EU) 2023\/1795 establishing an adequate level of protection under the EU-US Data Privacy Framework remains formally in force (<a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/PL\/ALL\/?uri=CELEX:32023D1795\" target=\"_blank\" rel=\"noopener\">Decision (EU) 2023\/1795 \u2013 Polish text on EUR-Lex<\/a>). It covers only US organisations certified under the DPF. Proceedings challenging the decision are pending before the EU courts (<a href=\"https:\/\/eur-lex.europa.eu\/legal-content\/EN\/TXT\/HTML\/?uri=OJ:C_202506610\" target=\"_blank\" rel=\"noopener\">Proceedings document C_202506610<\/a>), but as of the publication date, no final judgment annulling it has been issued.<\/p>\n<p>Contingency plan: Standard Contractual Clauses (SCCs) under Article 46 GDPR, combined with an assessment of the laws and practices of the recipient country (Transfer Impact Assessment \u2014 TIA) and supplementary technical measures (encryption, pseudonymisation). The SCCs may not be modified, but they may be incorporated into a broader agreement containing additional clauses, provided that those clauses do not conflict with them.<\/p>\n<aside class=\"blog-article__inline-newsletter blog-article__inline-form flow\" aria-label=\"Article form\">\r\n                    <div class=\"blog-article__inline-newsletter-head flow\">\r\n                                    <h2>Not sure where to start?<\/h2>\r\n                                                    <p>Briefly describe your issue. We\u2019ll outline your options.<\/p>\r\n                            <\/div>\r\n                <div class=\"form form--cf7 blog-article__newsletter-form blog-article__inline-form-form\">\r\n            \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2571-o1\" lang=\"\" dir=\"ltr\" data-wpcf7-id=\"2571\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/posts\/5299#wpcf7-f2571-o1\" method=\"post\" class=\"wpcf7-form init wpcf7-acceptance-as-validation\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"2571\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.7\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2571-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"blog-article__inline-form-fields\">\n\t<p><label class=\"blog-article__inline-form-field\"><br \/>\n<span class=\"blog-article__inline-form-label\">First and last name<\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"article-form-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required blog-article__inline-form-input\" autocomplete=\"name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Jan Kowalski\" value=\"\" type=\"text\" name=\"article-form-name\" \/><\/span><br \/>\n<\/label>\n\t<\/p>\n\t<p><label class=\"blog-article__inline-form-field\"><br \/>\n<span class=\"blog-article__inline-form-label\">E-mail<\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"article-form-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email blog-article__inline-form-input\" autocomplete=\"email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"jankowalski@xyz.com\" value=\"\" type=\"email\" name=\"article-form-email\" \/><\/span><br \/>\n<\/label>\n\t<\/p>\n<\/div>\n<p><label class=\"blog-article__inline-form-field\"><br \/>\n<span class=\"blog-article__inline-form-label\">Message<\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"article-form-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required blog-article__inline-form-textarea\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Tell us briefly what you need...\" name=\"article-form-message\"><\/textarea><\/span><br \/>\n<\/label>\n<\/p>\n<div class=\"blog-article__newsletter-consent\">\n\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"article-form-privacy\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"article-form-privacy\" value=\"1\" class=\"blog-article__newsletter-checkbox\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Zgadzam si\u0119 na kontakt w sprawie przes\u0142anej wiadomo\u015bci i akceptuj\u0119 <a href=\"https:\/\/sawaryn.com\/app\/uploads\/2026\/11\/Sawaryn-i-Partnerzy-Privacy-Policy-v1.0-en-GB.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">polityk\u0119 prywatno\u015bci<\/a>.<\/span><\/label><\/span><\/span><\/span>\n\t<\/p>\n<\/div>\n<p class=\"blog-article__newsletter-submit-row\"><button type=\"submit\" class=\"button blog-article__newsletter-submit\">\r\n    <span class=\"button__label\">Submit<\/span>\r\n            <span class=\"button__icon\" aria-hidden=\"true\">\r\n                <span class=\"icon\" data-icon-size=\"sm\">\n        <img src=\"https:\/\/sawaryn.com\/app\/uploads\/2026\/05\/arrow-01.svg\" alt=\"\" class=\"icon__image\" loading=\"lazy\" decoding=\"async\" aria-hidden=\"true\" width=\"11\" height=\"13\">\n    <\/span>\n            <\/span>\r\n    <\/button>\n<\/p><div hidden aria-hidden=\"true\"><label>Leave this field blank<input type=\"text\" name=\"asl_website\" value=\"\" tabindex=\"-1\" autocomplete=\"off\"><\/label><\/div><input type=\"hidden\" name=\"asl_started_at\" value=\"1794692960.0bd4564a678b7c71071724dab728c6e4180a107be94bbbc5b077524da43038de\"><div id=\"sawaryn-turnstile-1\" class=\"cf-turnstile\" data-sitekey=\"0x4AAAAAAEM6UD_FpW1mXB2Y\" data-theme=\"light\" data-action=\"contact\" data-language=\"en\"><\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n        <\/div>\r\n    <\/aside>\n<h2>Your relationship with the website provider \u2014 what to include in the agreement<\/h2>\n<p>The website provider (hosting, maintenance, development) acts as a processor under Article 28 GDPR. It installs plugins, updates integrations, and configures the consent management mechanism. If it does so without your knowledge, you, as the controller, lose control over the processing.<\/p>\n<p>Article 28(3) GDPR gives you the necessary tools, but you must actively use them in the data processing agreement:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Right \/ obligation<\/th>\n<th style=\"text-align: left;\">Legal basis<\/th>\n<th style=\"text-align: left;\">What to include in the agreement<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Acting only on documented instructions<\/td>\n<td style=\"text-align: left;\">Article 28(3)(a) GDPR<\/td>\n<td style=\"text-align: left;\">A prohibition on installing tools, plugins, and integrations without notifying the controller in writing and obtaining approval<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><a href=\"https:\/\/sawaryn.com\/en\/publikacje\/how-to-audit-gdpr-data-processors\/\">Right to audits and inspections<\/a><\/td>\n<td style=\"text-align: left;\">Article 28(3)(h) GDPR<\/td>\n<td style=\"text-align: left;\">The right to conduct a review at least once per calendar year, subject to notification of its scope, timing, and authorised participants<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Engaging subprocessors with consent<\/td>\n<td style=\"text-align: left;\">Article 28(2) GDPR<\/td>\n<td style=\"text-align: left;\">The obligation to obtain prior written consent for each subprocessor<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Remedying shortcomings within a specified period<\/td>\n<td style=\"text-align: left;\">Article 5(2) GDPR (accountability)<\/td>\n<td style=\"text-align: left;\">A deadline for implementing changes after an audit (e.g. 5 working days for urgent shortcomings and 10 for the others)<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Assistance with compliance obligations<\/td>\n<td style=\"text-align: left;\">Article 28(3)(e)\u2013(f) GDPR<\/td>\n<td style=\"text-align: left;\">The obligation to assist with data subject rights requests and breach notifications<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A contractual penalty for failing to meet these obligations must be regulated separately \u2014 the GDPR does not impose one automatically.<\/p>\n<h2>How often to repeat the review<\/h2>\n<p>The GDPR does not specify a fixed review frequency. Article 24(1) requires measures to be implemented and reviewed and updated \u201cwhere necessary&#8221;. Article 32(1)(d) requires regular testing and assessment of the effectiveness of measures. Processors should be audited at least once a year (<a href=\"https:\/\/www.uodo.gov.pl\/file\/3714\" target=\"_blank\" rel=\"noopener\">Guidelines 05\/2020 on consent \u2013 Polish Data Protection Authority<\/a>).<\/p>\n<p>For a website, the following schedule works well:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Type of review<\/th>\n<th style=\"text-align: left;\">When<\/th>\n<th style=\"text-align: left;\">Scope<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Post-implementation<\/td>\n<td style=\"text-align: left;\">Several weeks after implementing the recommendations<\/td>\n<td style=\"text-align: left;\">Verification that the changes have been implemented correctly and that no new discrepancies have emerged<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Annual<\/td>\n<td style=\"text-align: left;\">Every 12 months<\/td>\n<td style=\"text-align: left;\">Full cross-check, update of the systems register, verification of provider agreements, review of transfers<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Ad hoc<\/td>\n<td style=\"text-align: left;\">After every change to the website (new plugin, integration, or change of provider)<\/td>\n<td style=\"text-align: left;\">Verification of the new element and update of the documentation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>A \u201cto be determined&#8221; status from a review should be temporary. Assign an owner to each such item (the person responsible for resolving it), a response deadline (based on the level of risk), and an escalation path if no response is received. No response does not mean acceptance of the risk \u2014 it means a lack of accountability.<\/p>\n<h2>We can help you with this<\/h2>\n<p>A post-implementation review does not have to be complicated \u2014 but it must be thorough. It requires combining a technical analysis of the website with an assessment of the documentation and knowledge of the current legal framework. This is exactly what we do as part of our annual data protection programme.<\/p>\n<p>Our support is available at three levels, tailored to your company\u2019s needs:<\/p>\n<ol>\n<li><strong>Operational minimum<\/strong> \u2014 a one-off website review with a list of urgent shortcomings, a policy\u2013website cross-check, and recommendations assigned to responsible parties and prioritised.<\/li>\n<li><strong>Solid foundation<\/strong> \u2014 a review plus a register of systems and tools, and updates to the privacy policy and privacy notices.<\/li>\n<li><strong>Comprehensive protection<\/strong> \u2014 an annual programme including monitoring of legal developments, registers of transfers and subprocessors, regular reviews, and an outsourced <a href=\"https:\/\/sawaryn.com\/en\/publikacje\/data-protection-officer-key-information\/\">Data Protection Officer<\/a> provided by our law firm.<\/li>\n<\/ol>\n<p>We work with e-commerce, SaaS, and IT companies that treat data protection as part of organisational management \u2014 not as a one-off project to be completed and forgotten.<\/p>\n<h2>GDPR compliance is a process, not a document<\/h2>\n<p>A privacy policy is a document. GDPR compliance is a state that requires continuous verification. Every new plugin, every integration, and every change introduced by the website provider may create a new processing activity \u2014 with its own purpose, legal basis, and information obligation.<\/p>\n<p>A post-implementation website audit is a method for detecting discrepancies before the supervisory authority does. Most urgent shortcomings are simple configuration changes that the website provider can implement on your instructions. The real expense arises from documents that no one has prepared and processes that no one monitors.<\/p>\n<p>If your company has completed a GDPR implementation and you want to check whether the matter is genuinely settled \u2014 <a href=\"https:\/\/sawaryn.com\/en\/contact\/\">contact us<\/a>.<\/p>\n<h2>Frequently asked questions<\/h2>\n<p><strong>We paid for GDPR implementation six months ago \u2014 why do we need another review of the same website?<\/strong><\/p>\n<p>An implementation establishes the position as at the date the documents are published. From that point on, the website changes: marketing adds tools, the provider updates plugins, and new integrations are introduced. A post-implementation review checks whether the declarations in the policy still match what is actually happening on the website. Without it, you cannot be sure that the documentation is up to date \u2014 and the accountability principle under Article 5(2) GDPR requires compliance to be demonstrated at all times, not only on the implementation date.<\/p>\n<p><strong>How much IT work does this involve? Does a list of shortcomings mean a new project?<\/strong><\/p>\n<p>Most urgent shortcomings identified during reviews are configuration changes made by the website provider \u2014 adding a reject button to the banner, completing a placeholder in a notice, or removing the \u201cdraft&#8221; label from the policy. They require no effort from the company other than issuing an instruction. Costs arise only where documents that no one has prepared are required (TIA, DPIA, risk assessment), or where organisational and technical work is needed from IT (encryption, backup testing).<\/p>\n<p><strong>How can we check in five minutes whether our cookie banner is configured correctly?<\/strong><\/p>\n<p>Open the website in a clean browser session (private mode or with the website data cleared). Do not click anything on the banner. Check two things: whether the first layer of the banner displays a visually equivalent \u201creject all&#8221; button alongside \u201callow all&#8221;, and whether any analytics or advertising cookies appear in the Application \u2192 Cookies tab of the developer tools before you interact with the banner. If the reject button is missing or cookies are stored before consent, this is a warning sign that requires investigation.<\/p>\n<p><strong>Do automated post-purchase emails requesting a review require separate consent?<\/strong><\/p>\n<p>Automatically sending invitations to leave a review is a separate processing activity with its own purpose and legal basis. When sent by email, it is also subject to Article 398 of the Electronic Communications Law, which requires consent to send unsolicited commercial communications electronically. This feature is sometimes enabled by default when a review collection plugin is installed \u2014 check the configuration and determine whether your company consciously activated it.<\/p>\n<p><strong>Is a privacy policy published as a \u201cdraft&#8221; without a date binding?<\/strong><\/p>\n<p>Yes \u2014 a policy published on the website is binding on data subjects regardless of how you have labelled it. A \u201cdraft&#8221; label with an empty publication date works against you: in the event of a dispute or inspection, it supports the argument that the controller itself considered the document unfinished but nevertheless published it as binding. Remove the \u201cdraft&#8221; label and add the publication date.<\/p>\n<p><strong>Can I ask the website provider to carry out such a review, or must it be done by someone external?<\/strong><\/p>\n<p>The website provider acts as a processor \u2014 it should not assess its own compliance. A post-implementation review should be conducted by someone independent of the provider: an internal DPO, an external adviser, or a law firm. The website provider is, however, the recipient of the recommendations \u2014 it is responsible for implementing the resulting configuration and technical changes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to compare a live website with its privacy policy and processing record, check pre-consent activity, and identify gaps after GDPR implementation.<\/p>\n","protected":false},"author":13,"featured_media":4138,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","sip_alt_url":"","sip_en_pl_url":"","sip_pair_uuid":"5b6fbc63-7743-4757-9315-8a13f31e3c70","sip_pair_state":"draft_ready"},"categories":[1578],"tags":[1448,1551,1446,1553,1531,1534],"specialization":[1215],"practice_area":[],"class_list":["post-5299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gdpr","tag-compliance","tag-e-commerce-en","tag-gdpr","tag-gdpr-audit","tag-personal-data-protection","tag-uodo-en","specialization-gdpr"],"acf":[],"_links":{"self":[{"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/posts\/5299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/comments?post=5299"}],"version-history":[{"count":8,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/posts\/5299\/revisions"}],"predecessor-version":[{"id":5316,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/posts\/5299\/revisions\/5316"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/media\/4138"}],"wp:attachment":[{"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/media?parent=5299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/categories?post=5299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/tags?post=5299"},{"taxonomy":"specialization","embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/specialization?post=5299"},{"taxonomy":"practice_area","embeddable":true,"href":"https:\/\/sawaryn.com\/en\/wp-json\/wp\/v2\/practice_area?post=5299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}