How accessibility fixes reach a Shopify, Shopware, WooCommerce or Magento theme

An accessibility fix that belongs in a shop’s theme is an edit to the theme’s own files. Validiscan delivers such edits as a pull request, an unpublished copy of a Shopify theme or a patch bundle, and does not put them live: the merchant or their developer merges, publishes or applies them.

Published
Last updated
Answers
7 questions
Sources
28 sources

Where does an accessibility fix go in a shop theme?

An accessibility fix for a failure the theme produces goes into the file of the shop’s theme that produces the failing markup, style or text: a template, stylesheet, script or translation file. Each platform keeps those files in its own structure and template language.

Where a storefront theme keeps its code, per platform (from each platform’s developer documentation)
Platform Where the theme lives Templates Styles Text for visitors
Shopify A theme in the store, with the folders layout, templates, sections, blocks, snippets, assets, config and locales Liquid; JSON templates only list the sections a page shows CSS and JavaScript in assets JSON locale files in locales, read with the t filter
Shopware 6 A theme plugin, or an app in Shopware’s cloud Twig templates under Resources/views that extend Storefront templates with sw_extends SCSS Snippet JSON files under Resources/snippet, read with the trans filter
WooCommerce A WordPress theme or child theme under wp-content/themes, with WooCommerce template overrides in its woocommerce folder PHP templates; block themes use HTML templates in a templates folder The theme’s stylesheets A text domain with .pot, .po and .mo files
Magento Open Source and Adobe Commerce A theme, by convention under app/design/frontend/Vendor/theme, with a theme.xml file .phtml templates and layout XML, in a folder per module the theme changes Less and CSS, with the theme’s Less files in web/css/source .csv dictionaries in the theme’s i18n folder
Details: the same failure on four platforms, and how a fix in the theme differs from an overlay

When the theme produces a failure, the fix goes into the file that produces the failing markup, style or text: a template, stylesheet, script or translation file of the shop’s theme. Each platform keeps those files in its own structure and template language, so the same failure, such as a button without a name, can sit in a Liquid file on Shopify, a Twig file on Shopware, a PHP file on WooCommerce and a .phtml file on Magento.

A fix in the theme changes the code the shop itself serves. A developer can read it as a diff before it goes live and revert it like any other change to the code. An accessibility overlay is different: a script that changes the shop’s pages in the visitor’s browser, while the theme stays as it was apart from the reference that loads the script. What overlays change and what they leave as it was

Where does each platform keep the theme’s code?

Each platform keeps a theme’s code in its own structure: a Shopify theme has a fixed set of folders; a Shopware 6 theme is a plugin, or an app in Shopware’s cloud; WooCommerce template overrides go in a WordPress child theme’s woocommerce folder; a Magento theme sits, by convention, under app/design/frontend/<Vendor>/.

Where does a Shopify theme keep its code?

A Shopify theme has a fixed set of folders, assets, blocks, config, layout, locales, sections, snippets and templates, and Shopify’s theme architecture documentation says that subfolders other than the ones it lists are not supported. The layout holds repeated elements such as the header and footer, sections are modules that merchants can add and customize, and snippets are pieces of Liquid that can be rendered anywhere in the theme. Since Online Store 2.0, a template can be a JSON file that only lists sections, while Liquid templates contain code. In a theme with JSON templates, a fix to a page’s markup therefore goes into the section, snippet, block or layout file that renders it. Translated storefront text lives in JSON locale files that the theme reads with the t filter, and theme settings that a merchant changes in the theme editor are stored in the theme’s config/settings_data.json.

Where does a Shopware 6 theme keep its code?

Shopware’s documentation on Storefront themes describes a theme as a plugin, or in Shopware’s cloud an app, that holds no backend logic, only storefront presentation such as Twig templates and SCSS. A theme overrides a Storefront template by creating a file at the same path below its own Resources/views folder, extending the original with sw_extends and replacing only the Twig blocks it needs. Translated text comes from snippet JSON files under Resources/snippet, used in templates with the trans filter. Every theme inherits from Shopware’s default theme, @Storefront, and can inherit from another theme as well (Shopware on theme inheritance). One use Shopware names is a store-bought theme whose appearance should change “without changing the code of the theme itself”.

