Features
SEO
Canonical addresses, language links, sharing cards and structured data on every public page, with titles and descriptions from Yoast SEO, Rank Math or the Companion's own fields.
A headless store lives or dies by how well search engines understand it. The storefront takes full responsibility for that: it prints every title, meta tag, sharing card and structured-data block itself, consistently, on every public page. WordPress supplies only the words, from the SEO plugin your team already uses or from the Companion plugin’s own fields.
- Where it shows
- Every public page, plus
/sitemap.xml,/robots.txtand/llms.txt - Configure in
- StoreFront › Settings › SEO; the SEO box (or Yoast SEO / Rank Math) on each product, term, post and page
- Requires
SITE_URLset on the production storefront- Try it in Demo Mode
- View the page source of any demo product to see its tags and structured data
What search engines and shoppers get
Section titled “What search engines and shoppers get”- A canonical address for every page, built from the storefront’s public URL.
- Links between languages (
hreflang) on a multilingual store, so each Shopper finds the right version. - Sharing cards for Facebook, X and other networks: title, description and image.
- Structured data that describes your products, prices, ratings, breadcrumbs and articles.
- Private pages kept private: account, cart, checkout and similar pages are never indexed.
SEO fields
Section titled “SEO fields”Each product, product category, tag, brand, Journal article and policy page can carry its own:
| Field | Used for |
|---|---|
| SEO title | The title in search results and on the browser tab, used exactly as typed. |
| Meta description | The text under the title in search results. |
| Social title, description and image | The card shown when a link is shared. Each falls back to the SEO value, then the page’s own image. |
| Hide from search | Asks search engines to leave the page out of results. Visitors can still open it. |
Bring your SEO plugin. If Yoast SEO or Rank Math is active, keep editing in its box: the storefront reads its values first, and the Companion plugin quietly keeps a copy, so nothing is lost if the plugin is later deactivated. A read-only SEO on the storefront panel under the plugin’s box shows what the storefront will actually print and where each value came from. With neither plugin installed, the Companion’s own SEO box appears on products, posts, pages and term screens instead.
Sync SEO fills blanks in both directions between the Companion and your SEO plugin, in the background. It never overwrites a value. Run it once after activating or switching SEO plugins.
Patterns and page settings
Section titled “Patterns and page settings”Most items never need hand-written SEO. Set a title and description pattern for each kind of item
(products, categories, tags, brands, articles and policy pages), using placeholders such as {name},
{brand}, {category}, {site} and {page}. A placeholder with nothing to fill disappears along with its
separator, and later pages of a listing are numbered automatically.
For pages with no item behind them, such as Home, Shop, Blog, Search results, About us and FAQ, set the title, description and sharing image directly. A website name and default social image complete the picture.
When a title or description is needed, the storefront uses the first that exists: the value typed in your SEO plugin, the Companion’s own copy, the pattern for that kind of item, then its own translated default.
Structured data
Section titled “Structured data”Every public page carries JSON-LD that search engines read for rich results:
- WebSite with a site search action, and the Organization behind it, linked into each page’s graph;
- BreadcrumbList wherever breadcrumbs appear;
- Product with offers, rating and reviews on product pages;
- ItemList on shop, category, tag and brand listings;
- BlogPosting on Journal articles.
Private pages stay out of search
Section titled “Private pages stay out of search”Account pages, sign-in and registration, cart, checkout, order confirmation, search results, compare,
email links and product previews all tell search engines noindex. Listings with no products are not
indexed either, and later pages of a listing are numbered so they don’t compete with page one.
Discovery files
Section titled “Discovery files”/sitemap.xmllists every public page in every language, with its language alternates: fixed pages, policy pages, categories, brands, tags, products and articles./robots.txtwelcomes every crawler, AI assistants included, bars only technical paths such as/api/and/preview/, and points to the sitemap./llms.txtis a short Markdown guide to your store for AI assistants, following the llmstxt.org convention: what the store is, and where its catalogue, help pages and articles are.
One address per product
Section titled “One address per product”Once the Storefront URL is set, a published product’s old WordPress address permanently redirects (301) to its storefront page. Search engines consolidate on one address instead of two competing pages.
Set it up
Section titled “Set it up”- Make sure the deployment sets
SITE_URLto the storefront’s public address. See Environment variables. - Fill in the website name, default social image, patterns and page settings under StoreFrontSettingsSEO.
- Edit per-item SEO in Yoast SEO, Rank Math or the Companion’s SEO box, and run Sync SEO once if you use a plugin.
The full walkthrough is in SEO settings.
Good to know
Section titled “Good to know”- Plugin templates don’t apply. Title and description templates set inside Yoast SEO or Rank Math do not affect the storefront; it follows the patterns on the Companion’s SEO tab.
- Both plugins active? The SEO tab decides which one the storefront follows. Rank Math is the default.
- Twitter-specific fields stored by an SEO plugin are kept, but have no input in the Companion’s own box.
- The product redirect can be turned off only by a developer, with the
rsc_seo_redirect_productfilter. - Per-language SEO. Patterns and page settings can differ by language; the language list is a developer setting today.
- Changes reach the live store within about five minutes.