European Accessibility Act

EAA compliance for WooCommerce: WCAG 2.1 AA checklist & fixes

WooCommerce inherits accessibility from the active WordPress theme and the plugins layered on top. The catch is that almost any plugin can inject markup — a slider, a popup, a chatbot — that breaks the theme's carefully tuned accessibility. EAA compliance for WooCommerce is mostly a hygiene exercise: pick an accessibility-ready theme, audit the storefront with the plugins you actually use enabled, and fix focus, labels, and contrast. Powers ~28% of all online stores via WordPress; popular among EU SMBs subject to the EAA.

Category
E-commerce platform
Standard
WCAG 2.1 Level AA via EN 301 549
Deadline
28 June 2025 (EU consumer services)
Risk for B2C
High — public-facing, consumer-billed

What the EAA actually requires from a WooCommerce site

WooCommerce compliance is a two-layer problem under the EAA: the underlying WordPress theme that renders the shop, plus every plugin that emits customer-facing markup on top of it. WooCommerce core produces reasonably accessible checkout markup, so EN 301 549 conformance usually hinges on the active theme's contrast and focus styles and on plugins (quick-view, wishlist, currency switcher, popups) that override theme JavaScript and strip keyboard handlers. The requirement is effectively that the shop, cart, and checkout stay WCAG 2.1 AA with the exact plugin stack you run in production enabled.

WooCommerce is dominated by EU small and mid-sized merchants who self-host, which means they are in scope as product sellers and generally cannot claim the services microenterprise exemption. Their turnover rarely reaches the level where a member state's percentage-based penalty bites, so exposure is concentrated in fixed national fines and in the cost of an enforced fix-or-delist order during peak trading. Because so many of these stores run on cheap shared hosting with a pile of plugins, the practical risk is that an untested plugin update reintroduces a failure right before an audit.

Remediation is typically handled by the site owner's existing WordPress developer or agency, working in the child theme's functions.php, template overrides, and CSS rather than touching WooCommerce core. The highest-leverage moves are announcing WooCommerce notices as live regions, adding a skip link and focus styles in the theme, and auditing the site with the production plugin set active. Budget a few developer-days, and lock down plugin auto-updates so a silent markup change cannot regress a previously passing checkout.

Top WCAG failures we see on WooCommerce sites

Across hundreds of WooCommerce scans, the same handful of issues show up over and over. None of them require ripping the theme apart — most are fixable in a few hours by someone comfortable in the platform's editor or template files.

  • Plugin conflicts that break keyboard navigation

    Quick-view, wishlist, and currency-switcher plugins frequently override theme JS and remove keyboard handlers from product cards.

    2.1.1 Keyboard — Level A
  • Cart and checkout messages announced as decoration

    WooCommerce notice messages render as <div class="woocommerce-message"> without role="status" or aria-live, so screen readers miss "Coupon applied" or "Item added".

    4.1.3 Status Messages — Level AA
  • Variation dropdowns without labels

    Color and size selectors auto-generate <select> elements that some themes fail to label, leaving "Choose an option" as the only context for assistive tech.

    1.3.1, 4.1.2 — Level A
  • Theme search and modal popups stealing focus

    Newsletter and exit-intent popups that auto-open and trap focus on page load are still common in WP theme bundles.

    2.4.3 Focus Order, 2.1.2 No Keyboard Trap — Level A

Concrete code fixes for WooCommerce

Below are copy-paste fixes for the most common WooCommerce issues. They assume you have access to your theme code or the platform's custom-code injection panel. If you cannot edit code directly, share these snippets with whoever maintains the site — every one of them is a ten-minute change.

PHP: announce WooCommerce notices as polite live regions

PHP
add_filter('woocommerce_add_notice', function ($notice, $type) {
    $role = $type === 'error' ? 'alert' : 'status';
    return '<div class="woocommerce-message" role="' . esc_attr($role) . '" aria-live="polite">' . $notice . '</div>';
}, 10, 2);

Wraps notices in role="status" / role="alert" so screen readers announce coupon, cart, and checkout feedback.

Theme functions.php: skip-link target and focus styles

PHP
add_action('wp_body_open', function () {
    echo '<a class="skip-link" href="#main">Skip to main content</a>';
});

Adds a WCAG-required skip link before any navigation. Pair with CSS :focus styles in your theme.

Tools and plugins worth installing first

  • WP Accessibility plugin — adds skip links, language attributes, and form label sanity

  • Disable autoplay carousels and video sliders site-wide via theme settings

  • Certvo scan against /shop, /cart, /checkout, and a single product URL

How to scan a WooCommerce site without missing anything

Automated scanners catch about 30–40% of WCAG issues; the rest need manual review. The good news is that the 30–40% includes the most expensive issues to remediate after the fact, so an automated scan is the cheapest way to get unstuck. Run one before you change a line of theme code.

  • Always scan with the plugins you ship in production active. Plugins are the #1 source of accessibility regressions on WP.

  • Re-test after WooCommerce or theme updates; markup changes break previously-passing pages.

  • Crawl a logged-in cart and checkout — these have payment-method UIs that are easy to miss.

Run a free public scan against any WooCommerce URL right now — no signup, results in 60 seconds.

Frequently asked questions

Is the default WooCommerce checkout WCAG 2.1 AA out of the box?

It is close. Field labels are programmatic and required-field markers are correct. The remaining issues come from your theme's CSS (contrast, focus states) and any payment plugin you add.

Do I need a separate accessibility plugin?

A plugin like WP Accessibility helps with structural items (skip links, language tags). It does not replace theme-level fixes for color, focus, or keyboard interaction.

Other e-commerce platform platforms

Find every accessibility issue on your site in 60 seconds.

Free public scan. No card. AI-generated fixes for every issue we find.