Skip to content
StoreA11y

WooCommerce · 1.3.1 Info and Relationships (Level A)

Page has no level-one heading on WooCommerce

The page has no <h1>. The h1 is what a screen-reader user jumps to first to confirm what page they landed on. Without it the page has no announced identity beyond its title.

Which WCAG criterion this fails

  • Does not meet 1.3.1 Info and Relationships (Level A)
  • Does not meet 2.4.6 Headings and Labels (Level AA)

How to fix it on WooCommerce

Everything below is done from Appearance > Theme File Editor, or your child theme over SFTP. Take a copy of the theme before editing.

  1. Product pages: the product title should be the <h1> — check sections/main-product.liquid or snippets/product-title.liquid.
  2. Collection pages: the collection title, in sections/main-collection-banner.liquid.
  3. Homepage: the hero headline. If the design shows the logo instead, make the logo's wrapper an <h1> containing the logo image with the store name as its alt text.
  4. Exactly one h1 per page. If the theme also puts an h1 on the logo in the header on every page, downgrade that one to a <div> on non-home pages — Dawn already does this with an {% if request.page_type == 'index' %} check.

Where this usually lives

woocommerce/single-product/title.php, archive-product.php page title, and the theme header logo markup

Paths given for Storefront, Astra, Flatsome and other WooCommerce themes. A heavily customised theme may differ; the CSS selector in your scan report points at the exact element.

Code

{%- if request.page_type == 'index' -%}
  <h1 class="header__heading">{{ shop.name }}</h1>
{%- else -%}
  <div class="header__heading">{{ shop.name }}</div>
{%- endif -%}

How to confirm it is fixed

Re-run the scan. This rule should drop out of the findings entirely. If the instance count falls but does not reach zero, the same defect exists in another template — product cards and quick-view modals are the usual second home for it.

Effort: low. Rule id: page-has-heading-one (axe-core).