Where does WooCommerce on WordPress keep a theme’s code?

WooCommerce’s own template files contain the markup for the store’s frontend and HTML emails, and ship inside the plugin, in wp-content/plugins/woocommerce/templates/. WooCommerce’s guide to its template structure says that a template is changed by copying it into a woocommerce folder in a child theme, with the same file structure minus the templates folder; the copy then overrides the default. The theme is a classic WordPress theme of PHP templates, or a block theme, whose HTML templates in /templates take priority over WooCommerce’s default templates of the same name. A child theme modifies another theme, its parent, without editing the parent’s files: a template file of the same name in the child theme overrides the parent’s (WordPress Theme Handbook on child themes). A theme’s text strings are translated through its text domain, with a .pot template, plus a .po file and a compiled .mo file for each language (WordPress Theme Handbook on internationalization).

Where does a Magento Open Source or Adobe Commerce theme keep its code?

Adobe’s documentation places the storefront themes of Magento Open Source and Adobe Commerce under app/design/frontend/<Vendor>/ by convention (Adobe’s guide to theme structure). Inside a theme, a module that the theme changes gets its own folder, such as Magento_Catalog, with templates for .phtml files that override the module’s templates and layout for XML files that extend its layouts. Translations are .csv files in the theme’s i18n folder, styles are CSS or Less with the theme’s Less files in web/css/source (Adobe’s guide to CSS), and theme.xml names the theme’s parent when it inherits from another theme. A theme inherits templates, layouts and static files from its parent: Magento looks for a file in the current theme first, then in its ancestor themes, then in the module’s own files (Adobe on theme inheritance).

Can a theme update undo an accessibility fix?

Yes. A theme update can undo an accessibility fix when the fix sits in a file that the update replaces or when the update cannot carry the edit over, and on some platforms other changes can hide a fix. The platforms document this in different ways.

  • WooCommerce, template structure

    WooCommerce

    Changes made directly in a plugin or a parent theme disappear when it updates; WooCommerce recommends a child theme with template overrides.

  • WordPress Theme Handbook, templates

    WordPress block themes

    A template changed in the Site Editor is saved in the site’s database and takes priority over the template files of the theme and of a child theme; a fix in the file of such a template is then not what visitors see.

  • Adobe, themes and templates

    Magento Open Source and Adobe Commerce

    Upgrades can overwrite the Luma and Blank theme files and the default templates; Adobe’s recommended place for changes is a custom theme, which can inherit from Luma or Blank.

  • Shopware, theme configuration

    Shopware 6

    Shopware warns that a theme which overrides variables of a third-party theme can stop compiling if that theme later renames or removes them.

  • Shopify Help Center, updating themes

    Shopify

    Code edits that do not conflict with a theme update are carried into the updated copy; if they are incompatible with it, all code changes are removed from the updated copy.

Details: what each platform documents, which theme source gets the fixes, and regression protection

A theme update can undo an accessibility fix when the fix sits in a file that the update replaces or when the update cannot carry the edit over, and on some platforms other changes can hide a fix. The platforms document this in different ways.

  • WooCommerce. Changes made directly in a plugin or a parent theme “will disappear when the plugin or theme updates itself; a process that entirely deletes the old version and replaces it with a fresh, updated copy” (WooCommerce on template structure). WooCommerce recommends a child theme with template overrides instead. Those overrides do not update when WooCommerce’s core templates do, and WooCommerce’s System Status report can show a notice that an override is out of date.
  • WordPress block themes. A template that someone has changed in the Site Editor is saved in the site’s database and takes priority over the template files of the theme and of a child theme (WordPress Theme Handbook on templates and on the template hierarchy). A fix in the file of such a template is then not what visitors see.
  • Magento Open Source and Adobe Commerce. Adobe “strongly recommend[s]” not changing the Luma and Blank theme files or the default templates, because upgrades can overwrite them (Adobe on themes, Adobe on templates). Adobe’s recommended place for changes is a custom theme, which can inherit from Luma or Blank.
  • Shopware 6. A theme that inherits from a store-bought theme leaves that theme’s code unchanged, as described above. Shopware warns that a theme which overrides variables of a third-party theme can stop compiling if that theme later renames or removes them (Shopware on theme configuration).
  • Shopify. Shopify’s Help Center on updating themes says that code edits which do not conflict with a theme update are carried into the updated copy. If they are incompatible with the update, all code changes are removed from the updated copy, and keeping them means copying them to the new version. The update arrives as a draft theme whose name starts with “Updated copy of”.

