{"id":385839,"date":"2026-10-14T16:06:52","date_gmt":"2026-10-14T16:06:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/eaa-dossier\/"},"modified":"2026-10-14T16:06:25","modified_gmt":"2026-10-14T16:06:25","slug":"hale-accessibility-dossier-for-eaa","status":"publish","type":"plugin","link":"https:\/\/el.wordpress.org\/plugins\/hale-accessibility-dossier-for-eaa\/","author":23584987,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.3","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Hale Accessibility Dossier for EAA","header_author":"Adam Hale","header_description":"Country-specific accessibility statement (BFSG, BaFG, ACM, DGCCRF, CCPC), an axe-core scan of your purchase path that runs in your own browser, a prioritised fix list, notification-duty deadlines and a dated, hash-chained evidence log. No account, no external requests.","assets_banners_color":"2349b3","last_updated":"2026-10-14 16:06:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"adamhaleworks","date":"2026-10-14 16:06:25","revision":3746760}},"upgrade_notice":{"1.0.2":"<p>New name: Hale Accessibility Dossier for EAA. Your data and settings are kept.<\/p>","1.0.1":"<p>Belgian microenterprises are no longer reported as exempt.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3746760,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3746760,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3746760,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3746760,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3746760,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3746760,"resolution":"1","location":"assets","locale":"","width":1366,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3746760,"resolution":"2","location":"assets","locale":"","width":1366,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3746760,"resolution":"3","location":"assets","locale":"","width":1366,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3746760,"resolution":"4","location":"assets","locale":"","width":1366,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3746760,"resolution":"5","location":"assets","locale":"","width":1366,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3746760,"resolution":"6","location":"assets","locale":"","width":1366,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3746760,"resolution":"7","location":"assets","locale":"","width":1366,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3746760,"resolution":"8","location":"assets","locale":"","width":1366,"height":900}},"screenshots":{"1":"Overview with next steps, status cards and report export.","2":"Scan running in the admin's browser, with progress and live preview.","3":"Prioritised fix list with impact, WCAG reference, affected pages and how to fix.","4":"Statement editor with country-specific fields and live preview.","5":"Published accessibility statement with read-aloud button.","6":"Notification duties with deadlines and a draft notification in the authority's language.","7":"Evidence log with hash chain verification.","8":"Printable dated report."}},"plugin_section":[],"plugin_tags":[238514,240916,241427,253317,286],"plugin_category":[45],"plugin_contributors":[286793],"plugin_business_model":[],"class_list":["post-385839","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility-statement","plugin_tags-bfsg","plugin_tags-eaa","plugin_tags-european-accessibility-act","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-adamhaleworks","plugin_committers-adamhaleworks"],"banners":{"banner":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/banner-772x250.png?rev=3746760","banner_2x":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/banner-1544x500.png?rev=3746760","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/icon.svg?rev=3746760","icon":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/icon.svg?rev=3746760","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-1.png?rev=3746760","caption":"Overview with next steps, status cards and report export."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-2.png?rev=3746760","caption":"Scan running in the admin's browser, with progress and live preview."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-3.png?rev=3746760","caption":"Prioritised fix list with impact, WCAG reference, affected pages and how to fix."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-4.png?rev=3746760","caption":"Statement editor with country-specific fields and live preview."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-5.png?rev=3746760","caption":"Published accessibility statement with read-aloud button."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-6.png?rev=3746760","caption":"Notification duties with deadlines and a draft notification in the authority's language."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-7.png?rev=3746760","caption":"Evidence log with hash chain verification."},{"src":"https:\/\/ps.w.org\/hale-accessibility-dossier-for-eaa\/assets\/screenshot-8.png?rev=3746760","caption":"Printable dated report."}],"raw_content":"<!--section=description-->\n<p>Since 28 June 2025 online shops that sell to consumers in the EU must meet the accessibility requirements of the European Accessibility Act (EAA). Besides fixing barriers, shops have paperwork: an accessibility statement with content prescribed by national law, in written <strong>and oral<\/strong> form, kept for as long as the service runs, and a duty to inform the market surveillance authority about non-conformities.<\/p>\n\n<p>Hale Accessibility Dossier for EAA keeps that file inside WordPress. \"EAA\" stands for the European Accessibility Act; the plugin is an independent tool and not affiliated with the European Union or any authority. It is not an overlay and does not hide problems behind a widget. It helps you find them, decide what to fix first, describe them honestly and prove what you did and when.<\/p>\n\n<p>Made for shop owners in Germany (BFSG), Austria (BaFG), the Netherlands (ACM, toegankelijkheidsverklaring), Belgium, France (d\u00e9claration d'accessibilit\u00e9; the scan checks WCAG 2.1 AA rules and is not a full RGAA audit) and Ireland.<\/p>\n\n<h4>Accessibility statement for your country<\/h4>\n\n<ul>\n<li>Statement content follows the national rules: Germany (BFSG Anlage 3), Austria (BaFG Anlage 3), the Netherlands (ACM), Belgium (Boek VIII WER, Dutch or French), France (Code de la consommation, annexe \u00e0 l'article D412-57), Ireland (S.I. 636\/2023) and a generic EU version based on Annex V of the directive.<\/li>\n<li>Written in the language of the country: Barrierefreiheitserkl\u00e4rung, toegankelijkheidsverklaring, d\u00e9claration d'accessibilit\u00e9 or English statement. The admin interface is fully translatable, and German, Dutch and French translations are prepared for translate.wordpress.org.<\/li>\n<li>Names the correct market surveillance authority with its published contact details (MLBF, Sozialministeriumservice, ACM, FOD Economie \/ SPF Economie, DGCCRF, CCPC). You can override them.<\/li>\n<li>Known limitations are written for you in plain language from your open scan findings and failed manual checks, with the affected pages (checkout, cart, product page \u2026).<\/li>\n<li>Oral format: a read-aloud button that uses the speech synthesis built into the visitor's browser, and\/or your own audio recording.<\/li>\n<li>Publishes into a normal WordPress page that you can edit with the block editor. The page stays when you remove the plugin.<\/li>\n<li>Every published version is archived with date, author and SHA-256 fingerprint.<\/li>\n<\/ul>\n\n<h4>axe-core scan of your purchase path<\/h4>\n\n<ul>\n<li>Runs <a href=\"https:\/\/github.com\/dequelabs\/axe-core\">axe-core<\/a> 4.13 in your own browser. Pages are loaded in a frame while you are logged in, so the cart, checkout and customer account are tested too. Nothing is sent to an external service.<\/li>\n<li>Detects home, shop, top category, latest product, cart, checkout, account, terms, privacy and statement pages automatically. Add your own URLs.<\/li>\n<li>Optional: puts an in-stock product into your own cart first, so the checkout is tested with content.<\/li>\n<li>Desktop (1280 px) or mobile (390 px) viewport. WCAG 2.1 A\/AA rules (EN 301 549), optionally WCAG 2.2 AA and best-practice rules.<\/li>\n<li>Rule messages in German and French when your admin uses those languages.<\/li>\n<li>Flags focusable elements that show no visible change on focus, for human review.<\/li>\n<\/ul>\n\n<h4>Prioritised fix list<\/h4>\n\n<ul>\n<li>Findings grouped by rule and ordered by impact and by how close the page is to the purchase. Problems in the checkout come first.<\/li>\n<li>WooCommerce and WordPress specific hints for the most common problems (contrast, missing labels, product image alt text, quantity fields, variation selectors and more).<\/li>\n<li>Each finding keeps its history: first found, fixed (automatically when a later scan no longer finds it), reopened, dismissed as false positive or exempt with a logged reason.<\/li>\n<\/ul>\n\n<h4>Notification duties and deadlines<\/h4>\n\n<ul>\n<li>For the Netherlands: the ACM deadlines (critical and serious problems within 1 week, moderate and minor within 1 month unless fixed) are calculated from the date a problem was first found.<\/li>\n<li>For the other countries: shows which findings must be reported \"without delay\" (unverz\u00fcglich, imm\u00e9diatement, immediately).<\/li>\n<li>Drafts the notification in the authority's language from your findings and measures. You send it yourself; the plugin records when, how and the reference number.<\/li>\n<\/ul>\n\n<h4>Dated, tamper-evident evidence log<\/h4>\n\n<ul>\n<li>Every scan, decision, checklist result, statement version, notification and export is logged with date, user and a SHA-256 hash that includes the previous entry. Editing or deleting entries in the database breaks the chain, and the built-in verification shows where.<\/li>\n<li>Microenterprise self-check (fewer than 10 staff and at most EUR 2 million turnover or balance sheet total) with the result recorded. Belgium does not exempt microenterprises automatically, and the check says so for Belgian shops.<\/li>\n<li>18 manual checks for what automated tests cannot decide: keyboard-only purchase, screen reader announcements in the cart, checkout error messages, payment providers, CAPTCHA, cookie banner, zoom, emails, documents and more.<\/li>\n<\/ul>\n\n<h4>Reports<\/h4>\n\n<ul>\n<li>Print or save as PDF, download as HTML, JSON or CSV.<\/li>\n<li>The report contains the summary, deadlines, fix list, manual checks, finding history, statement versions and the full evidence log, with a fingerprint of the exported data.<\/li>\n<\/ul>\n\n<h4>What Hale Accessibility Dossier for EAA does not do<\/h4>\n\n<ul>\n<li>It does not make your site accessible or compliant by itself, and it is not legal advice. Automated tests find only part of all barriers; the manual checks and your fixes do the rest.<\/li>\n<li>It does not change your shop's front end, except the read-aloud button on the statement page and an optional footer link (off by default).<\/li>\n<li>It never contacts an authority or any other service.<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Hale Accessibility Dossier for EAA makes no external HTTP requests, loads no remote scripts or fonts, sets no cookies and collects no usage data. All data stays in your WordPress database: scan results (including short HTML snippets of your own pages), the evidence log (with the user IDs of administrators who performed actions), manual check notes and statement versions. Links to rule explanations on dequeuniversity.com are only opened if you click them.<\/p>\n\n<h4>Third-party code<\/h4>\n\n<ul>\n<li>axe-core 4.13.0 by Deque Systems, Mozilla Public License 2.0, bundled in <code>assets\/vendor\/axe-core\/<\/code> with its licence and the unminified source (<code>axe.js<\/code>). Source: https:\/\/github.com\/dequelabs\/axe-core<\/li>\n<\/ul>\n\n<h4>Sources used for the statement content<\/h4>\n\n<ul>\n<li>EAA, Directive (EU) 2019\/882, Annex V and Art. 13: https:\/\/eur-lex.europa.eu\/eli\/dir\/2019\/882\/oj<\/li>\n<li>Germany, BFSG Anlage 3 and \u00a7 14: https:\/\/www.gesetze-im-internet.de\/bfsg\/anlage_3.html<\/li>\n<li>Austria, BaFG \u00a7 14: https:\/\/www.ris.bka.gv.at\/eli\/bgbl\/i\/2023\/76\/P14\/NOR40254374<\/li>\n<li>Netherlands, ACM: https:\/\/www.acm.nl\/nl\/toegankelijkheid\/toegankelijkheid-van-e-handelsdiensten-en-elektronische-communicatiediensten<\/li>\n<li>Belgium, FOD Economie guidelines: https:\/\/economie.fgov.be\/sites\/default\/files\/Files\/Entreprises\/Guidelines-toegankelijke-e-handelsdiensten.pdf<\/li>\n<li>France, francenum: https:\/\/www.francenum.gouv.fr\/guides-et-conseils\/developpement-commercial\/site-e-commerce\/accessibilite-des-sites-de-e-commerce<\/li>\n<li>Ireland, S.I. 636\/2023: https:\/\/www.irishstatutebook.ie\/eli\/2023\/si\/636\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin through the Plugins screen.<\/li>\n<li>Open <strong>Accessibility Dossier<\/strong> in the admin menu.<\/li>\n<li>Under <strong>Settings<\/strong>, choose your country and answer the microenterprise self-check.<\/li>\n<li>Under <strong>Scan &amp; fix list<\/strong>, run the first scan and keep the tab open until it is finished.<\/li>\n<li>Work through the fix list and the <strong>Manual checks<\/strong>.<\/li>\n<li>Under <strong>Statement<\/strong>, complete the fields and click <strong>Save and publish statement page<\/strong>. Link the page from your footer or menu.<\/li>\n<li>Check <strong>Notification duties<\/strong> after every scan and export a dated report when you need to show your work.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20make%20my%20shop%20eaa%20compliant%3F\"><h3>Does this make my shop EAA compliant?<\/h3><\/dt>\n<dd><p>No plugin can do that. Hale Accessibility Dossier for EAA documents your work: what was tested, what was found, what you fixed, what you declared and when. Compliance comes from fixing the barriers. Have the statement reviewed if you are unsure about your legal situation.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>No. Without WooCommerce the scan covers the home page, legal pages, the statement and any URLs you add. With WooCommerce it also finds the shop, category, product, cart, checkout and account pages.<\/p><\/dd>\n<dt id=\"why%20does%20the%20scan%20run%20in%20my%20browser%20and%20not%20on%20a%20server%3F\"><h3>Why does the scan run in my browser and not on a server?<\/h3><\/dt>\n<dd><p>So it can test the pages only you can see while logged in (cart, checkout, account), without an account at an external service and without sending your pages anywhere. It also puts no load on your hosting during the test.<\/p><\/dd>\n<dt id=\"a%20page%20shows%20an%20error%20in%20the%20scan\"><h3>A page shows an error in the scan<\/h3><\/dt>\n<dd><p>The scan loads pages in a frame of your own site. If a security plugin sends <code>X-Frame-Options: DENY<\/code> or a Content-Security-Policy that blocks same-origin frames or same-origin scripts, the page cannot be tested. Allow same-origin framing (SAMEORIGIN) for logged-in administrators. Pages that redirect to another domain cannot be tested either.<\/p><\/dd>\n<dt id=\"which%20findings%20count%20as%20legal%20non-conformities%3F\"><h3>Which findings count as legal non-conformities?<\/h3><\/dt>\n<dd><p>Violations of WCAG A and AA rules. Best-practice findings and the focus check are shown for information only. They never appear in the statement or in authority notifications.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20notify%20the%20authority%20for%20me%3F\"><h3>Does the plugin notify the authority for me?<\/h3><\/dt>\n<dd><p>No. It calculates deadlines, drafts the text in the authority's language and records the notification after you have sent it.<\/p><\/dd>\n<dt id=\"which%20countries%20are%20supported%3F\"><h3>Which countries are supported?<\/h3><\/dt>\n<dd><p>Germany, Austria, the Netherlands, Belgium (Dutch and French), France and Ireland, plus a generic EU English statement for other member states. Developers can add countries with the <code>eaa_dossier_countries<\/code> filter.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data when I delete the plugin?<\/h3><\/dt>\n<dd><p>Nothing, unless you enable \"Delete all scans, logs and settings\" under Settings. The statement page is never deleted.<\/p><\/dd>\n<dt id=\"is%20there%20a%20paid%20version%3F\"><h3>Is there a paid version?<\/h3><\/dt>\n<dd><p>An optional add-on for agencies is planned (white-label reports, scan comparison, monthly reminders, evidence pack). Everything described on this page is free and stays free.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>New name: Hale Accessibility Dossier for EAA (slug and text domain <code>hale-accessibility-dossier-for-eaa<\/code>). Settings and data are unchanged.<\/li>\n<li>The report stylesheet is added through the WordPress style API.<\/li>\n<li>Translations are no longer bundled; they come from translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Microenterprise self-check: Belgian law does not exempt microenterprises automatically (Art. VIII.59 \u00a7 2 Code of Economic Law), so the check no longer reports Belgian microenterprises as exempt and keeps their notification duties active.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Country-specific accessibility statement (BFSG, ACM, DGCCRF), axe-core scan of your WooCommerce checkout, fix list and dated evidence log for the EAA.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/385839","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=385839"}],"author":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/adamhaleworks"}],"wp:attachment":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=385839"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=385839"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=385839"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=385839"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=385839"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=385839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}