goodkeel

Hreflang Manager documentation

How the app works, what it does on each page, and what the audit checks. For quick setup steps and common questions, see support.

On this page: Overview · Plans · Setup · The market map · Which pages get tags · Keeping tags up to date · The audit · Audit findings · Setup checklist states · Password-protected storefronts · Troubleshooting · Limits · Data and uninstalling

Overview

Hreflang tags tell search engines which version of a page to show to which language and region. Hreflang Manager reads your markets, languages and translated URL handles from Shopify, and adds one set of hreflang tags to each storefront page through a theme app embed. A separate audit fetches a sample of your live pages and checks the tags against Google's guidelines.

What it doesn't do: it doesn't translate content, create markets, change your URLs, or promise better rankings. It covers one Shopify store and its markets; it doesn't link separate stores.

Plans

FreePro
Market map and setup checklistYesYes
Audit of your live pagesWhen you run itWhen you run it, and every week
Hreflang tags on your storefrontNoYes

Pro has a 14-day free trial. Development stores get every Pro feature at no charge. Current prices are on the Shopify App Store listing.

On Free, the app adds no hreflang tags. Keep Shopify's own automatic hreflang tags turned on while you're on Free, so your store still has hreflang. The setup checklist says so on step 2. If you move from Pro to Free, the app stops adding its tags and you should turn Shopify's automatic tags back on.

Setup

  1. Install the app and approve the permissions. All are read-only: markets, languages, translations, products, content and publications.
  2. Turn on the app embed. Click Enable app embed in the setup checklist. It opens the theme editor with the embed selected; click Save.
  3. Turn off Shopify's automatic hreflang tags (Pro). Click Open Preferences, or go to Online Store > Preferences, untick Automatic hreflang tags and save. Shopify's storefront cache can take a few minutes to drop its tags.
  4. Check the market map. One row per hreflang code the app publishes (see below).
  5. Run an audit and fix what it reports.

The market map

The market map is the list of hreflang codes the app publishes, each with the root URL it points to. It's shown on the app's home page with the market, language, hreflang code and root URL of each row. It's built like this:

For example (simplified), a store with English and French on its primary domain (United States) and a Canada market at /en-ca and /fr-ca gets these tags on a product page:

<!-- hreflang-manager:start -->
<link rel="alternate" hreflang="en" href="https://your-store.com/products/snowboard">
<link rel="alternate" hreflang="en-US" href="https://your-store.com/products/snowboard">
<link rel="alternate" hreflang="fr" href="https://your-store.com/fr/products/planche">
<link rel="alternate" hreflang="fr-US" href="https://your-store.com/fr/products/planche">
<link rel="alternate" hreflang="en-CA" href="https://your-store.com/en-ca/products/snowboard">
<link rel="alternate" hreflang="fr-CA" href="https://your-store.com/fr-ca/products/planche">
<link rel="alternate" hreflang="x-default" href="https://your-store.com/products/snowboard">
<!-- hreflang-manager:end -->

The comments mark the app's tags, so you (and the audit) can tell them apart from tags added by the theme, Shopify or another app.

Which pages get tags

Every storefront page gets tags, except pages that shouldn't be in search: the 404 page, search results, the cart, the password page, gift cards and customer account pages. On those the embed prints <!-- hreflang-manager:skip --> and no tags.

On each page, each alternate URL is the same page in the other market or language:

Keeping tags up to date

The app's Per-page sync section shows the last full sync, and lists the products, collections and pages with translated handles or limited market availability.

The audit

The audit fetches a sample of your live storefront the way a search engine would, and checks the hreflang tags on each page and between pages.

Results are grouped by problem, worst first. Each problem shows how many pages it affects, an example, the fix, and its basis: Google's published guidelines, or common best practice.

Audit findings

FindingWhat it meansBasis
Tags outside the page headSome hreflang tags are in the page body, where Google ignores them. Usually markup injected higher in the head closes it early.Google
Alternate URLs that aren't full URLsAn alternate has no protocol and domain. Alternates must be full URLs.Google
Invalid language or country codesA code isn't a valid language, or language and region, code.Google
Pages that don't list themselvesA page lists its other versions but not its own URL.Google
Missing return linksPage A lists page B, but B doesn't list A, or the two disagree about which language is which. Google ignores one-way pairs.Google
Canonical points elsewhereA page with hreflang tags, or one of its alternates, has a canonical pointing to a different URL. Alternates should be canonical pages.Google
One code, several URLsThe same code points to different URLs on one page.Best practice
Conflicting x-defaultA page has more than one x-default, or pages in the same set name different x-default pages.Best practice
Tags from more than one sourceThe page has the app's tags and tags from Shopify's automatic setting, the theme or another app.Best practice
Alternates that redirectAn alternate URL redirects. Alternates should point straight at the final URL. Usually a changed handle.Best practice
Alternates that return an errorAn alternate URL returns an error such as 404, so it can't link back.Best practice
Alternates marked noindexAn alternate page tells search engines not to index it, so it won't be shown to that audience.Best practice

Google's guidelines: Tell Google about localized versions of your page.

Setup checklist states

Steps 1 and 2 are checked by reading your storefront home page the way a visitor does. The result is kept for 10 minutes; Check again reads it at once.

Password-protected storefronts

If your storefront has a password, the setup check and the audit stop at the password page. Save the storefront password in the app's Storefront password section and they open your store the way a visitor does. The password is stored encrypted, sent only to your own storefront, never shown back or logged, and you can remove it at any time. Or remove the password in Online Store > Preferences.

Troubleshooting

My pages have no hreflang tags from the app

View the page source and look for a comment starting with hreflang-manager:

The audit says tags come from more than one source

Turn off Online Store > Preferences > Automatic hreflang tags, remove any hreflang snippet from the theme, and turn off hreflang in other apps (some translation apps add their own). Then run the audit again.

A translated URL in the tags is out of date

Translations of pages, blogs and blog posts are picked up by the daily sync. Click Refresh to update at once.

An alternate returns "not found"

Check the product is active and available in that market's catalog, then click Refresh. Collections are always listed for every market (see Limits).

The audit stopped early

The reason is shown. Usually robots.txt couldn't be read, or the storefront has a password (see above). Run it again once fixed.

Limits

Data and uninstalling

The app keeps your store's domain and access token, the alternate URLs it works out, your audit results, and your storefront password if you save it (encrypted). Nothing about your customers. When you uninstall, the embed and its tags go with the app and we delete your store's data. Turn Shopify's automatic hreflang tags back on so your store still has hreflang. See the privacy policy and the changelog.