Validiscan’s fixes are edits to the files of the theme source it receives. Which source that is, the theme in use, its child theme or an inheriting theme, is therefore a question for the shop’s developer before the work starts. When a WooCommerce theme reaches Validiscan as a ZIP, the customer portal asks for the theme folder “including the child theme if you use one”. Regression protection, a separate service billed monthly after a project, scans the shop again weekly or monthly and compares each run with the baseline. When a failure that was fixed is found again, for example after a theme update, the finding is reopened and reported as a regression. A re-scan finds only what automated checks can find on the pages it reaches.

How does Validiscan get to the theme’s source code?

Validiscan gets a copy of the theme’s source in one of three ways: a GitHub repository (all four platforms), a Theme Access password (Shopify only) or a ZIP of the theme (all four platforms, for a patch bundle). Without any of the three, no fix is prepared.

The three ways Validiscan gets a copy of the theme’s source
Way in Platforms What it takes
A GitHub repository All four The shop installs Validiscan’s GitHub App on the repository, or gives Validiscan an access token. Validiscan’s setup specifies the App’s permissions as write access to the repository’s contents and pull requests and read access to its metadata, and nothing else.
A Theme Access password Shopify only A password that Shopify’s Theme Access app creates; such passwords grant write access to themes only (the write_themes scope). Setting up the app takes the store owner, or a staff member or collaborator with the Themes permission.
A ZIP of the theme All four One file of up to 100 MB, uploaded in the customer portal, for a patch bundle.

Source: Shopify, Manage theme access

Details: the three ways in, the working folder, and what the portal asks for on each platform

Validiscan prepares fixes on a copy of the theme’s source, which it gets in one of three ways. It applies the fixes in a temporary working folder, which is deleted after each delivery.

  • A GitHub repository, on all four platforms. The shop installs Validiscan’s GitHub App on the repository, or gives Validiscan an access token. Validiscan’s setup specifies the App’s permissions as write access to the repository’s contents and pull requests and read access to its metadata, and nothing else.
  • A Theme Access password, on Shopify only. Shopify’s Theme Access app creates passwords that grant write access to themes only (the write_themes scope). Setting up the app takes the store owner, or a staff member or collaborator with the Themes permission. As of 6 October 2026, Shopify’s documentation says that the link to the password expires after 7 days or once it has been viewed, and that deleting the password revokes the access.
  • A ZIP of the theme, on all four platforms, for a patch bundle, uploaded in the customer portal as one file of up to 100 MB. The portal asks for the theme plugin’s folder under custom/plugins on Shopware, the theme folder under wp-content/themes on WooCommerce, the theme folder under app/design/frontend on Magento, and the theme file downloaded from the Shopify admin on Shopify.

Without any of the three, Validiscan has no code to change, and no fix is prepared.

How do the changes arrive, and who puts them live?

Validiscan delivers approved fixes as a pull request, an unpublished copy of the Shopify theme or, by default, a patch bundle. None of the three changes the shop’s published theme or the repository’s default branch: the merchant or their developer puts the changes live.

The three ways Validiscan delivers fixes
Way of delivery Platforms What Validiscan needs What arrives Who puts it live
Pull request All four, when the theme is kept in a GitHub repository Access to the repository through the GitHub App or a token A new branch with one commit per fix, and one pull request The developer, by merging and deploying
Unpublished theme copy Shopify only A Theme Access password A new unpublished theme named Validiscan A11y <yyyy-mm-dd>, with a preview link and steps for publishing The merchant, by publishing the theme in the Shopify admin
Patch bundle All four A ZIP of the current theme, uploaded in the customer portal; each change then points at the exact file and line A zip archive with the changes as patches, instructions, and the complete changed files The developer, by applying the changes and deploying the theme
Details: how the way of delivery is set

