Scan, fix, and date the record
Scan your store against WCAG 2.1 AA / EN 301 549, fix in the live page what can be fixed safely — every fix previewable and revertible with one click — approve AI alt text image by image, and generate the two documents a German merchant is asked for: a dated Prüfbericht and a published accessibility statement.
Findings on your own pages, in minutes
Preview every fix, undo it in one click
Two dated documents
The app scans your home, cart, search, top collections and products, contact and a policy page with axe-core in a headless browser, and lists every WCAG 2.1 AA finding with its rule id, impact, criterion, selector and an HTML snippet. Nothing renders on the storefront until you enable the app embed in your theme editor.
What you get
The app scans your home, cart, search, top collections and products, contact and a policy page with axe-core in a headless browser, and lists every WCAG 2.1 AA finding with its rule id, impact, criterion, selector and an HTML snippet. Nothing renders on the storefront until you enable the app embed in your theme editor.
Nine code-level fixes — six safe ones on by default, three riskier ones off — are applied by a theme app extension, never by editing your theme code. Preview a fix on your own storefront before any shopper sees it, apply it, and revert it in one click.
Every scan on a paid plan produces a Prüfbericht PDF that lists every WCAG 2.1 AA criterion as pass, fail or not tested, and the app generates the accessibility-statement content the BFSG requires — published as its own page through an app proxy and refreshed with every scan.
The law
This app is a detection and fixing tool. It reports axe-core findings and generates a dated document set; it is not legal advice and it makes no claim that a store conforms to the law.
The European Accessibility Act (Directive (EU) 2019/882) has applied to services since 2025-06-28. In Germany the Barrierefreiheitsstärkungsgesetz (BFSG) implements it, and an online shop's purchase flow is a covered service. EN 301 549 is the presumed-conformity standard, and it tracks WCAG 2.1 AA.
BFSG §14 requires the service provider to publish an accessibility statement with defined content. The app generates that content from your shop and your latest scan, publishes it at its own URL on your domain, and refreshes the date and the result summary with every scan. Every field is editable, and the page carries a template disclaimer.
BFSG §37 sets fines up to €100,000 for the serious categories and €10,000 otherwise. The app does not promise immunity from a warning letter or a fine. What it produces is a dated record of what was tested, what the embed fixed, and what remains manual — a record you can hand to a lawyer.
Why Capyo
The accessibility statement is served by the app at a stable URL on the shop's own domain the moment it is published — no page to create, no block to place, no step to get wrong. Its date and result summary refresh from the latest scan instead of going stale in a copied page.
Install free on Shopify →A fix has two states before it is live: off, and previewing. A preview link applies a rule only on requests carrying its 30-minute token, so no shopper sees a change before you do. Any fix can be reverted in one click, and the embed never edits theme code.
Install free on Shopify →The German listing name, German admin strings, and German human support during DE/AT/CH business hours. The widget and the statement render in the storefront's locale, and axe rule text falls back to English rather than showing a raw key.
Install free on Shopify →How it works
After OAuth the app builds a page set from your store and scans it with axe-core. Nothing appears on your storefront yet: the app embed has to be enabled in the theme editor first.
Group by rule or by page, filter by impact, and see each finding's rule id, WCAG criterion, selector and snippet, with a badge for fixed by embed, fix available or manual fix.
Preview any fix on your own storefront with a token only your browser has, apply it for every visitor, or revert it in one click. Risky fixes need a confirmation and can never skip the preview step.
Download a dated Prüfbericht PDF and publish the accessibility statement at its own URL. Both refresh from the latest scan; the report is immutable, so a later scan adds a new one.
Inside your admin
The scopes are read_products, write_products, write_files, read_themes and read_content. No read_orders, no read_customers and no protected customer data. The app stores no customer names, emails, addresses or order data.
Fixes and the widget arrive through a theme app extension (an app embed). The app never uses Shopify's Asset API to write your theme files, and it never injects a third-party overlay script.
The widget stores a shopper's adjustments in localStorage only: no cookie, no beacon, no shopper identifier and no third-party script. Nothing about a shopper leaves the page.
Shopify's compliance webhooks are implemented. Uninstall cancels jobs and makes the statement URL return 404 immediately; the app's rows for your shop are deleted when Shopify sends shop/redact, 48 hours after uninstall, and a reinstall inside that window cancels the deletion.
The numbers
Plans differ by how many pages are scanned, how often, how many alt texts are generated each cycle, and whether the Prüfbericht is a PDF. Widget colour, icon, size, position and language are editable on every plan, including Free.
Install free on Shopify →9
code-level fixes in the catalog — six safe, three risky
8
widget adjustments, on every plan
2
documents generated: Prüfbericht and statement
0
customer records read or stored
Pricing
Free is weekly on 5 pages. Compliance adds a PDF Prüfbericht and a published statement at $29/month; Premium adds daily scans and history at $99/month. Paid plans have a 7-day free trial, billed through Shopify Managed Pricing.
Free
$0
forever
Scan five pages weekly and see how many findings the embed already fixes.
Compliance
$29
per month
The dated documents: a PDF Prüfbericht and a published statement.
Premium
$99
per month
Daily scans and the full history.
FAQ
No, and it never claims to. It reports axe-core findings against WCAG 2.1 AA / EN 301 549, fixes what can be fixed safely in the page, and generates a dated Prüfbericht and an accessibility-statement template. It is detection and fixing, not a legal guarantee, and it is not legal advice.
No. The app never edits theme code. Fixes and the widget are delivered by a theme app extension (an app embed) that you enable in the theme editor. Until you enable it, nothing at all renders on your storefront.
Yes. Every fix has a preview state: a link carrying a 30-minute token applies the rule only in your browser, so visitors without the token get the unchanged page. Once applied, one click reverts it.
No. The app reads products, media, theme metadata and online-store content. It requests no read_orders and no read_customers scope, holds no protected customer data, and stores no customer names, emails, addresses or order data.
Only the shopper's own adjustments, in localStorage on that browser: text size, line and letter spacing, high contrast, highlighted links, a readable font, paused animation, hidden images and a reading guide. No cookie, no beacon and no shopper identifier is set, and no third-party script runs.
A dated PDF produced per scan on a paid plan. It lists every WCAG 2.1 AA success criterion as pass, fail or not tested — a criterion axe-core cannot test is marked not tested, never pass — plus the findings count, the fixes the embed was applying, the manual findings, the tool and its version, and the disclaimer.
It is generated and queued, but nothing is written to Shopify until you accept it. Each image is shown with its generated text and Accept, Edit or Reject; an accepted value can be undone, which restores the previous alt text.
Yes — German human support during DE/AT/CH business hours, by email.
Jobs are cancelled and the statement URL returns 404 immediately. Your shop's rows are deleted when Shopify sends shop/redact, 48 hours after uninstall; a reinstall inside those 48 hours keeps your page set, fixes, reports and statement. Alt text already written to your product media stays in Shopify.