SEO
Titles and descriptions for search engines, social sharing tags, structured data — and the one sentence that decides when any of it takes effect.
Every page has its own Page SEO panel: open Pages on the rail and choose SEO from the page's menu. Products and articles have their own SEO tab in their forms.
SEO changes take effect the next time you publish the site. The panel says exactly that. Editing the meta and then opening the live page right away shows you nothing — because you have not published.
The basics
Meta title — the page's title in search results.
Meta description — the snippet under the title.
Keywords — comma separated.
Canonical URL — "The preferred URL for this page. Leave blank to use its own URL." Fill it in only when the same content lives at more than one address and you want to tell search engines which is the real one.
The preview beside it shows roughly how the search result will look.
Social share (Open Graph)
How the page appears when someone pastes the link into Facebook, Slack, X.
"Blank fields fall back to the title, description, and image above." You only fill these in when the shared version should say something different from the search version.
| Field | Falls back to |
|---|---|
| Social title | The meta title |
| Social description | The meta description |
| Social image URL | The primary image |
| Twitter card | Default · Summary · Summary, large image |
Search engine visibility
Two switches, both to be used carefully:
Hide from search engines (noindex) — "Search engines won't list this page in results." For thank-you pages, internal pages, campaign pages meant only for people with the link.
Don't follow links (nofollow) — "Search engines won't follow links on this page."
Turning noindex on for the homepage by mistake is a very quiet way to vanish
from Google. Nothing warns you, because sometimes people genuinely mean it.
The same block also holds Members only — not SEO, but a sign-in gate on the whole page. See Customer accounts.
Advanced
Custom meta tags
"For tags the fields above don't cover — e.g. author or og:site_name."
Each tag has its attribute kind (name, property, http-equiv), a key, its
content, and an Include this tag switch — so you can disable one temporarily
without deleting it.
Structured data (JSON-LD)
"Each block is emitted as its own <script type="application/ld+json">." This
is what lets search results show star ratings, prices and stock.
There is a Product template so you do not start from nothing.
The editor checks the JSON as you type, but notice the small print:
"Not valid JSON — this block will still be saved."
It warns rather than blocks. A broken block is emitted onto the page and search engines ignore it — and nothing on the live page tells you. Wait for Valid JSON before publishing.
At site level
Manage → Settings → General carries a Store description: "A short summary of your store, used for previews and SEO." It is the fallback description for a page that has none of its own.
The site language in Settings → Currency & region also reaches published
pages, as the lang attribute — which is how a search engine knows what
language the page is in. See
Language and region.
A store in more than one language
With the Multilingual app, every page also exists
under each extra language's address — /en/about, say. What search engines are
told about those addresses depends on one question: has this page actually
been translated into that language?
- Translated — the language version is indexed normally, listed in the
page's
hreflangalternates and insitemap.xml. - Not translated — the address still works for a shopper who follows it,
but it is served noindex, with its canonical pointing at the
default-language page. It is left out of
hreflangand out of the sitemap.
The reason: an untranslated /en/ page is the same words as the original under
a second address, and search engines treat that as duplicate content. Telling
them "this is the original, over there" keeps the ranking on the page you
wrote. The same rule applies to each product, category, article and course one
by one — translating one product's name no longer advertises every product in
that language.
What does not make a page count as translated — each one is a trap people fall into:
- Translating only the header, the footer or the cart drawer. Those are shared by every page; counting them would turn every page on the site "translated" the moment someone translated the menu.
- Translating only the page's SEO title and description. The translated title is still shown — in the browser tab and in results — but a page whose body is still in the original language is not an English page because its title is.
- Translating only the address (the URL slug).
Translate something on the page itself — a heading, a paragraph, a button — and it counts.
A checklist before you announce anything
- The homepage has a meta title and description.
- No page has
noindexon by accident. - The share image looks right when you paste a test link into a chat.
- Every JSON-LD block reads Valid JSON.
- The primary domain is set, and the free address redirects to it — see Your own domain.
- Publish. Before this step, no SEO change is in effect.
Updated 26/09/2026