Validiscan delivers approved fixes as a pull request, as an unpublished copy of the Shopify theme, or as a patch bundle. The way is set per shop, not per platform, and the patch bundle is the default. None of the three changes the shop’s published theme or the repository’s default branch.

What does a pull request contain, and what does merging it change?

Validiscan creates a branch named validiscan/a11y-<date>-<id>, commits each fix on its own with a message of the form fix(a11y): <title> (WCAG <criteria>), and opens one pull request. Nothing is pushed to the default branch. The pull request text says: “Each fix is a separate commit, so you can review, keep or revert them one by one.” On Shopify, a theme can be connected to a GitHub branch through Shopify’s GitHub integration, which updates the theme whenever that branch changes. It also works the other way: Shopify commits changes made in the Shopify admin to the connected branch, and says this cannot be disabled. Theme editor changes are stored in setting files such as config/settings_data.json, a file Validiscan’s contrast fix can also change, so a pull request can conflict with a commit Shopify made on the branch it is merged into. If the branch a pull request is merged into is connected to the published theme, the merge itself changes the live shop.

What does an unpublished copy of the Shopify theme contain, and who publishes it?

Validiscan uses Shopify CLI to pull the live theme, applies the fixes, and pushes the result to a new unpublished theme named Validiscan A11y <yyyy-mm-dd>. Its delivery code refuses any push that carries --live, --allow-live or --publish or that targets the live theme, and it refuses theme publish outright. Shopify’s tutorial for developers who customize a merchant’s theme describes a similar route: upload the changed theme as a new, unpublished theme, and publish it after the merchant approves the changes. With Validiscan, the merchant publishes it.

When the merchant publishes the copy, the theme that was live before moves to the draft themes (Shopify Help Center on publishing themes), so it stays in the theme library and can be published again. The copy is the live theme as it was when Validiscan pulled it, including the theme settings in config/settings_data.json. Changes made to the live theme after that, in content, settings or code, are not in the copy: they have to be made in the copy as well before it is published. The copy is uploaded to the theme library with Shopify CLI, not installed from the Shopify Theme Store, and the Help Center page on updating themes says that updates are available only for themes installed from the Theme Store. Before publishing the copy, a developer checks whether Shopify still offers updates for it.

What is in a patch bundle?

A patch bundle is a zip archive for a developer. PATCH.md explains each change and how to apply it, validiscan-a11y.patch holds every change in one patch for git apply, diffs/ holds one patch per fix, and files/ holds the complete changed files, based on the uploaded theme ZIP. The bundle’s README states: “Nothing in this archive runs on your site by itself: there are no scripts, widgets or overlays.”

What should a developer check before a fix goes live?

Each commit’s diff, the affected pages on a preview or staging environment, and the changed elements with the keyboard and, where possible, a screen reader. That is the review checklist in Validiscan’s pull request; after the merge, Validiscan checks the affected pages with a verification scan.

The review checklist in Validiscan’s pull request
  1. Read the diff of each commit.
  2. Deploy the branch to a preview or staging environment, not to the live shop.
  3. Open the affected pages and check that they look and work as before.
  4. Operate the changed elements with the keyboard only: everything must be reachable and the focus visible.
  5. If possible, check the changed elements with a screen reader, for example NVDA or VoiceOver.
  6. Merge when satisfied. Validiscan then checks the affected pages with a verification scan.
Details: the checklist, the languages of the delivery documents, and the platform pages

