If you only fix one accessibility thing on a WooCommerce store this month, make it keyboard access. Screen readers are keyboard apps. Motor-impaired shoppers are keyboard shoppers. And a theme that strips focus outlines punishes everyone who tabs.
You can test it without buying a tool. Take the mouse away and try to buy something.
Who is actually tabbing through your store
People with motor impairments. Arthritis, RSI, cerebral palsy, MS, a broken arm. A mouse is optional or painful. If they cannot reach Add to cart, or they get stuck in a mini-cart drawer, the order dies.
Screen reader users. VoiceOver, NVDA, and JAWS are driven from the keyboard. If Tab order is broken, the screen reader path is broken. There is no separate “screen reader mode” that saves a trap in your variation swatches.
People who just prefer keys. Developers, accountants, anyone who lives in forms. Tab, Shift+Tab, Enter, Space, arrows. On a catalog with filters and a long header, that is faster than hunting clicks.
Phone and tablet users with a hardware keyboard. Less common, still real. The same missing focus ring that fails a desktop audit fails them too.
The WCAG bits that actually get you sued over this
Three criteria show up first:
- 2.1.1 Keyboard (A): every action works from the keyboard, with no special timing
- 2.1.2 No Keyboard Trap (A): if focus can go in, it can come out (Escape on drawers counts)
- 2.4.7 Focus Visible (AA): you can see where you are
The EAA (EN 301 549) requires the same idea for stores that sell into the EU. US ADA complaints love these because they are easy to demo on a recording: “I cannot leave the cart drawer” is a 20-second video.
Why this is the highest-ROI fix
You do not need new product photos or a redesign. You need Tab order, a visible :focus-visible style, and no traps on cart, filters, and checkout.
Abandoned checkouts are already high. Baymard still sits around 70% average abandonment. Keyboard traps are a stupid reason to add to that number.
Google does not give you a “keyboard badge.” It does reward pages that have real structure: headings, names on controls, links that say something. Keyboard work usually forces that cleanup, which is why it shows up next to SEO conversations.
The five WooCommerce failures I keep seeing
1. outline: none with nothing behind it. Themes delete the browser focus ring and never replace it. Keyboard users are flying blind.
Fix: a 2px outline or a background change on :focus-visible. Check quantity plus/minus, not just nav links.
2. Drawers and dropdowns that trap Tab. Mini-cart, mobile nav, variation pickers. Focus goes in. Escape does nothing. Shift+Tab cannot leave.
Fix: Escape closes the panel and returns focus to the control that opened it.
3. No skip link. Twenty header links on every product page. Keyboard users eat that cost on every SKU.
Fix: a “Skip to content” link that appears on focus and jumps to <main>. Guide: how to add skip links.
4. Checkout fields you can see but cannot name. Placeholders vanish. Error text is a red border with no text. Payment widgets steal focus and never give it back.
Fix: visible labels, errors tied to the field, and a keyboard pass of the whole payment step. Longer: checkout accessibility issues that kill sales.
5. Galleries that only work on hover. Extra images appear on mouseover. No buttons. No arrow keys.
Fix: real controls, a focus ring, and arrow-key movement between thumbnails.
Fifteen-minute test
- Unplug the mouse.
- Homepage → variable product → cart → checkout.
- Use Tab, Shift+Tab, Enter, Space, arrows, Escape.
- Write down every control with no name, no ring, or no exit.
If you cannot complete a test order, a widget will not save that path. See how to fix keyboard navigation in WooCommerce and screen reader testing in 15 minutes.
WooCommerce Accessibility Fixer restores skip links, focus, and reachable controls in Woo templates. It will not invent a good product description. It will stop the theme from hiding the ring.
What to do this week
Do the mouse-free purchase once. Fix traps and missing focus first. Then skip links and checkout labels. That order is the one that unblocks sales.