The review checklist in Validiscan’s pull request asks the developer to review the fixes like any other theme change, and also to use the changed elements with the keyboard and, where possible, a screen reader. It lists these steps:

  1. Read the diff of each commit.
  2. Deploy the branch to a preview or staging environment, not to the live shop.
  3. Open the affected pages and check that they look and work as before.
  4. Operate the changed elements with the keyboard only: everything must be reachable and the focus visible.
  5. If possible, check the changed elements with a screen reader, for example NVDA or VoiceOver.
  6. Merge when satisfied. Validiscan then checks the affected pages with a verification scan.

The delivery documents (the pull request text, PATCH.md and the README) are written in English or German. Customers whose language is set to Danish, French or Spanish receive the English version.

Each platform page describes what the fixes change on that platform and what the merchant provides: accessibility fixes for Shopify themes, for Shopware themes, for WooCommerce themes and for Magento themes.

What does Validiscan do here?

On Shopify, Shopware, WooCommerce and Magento, Validiscan prepares fixes in the shop’s own theme code for failures whose fix belongs there; findings in the MANUAL tier get guidance only. Once the changes are live, a verification scan checks the affected pages, and the Remediation Evidence Package records what the scan found.

Details: the verification scan and what the Remediation Evidence Package records

On Shopify, Shopware, WooCommerce and Magento, Validiscan prepares fixes in the shop’s own theme code for failures whose fix belongs there, and delivers them in the three ways above. Findings in the MANUAL tier get guidance only, not a code change. Once the changes are live, a verification scan checks the affected pages again. The Remediation Evidence Package then records what was tested, what was changed and what the verification scan found, with the date of every scan. It is evidence of an evaluation and of remediation work, not a certificate. How a project runs, step by step

This guide is information, not legal advice.

Sources

28 sources: the developer documentation of Shopify, Shopware, WooCommerce and WordPress, and Adobe. Each was checked for this guide on 6 October 2026.

Shopify 12
  1. Theme architecture · Shopify · checked
  2. Online Store 2.0 · Shopify · checked
  3. Liquid templates · Shopify · checked
  4. Storefront locale files · Shopify · checked
  5. settings_data.json · Shopify · checked
  6. Shopify GitHub integration for themes · Shopify · checked
  7. Manage theme access · Shopify · checked
  8. theme pull (Shopify CLI) · Shopify · checked
  9. theme push (Shopify CLI) · Shopify · checked
  10. Customize a merchant theme · Shopify · checked
  11. Updating themes · Shopify Help Center · checked
  12. Publishing themes · Shopify Help Center · checked
Shopware 5
  1. Storefront Themes · Shopware · checked
  2. Customize Templates · Shopware · checked
  3. Add Translations · Shopware · checked
  4. Theme Inheritance · Shopware · checked
  5. Theme Configuration · Shopware · checked
WooCommerce and WordPress 6
  1. Template structure & Overriding templates via a theme · WooCommerce · checked
  2. Theming for Woo blocks · WooCommerce · checked
  3. Child Themes (Theme Handbook) · WordPress.org · checked
  4. Templates (Theme Handbook) · WordPress.org · checked
  5. Template Hierarchy (Theme Handbook) · WordPress.org · checked
  6. Internationalization (Theme Handbook) · WordPress.org · checked
Magento Open Source and Adobe Commerce 5
  1. Theme structure · Adobe (Adobe Commerce frontend development guide) · checked
  2. Themes · Adobe (Adobe Commerce frontend development guide) · checked
  3. Templates · Adobe (Adobe Commerce frontend development guide) · checked
  4. Theme inheritance · Adobe (Adobe Commerce frontend development guide) · checked
  5. Cascading style sheets (CSS) · Adobe (Adobe Commerce frontend development guide) · checked

Read next

All 6 guides

Start with a free check of your shop.

Send your shop’s address. Validiscan scans it and replies with every failure the scan can prove, with the page and the code.

Request a free check

Or write to info@validiscan.com.

What the free check covers, and what it leaves out
You send
your shop’s address
Pages scanned
up to 15
You get
every failure the scan can prove, with the page and the code
On your shop
public pages only; no login, nothing bought, no forms sent
What it is not
a full audit

Write to Validiscan

For a free check, give the address of your shop and its platform.

Validiscan uses what you send to answer you. Privacy notice