Plataformas de comércio headless
«A platform-by-platform SEO comparison of the major headless commerce engines — Shopify Hydrogen, BigCommerce Catalyst, commercetools, Salesforce PWA Kit, Medusa, Saleor, and Elastic Path — covering what each ships out of the box for metadata, sitemaps, redirects, and preview-environment safety, and how to choose.» _(Tradução)_ (Síntese localizada do campo description em português para conferência na revisão nativa.)
«Every headless commerce platform's marketing page claims it's SEO-optimized out of the box. The reality is a spectrum. Shopify Hydrogen ships the most real scaffolding — a getSeoMeta metadata utility, sitemap routes, robots.txt, and automatic crawler-blocking on preview deployments. BigCommerce Catalyst proxies BigCommerce's own sitemap and uses Next.js App Router metadata conventions. commercetools Frontend and Salesforce PWA Kit give you SDK helpers, not shipped routes — you assemble sitemaps yourself. Medusa, Saleor, and Elastic Path are pure commerce APIs and ship nothing SEO-specific; your Next.js frontend does all the work. Platform choice determines how much scaffolding you inherit, not whether your pages are crawlable — that's still the rendering decision the headless ecommerce hub owns. The two differentiated risks worth budgeting for: preview/staging environments getting indexed (Hydrogen blocks this automatically; others don't guarantee it), and redirect maps on migration (no platform automates them).» _(Tradução)_ (Síntese localizada do campo tldr em português para conferência na revisão nativa.)
«> TL;DR — A “headless commerce platform” is the engine that runs your
products, cart, and checkout and hands that data to a separate storefront you build. Every vendor claims theirs is “SEO-optimized out of the box.” That’s only half true. Some (Shopify Hydrogen, BigCommerce Catalyst) ship real SEO scaffolding — a sitemap, a
robots.txt, a metadata helper. Others (Medusa, Saleor, Elastic Path) ship nothing SEO-specific and leave all of it to you. Pick based on how much you want to build versus inherit. » (Tradução) (Síntese localizada do trecho três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
« Evidência desta afirmação Choosing a commerce API does not itself determine search rendering; the storefront must produce discoverable content, links, status codes, and metadata. Escopo: Google requirements for JavaScript storefronts. Confiança: alta · Verificado: Google Search Central: JavaScript SEO basics Evidência desta afirmação Shopify describes Hydrogen as its React-based framework for custom storefronts and Oxygen as its deployment platform. Escopo: Shopify-specific platform capability, not Google guidance. Confiança: alta · Verificado: Shopify Developers: Hydrogen » (Tradução) (Síntese localizada do trecho quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## What we’re actually comparing here » (Tradução) (Síntese localizada do trecho cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«In a normal Shopify or WooCommerce store, one system does everything: it stores your products, processes orders, and renders the pages shoppers and Google see. A headless setup splits that apart. A commerce engine handles products, inventory, and checkout, and hands that data through an API to a separate frontend that renders what people actually look at. » (Tradução) (Síntese localizada do trecho seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The commerce engine is the “headless commerce platform.” The major ones as of mid-2026 are Shopify (through its Hydrogen framework and Storefront API), BigCommerce (through Catalyst), commercetools, Salesforce Commerce Cloud (through PWA Kit), Medusa, Saleor, and Elastic Path. » (Tradução) (Síntese localizada do trecho sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## The one thing that matters for choosing » (Tradução) (Síntese localizada do trecho oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«For SEO, the platforms don’t really differ on whether your pages can be crawled — that comes down to how your frontend renders pages, which the Headless Ecommerce SEO hub covers in full (SSR, SSG, CSR). What they differ on is how much SEO plumbing they hand you for free versus how much you have to build yourself. » (Tradução) (Síntese localizada do trecho nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Think of it as three groups: » (Tradução) (Síntese localizada do trecho dez, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- They give you a lot. Shopify Hydrogen and BigCommerce Catalyst both ship a
working example storefront with a sitemap, a robots.txt, and a way to set your
title tags and meta descriptions already wired in.
- They give you helpers, not the finished thing. commercetools and Salesforce PWA Kit hand you the tools to build a sitemap but make you assemble it yourself.
- They give you nothing SEO-specific. Medusa, Saleor, and Elastic Path are
pure “here’s your product data through an API” engines. Every bit of SEO — the
sitemap, the metadata, the
robots.txt— is on you (or on whatever frontend framework you build, usually Next.js). » (Tradução) (Síntese localizada do trecho onze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## The thing most people get wrong » (Tradução) (Síntese localizada do trecho doze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«“SEO-optimized out of the box” is a spectrum, not a checkbox. Every vendor’s marketing page says it. But Elastic Path’s own SEO blog post doesn’t even mention sitemaps, canonical tags, or redirects — so “out of the box” can mean almost nothing. Don’t take the claim at face value. Ask the specific question: what does this platform ship for sitemaps, metadata, redirects, and keeping my staging site out of Google? The answers vary a lot. » (Tradução) (Síntese localizada do trecho treze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Want the platform-by-platform breakdown, the preview-environment gotcha, and a decision framework for picking one? Switch to the Avançado tab. » (Tradução) (Síntese localizada do trecho catorze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«> TL;DR — Headless commerce platforms sit on a spectrum from “ships real SEO
scaffolding” to “leaves everything to you.” Shopify Hydrogen ships the most — a
getSeoMetautility, sitemap routes,robots.txt, and (via Oxygen) automatic crawler-blocking on preview deployments. BigCommerce Catalyst proxies BigCommerce’s own sitemap index and uses Next.js App RoutergenerateMetadataconventions. commercetools Frontend and Salesforce PWA Kit give you SDK/API helpers, not shipped routes — you assemble the sitemap yourself, with real pagination limits. Medusa, Saleor, and Elastic Path ship nothing SEO-specific; the frontend owns everything. Two risks are genuinely differentiated by platform: preview-environment leakage (Hydrogen auto-blocks crawlers on shareable links; others don’t guarantee it) and redirect maps (no platform automates them). Platform choice sets how much scaffolding you inherit — not whether pages are crawlable, which is still the rendering decision the hub owns. » (Tradução) (Síntese localizada do trecho dezessete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
« Evidência desta afirmação Choosing a commerce API does not itself determine search rendering; the storefront must produce discoverable content, links, status codes, and metadata. Escopo: Google requirements for JavaScript storefronts. Confiança: alta · Verificado: Google Search Central: JavaScript SEO basics Evidência desta afirmação Shopify describes Hydrogen as its React-based framework for custom storefronts and Oxygen as its deployment platform. Escopo: Shopify-specific platform capability, not Google guidance. Confiança: alta · Verificado: Shopify Developers: Hydrogen » (Tradução) (Síntese localizada do trecho dezoito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Platform choice is not the rendering decision » (Tradução) (Síntese localizada do trecho dezenove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Start here, because it’s the single most common confusion. Whether Googlebot gets real HTML or an empty shell is decided by your frontend’s rendering model — server-side rendering (SSR), static generation (SSG), or client-side rendering (CSR). That’s the frontend framework’s job, and the Headless Ecommerce SEO hub covers it in depth. I won’t re-derive SSR vs. CSR here. » (Tradução) (Síntese localizada do trecho vinte, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«What the commerce platform does decide is how much SEO scaffolding you inherit —
the sitemap, the metadata plumbing, the robots.txt, the preview-environment
handling. A pristine SSR setup on Medusa still has no sitemap until you build one; a
CSR mistake on Hydrogen still tanks a product page even though Hydrogen ships every
other piece. Keep the two axes separate: rendering = crawlability; platform =
scaffolding.
» (Tradução) (Síntese localizada do trecho vinte e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## The SEO-tooling spectrum » (Tradução) (Síntese localizada do trecho vinte e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Here’s where the seven platforms land: » (Tradução) (Síntese localizada do trecho vinte e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Ships real tooling (a working reference storefront with SEO wired in): Shopify Hydrogen, BigCommerce Catalyst. » (Tradução) (Síntese localizada do trecho vinte e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Ships SDK helpers, not routes (you assemble the sitemap yourself): commercetools Frontend, Salesforce PWA Kit. » (Tradução) (Síntese localizada do trecho vinte e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Ships nothing SEO-specific (pure commerce API; frontend owns all of it): Medusa, Saleor, Elastic Path. » (Tradução) (Síntese localizada do trecho vinte e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«That framing is the whole article. The rest is the per-platform detail. » (Tradução) (Síntese localizada do trecho vinte e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Shopify Hydrogen (Storefront API) » (Tradução) (Síntese localizada do trecho vinte e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Hydrogen is Shopify’s headless framework, and it ships the most complete SEO
scaffolding of anything reviewed here. One correction up front: Hydrogen is not
Remix-based anymore. The npm registry shows @shopify/hydrogen 2026.4.4 peer-depending
on react-router ~7.16.0 with no Remix dependency at all, and Shopify’s own
@shopify/remix-oxygen package now carries a formal deprecation notice telling you to
import from react-router instead. Shopify’s own SEO doc hasn’t caught up to its
own package metadata — as of this check it still reads “Hydrogen uses Remix’s
built-in meta features for SEO tags” — so don’t take that line at face value if
you’re scaffolding a new project; check package.json, not the prose.
» (Tradução) (Síntese localizada do trecho vinte e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Metadata — a purpose-built utility. Whatever the doc calls the underlying router,
Hydrogen still ships the getSeoMeta utility, which makes it easier and more
consistent to render SEO meta tags. That getSeoMeta helper handles titles,
descriptions, images, canonical URLs, and JSON-LD — an actual metadata abstraction,
not “bring your own <head>.” It’s the only platform here that ships a dedicated
SEO-metadata utility. Shopify also notes that “By default Hydrogen removes query
parameters from canonical URLs” — a sensible default you can override in your meta
exports.
» (Tradução) (Síntese localizada do trecho trinta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Sitemap — shipped and self-refreshing. The Hydrogen skeleton template includes
sitemap.xml and per-type sitemap routes out of the box, and its getSitemap
utility generates per-resource-type sitemaps with locale alternates. The sitemap
files are cached for 24 hours, so publishing or unpublishing a product updates the
sitemap automatically within that window — no scheduled job to babysit.
» (Tradução) (Síntese localizada do trecho trinta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«robots.txt — shipped, with a preview safeguard. The template ships a
robots.txt route. And here’s the differentiator: per Shopify’s SEO docs, “If you
make a non-production deployment accessible with a shareable link or an auth bypass
token, then Oxygen overrides the deployment’s robots.txt file with a disallow
rule for all bots and crawlers.” Oxygen (Shopify’s Hydrogen hosting) automatically
blocks all crawlers on preview/shareable-link deployments. That’s a real problem —
duplicate staging content getting indexed — that most platforms leave you to solve
by hand, and Hydrogen just handles.
» (Tradução) (Síntese localizada do trecho trinta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«What’s left to you: verify no product or category route was accidentally left as a resource route that skips SSR (React Router’s framework mode uses the same server-loader pattern Remix used before Hydrogen’s migration), and configure Oxygen caching (the hub’s advanced lens covers stale-cache risk). » (Tradução) (Síntese localizada do trecho trinta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## BigCommerce headless (Catalyst) » (Tradução) (Síntese localizada do trecho trinta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Catalyst is BigCommerce’s Next.js App Router reference storefront. Its SEO scaffolding is real but architecturally different from Hydrogen’s. » (Tradução) (Síntese localizada do trecho trinta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Sitemap — proxied, not generated. Per BigCommerce’s Catalyst docs, “Catalyst acts
as an intermediary when handling requests to /sitemap.xml.” It fetches the sitemap
index from BigCommerce (against the channel’s canonical URL) and returns the XML. So
the sitemap appears to be served from your storefront, but the data lives in
BigCommerce, not in your frontend codebase — the opposite of Hydrogen, where the
sitemap route lives inside the app. BigCommerce also warns that “If your storefront
also uses third-party systems that generate content with different URLs, you will need
to submit multiple sitemaps to cover the URLs from various sources,” and notes the
sitemaps “don’t need to reside on the same domain as the website they represent” —
flexible for multi-channel setups, but a footgun if per-channel canonical domains
aren’t configured correctly.
» (Tradução) (Síntese localizada do trecho trinta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Metadata — Next.js conventions. Catalyst populates generateMetadata and the
alternates.canonical field per route from Storefront API GraphQL data, server-side.
That’s the standard App Router pattern the Next.js SEO article already documents in
detail — I’ll point there rather than re-explain generateMetadata syntax.
» (Tradução) (Síntese localizada do trecho trinta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The migration warning. If you’re moving from BigCommerce’s older Stencil theme to
Catalyst, URL parity is the whole ballgame. As 1Digital Agency’s Dan Kogan puts it in
his Catalyst SEO practitioner guide:
“Do not change established URLs on a Stencil-to-Catalyst migration. Every product,
category, and content URL should match the legacy structure exactly, or you need a
complete 301 redirect map.” He also flags recurring Catalyst regressions —
generateMetadata returning a client-only fallback because the GraphQL query got
thrown to a client component, canonical tags missing on paginated listing pages, and
Product JSON-LD emitted twice (once by a custom component, once by a third-party
app). All of those are worth a pre-launch check.
» (Tradução) (Síntese localizada do trecho trinta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## commercetools (Frontend / composable storefronts) » (Tradução) (Síntese localizada do trecho trinta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«commercetools is the enterprise “composable/MACH” option, and its SEO scaffolding is proportionally thinner — you get SDK helper methods, not shipped routes. » (Tradução) (Síntese localizada do trecho quarenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Per commercetools’ Frontend docs, the platform generates three separate sitemaps —
static pages, product pages, and category pages — combined into a sitemap index. Static
pages come from sdk.page.getPages(), products from extensions.product.query(), and
categories from extensions.product.queryCategories(). But setup is not automatic:
it requires the Frontend Add-On plus manually creating three Next.js route handlers
(sitemap-static.xml/route.tsx, sitemap-products.xml/route.tsx,
sitemap-categories.xml/route.tsx) and a postbuild script to assemble the final
/sitemap.xml. And the product/category queries are cursor-paginated with a 500-item
limit per request, so a large catalog needs pagination logic inside your sitemap
generator. This is the most build-it-yourself of the enterprise platforms for sitemaps
specifically — which tracks with commercetools’ whole no-opinionated-frontend
positioning.
» (Tradução) (Síntese localizada do trecho quarenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Salesforce Commerce Cloud headless (PWA Kit / Composable Storefront) » (Tradução) (Síntese localizada do trecho quarenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«PWA Kit’s SEO tooling is the most fragmented and manual of the platforms with an official reference storefront. » (Tradução) (Síntese localizada do trecho quarenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Sitemap — the path branches. Per Salesforce’s docs, if your routes are configured
in Business Manager, you create the sitemap in Business Manager; if routes are managed
outside it (custom PWA Kit routing), you build or supplement the sitemap via an API
endpoint instead. There’s no single automatic path — it depends on how the storefront
was set up. For PWA Kit deployments specifically, the manual steps include adding a path
in the ssr.js config, updating the ssrShared property, redeploying the bundle, and
verifying the sitemap is accessible. Salesforce’s own guidance is to schedule a job to
keep the sitemap current — meaning no automatic refresh on catalog changes, unlike
Hydrogen’s 24-hour auto-update. Built-in sitemap handling has been a
requested-but-manual area
on the PWA Kit GitHub repo — useful color that this is a known gap, though the issue is
community signal, not an official statement.
» (Tradução) (Síntese localizada do trecho quarenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Metadata — tied to Page Designer. PWA Kit’s usePage() hook (from
@salesforce/commerce-sdk-react) and <Page> component expose page name, description,
and route for SEO metadata — but that’s tied to Salesforce’s CMS-like Page Designer
content model, not a dedicated SEO utility like Hydrogen’s getSeoMeta.
» (Tradução) (Síntese localizada do trecho quarenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Medusa, Saleor, and Elastic Path — pure APIs » (Tradução) (Síntese localizada do trecho quarenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«These three are the “leaves everything to you” tier, and it’s worth being blunt about what that means. » (Tradução) (Síntese localizada do trecho quarenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Medusa is a pure commerce backend. There’s no dedicated Medusa SEO documentation because Medusa has no opinion on frontend rendering at all. Its Next.js Starter Storefront supports the App Router with React Server Components (so SSR is available), but metadata, sitemap, and canonical mechanics are entirely inherited from whatever Next.js conventions you implement. In practice virtually every Medusa storefront is Next.js — so the Next.js SEO article is your real reference, not Medusa’s docs. » (Tradução) (Síntese localizada do trecho quarenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Saleor is the same story: a GraphQL-first headless API (Python/Django backend) with community and Vercel-maintained Next.js storefront templates. SEO is 100% a function of the chosen frontend. Same tier as Medusa. » (Tradução) (Síntese localizada do trecho quarenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Elastic Path is API-first with metadata as raw fields you wire up yourself. Its product and category entities support custom fields for SEO metadata that can be, in Elastic Path’s words, “accessed via APIs just like the content that you render to your customers” — but that’s a build-your-own-schema pattern, not a shipped utility. Its slug resource is described as a “lower case, uri friendly string” for building URLs. Notably, Elastic Path’s own SEO for headless commerce blog post (by Kirsten Aebersold — vendor content, not neutral) does say “If you’re dynamically building a page with a JavaScript framework alone, you might want to look into serving up cached versions of the pages to the bots” — but it never covers sitemaps, canonical tags, redirects, or preview environments. When even the vendor’s own SEO page skips half of what you need, “SEO-optimized out of the box” is doing a lot of work. » (Tradução) (Síntese localizada do trecho cinquenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«None of these three are bad for SEO — there’s no platform ceiling. But there’s also no scaffolding to lean on. Everything is a function of the frontend you build. » (Tradução) (Síntese localizada do trecho cinquenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Preview and staging leakage — the differentiated risk » (Tradução) (Síntese localizada do trecho cinquenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«This is the one place platform choice makes a concrete, measurable SEO difference, so it’s worth calling out separately. » (Tradução) (Síntese localizada do trecho cinquenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Hydrogen/Oxygen automatically disallows all crawlers on preview and shareable-link
deployments — a built-in safeguard against your staging site getting indexed and
competing with production as duplicate content. No equivalent automatic guarantee is
documented for Catalyst, commercetools, or PWA Kit. And it’s not theoretical: 1Digital
Agency reports “Preview deployments indexed by Googlebot” as a recurring real-world
failure mode on Catalyst migrations. That’s a single practitioner source rather than an
official platform statement, so treat the specific Catalyst claim as one credible data
point — but the underlying lesson is platform-agnostic: if your platform doesn’t
auto-block preview crawlers, block them yourself (a robots.txt disallow, HTTP auth,
or a noindex header on every non-production environment). On the “everything-to-you”
platforms, this is entirely on you by definition.
» (Tradução) (Síntese localizada do trecho cinquenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Redirect management — a migration concern, not a platform feature » (Tradução) (Síntese localizada do trecho cinquenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«No platform reviewed ships an automatic redirect system. Every headless migration — Stencil to Catalyst, monolith to headless, one commerce engine to another — needs an explicit 301 map from old URLs to new. The consensus across migration-focused trade posts is consistent: re-platforming failures almost always trace back to redirect maps, URL structures, and structured-data gaps, and you should never launch without a verified 301 map. That’s the same lesson the site’s Site Migrations article covers in full — I’ll cross-reference it for the checklist rather than re-derive it here. The platform-specific angle is just this: don’t assume any of these engines handles redirects for you. None do. » (Tradução) (Síntese localizada do trecho cinquenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Portability is the underrated upside » (Tradução) (Síntese localizada do trecho cinquenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«One myth worth killing: switching commerce platforms does not mean rebuilding your SEO from scratch. The rendering layer — your Next.js (or React Router) storefront — is what determines crawlability, and it’s largely portable across commerce backends. A Next.js storefront can point at BigCommerce, Medusa, Saleor, or commercetools with mostly data-layer changes. What changes when you swap platforms is the scaffolding: where the sitemap data comes from, whether there’s a metadata utility, how redirects and previews are handled. That’s a meaningful re-wire, but it’s not “start over.” » (Tradução) (Síntese localizada do trecho cinquenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«And don’t over-index on API quality as an SEO signal, either. A platform’s GraphQL/REST API only determines what data is available to build metadata and sitemaps from. Whether that data actually reaches Google server-side is a frontend/rendering decision — which, again, the hub owns. » (Tradução) (Síntese localizada do trecho cinquenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Where to go next » (Tradução) (Síntese localizada do trecho sessenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- Headless Ecommerce SEO — the hub: the SSR/SSG/CSR rendering decision, structured data (Product, ProductGroup/hasVariant), and why the GMC feed is independent of rendering.
- Next.js SEO — since Catalyst, commercetools Frontend, Medusa, and Saleor storefronts
are usually Next.js, this is where the
generateMetadataandsitemap.tsmechanics live. - JavaScript SEO — the general JS-rendering failure modes that apply to any JS-heavy storefront. » (Tradução) (Síntese localizada do trecho sessenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## AI summary » (Tradução) (Síntese localizada do trecho sessenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«A condensed take on the Advanced version: » (Tradução) (Síntese localizada do trecho sessenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- Platform choice ≠ rendering choice. Crawlability comes from the frontend’s rendering model (SSR/SSG/CSR — owned by the headless ecommerce hub). The commerce platform decides how much SEO scaffolding you inherit.
- A spectrum, three tiers:
- Ships real tooling: Shopify Hydrogen (
getSeoMetametadata utility, sitemap routes,robots.txt, auto preview-crawler blocking via Oxygen) and BigCommerce Catalyst (sitemap proxied from BigCommerce, Next.jsgenerateMetadataconventions). - Ships SDK helpers, not routes: commercetools Frontend (three-sitemap pattern via SDK methods, manual route wiring, 500-item pagination limit) and Salesforce PWA Kit (sitemap path branches on Business Manager vs. custom routing; manual scheduled regeneration).
- Ships nothing SEO-specific: Medusa, Saleor, Elastic Path — pure commerce APIs; the Next.js frontend owns all SEO.
- Ships real tooling: Shopify Hydrogen (
- Metadata: Hydrogen’s
getSeoMetais the only shipped SEO-metadata utility (title/description/image/canonical/JSON-LD). Everyone else exposes raw API fields you wire intogenerateMetadatayourself. - Preview/staging leakage is a real differentiator: Hydrogen/Oxygen auto-blocks crawlers on shareable links; no equivalent guarantee for Catalyst, commercetools, or PWA Kit (1Digital reports Catalyst previews getting indexed in the wild). Block them yourself if the platform doesn’t.
- Redirects are a migration concern — no platform automates a 301 map; cross-reference » (Tradução) (Síntese localizada do trecho sessenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.) « the Site Migrations article.
- Portability upside: the Next.js frontend is largely reusable across backends; swapping platforms re-wires scaffolding, not your whole SEO.
- Myth to kill: “SEO-optimized out of the box” is a spectrum — Elastic Path’s own SEO post doesn’t even cover sitemaps, canonical tags, or redirects. » (Tradução) (Síntese localizada do trecho sessenta e seis, parte dois: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Which headless commerce platform (for SEO)? » (Tradução) (Síntese localizada do trecho sessenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«This walks the SEO-scaffolding tradeoff, not the business/pricing decision. The question at each node is “what do I want to inherit vs. build?” » (Tradução) (Síntese localizada do trecho setenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Official documentation » (Tradução) (Síntese localizada do trecho setenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Primary-source platform documentation, per commerce engine. » (Tradução) (Síntese localizada do trecho setenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Shopify Hydrogen
- Search Engine Optimization for Hydrogen — the
getSeoMetautility, canonical handling, sitemap and robots.txt routes, and the Oxygen preview-blocking behavior. - Hydrogen
getSeoMetautility — the metadata helper’s inputs (title, description, image, canonical, JSON-LD). - Hydrogen
getSitemaputility — per-resource-type sitemap generation with locale alternates. » (Tradução) (Síntese localizada do trecho setenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«BigCommerce Catalyst
- Catalyst Sitemap docs — how Catalyst proxies BigCommerce’s sitemap index. (This URL moved from
developer.bigcommerce.comtodocs.bigcommerce.comsince this article was drafted — verified 2026-07-19; the old path 301s here.) » (Tradução) (Síntese localizada do trecho setenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«commercetools
- Sitemaps | Frontend Development — the three-sitemap pattern, the SDK methods (
getPages,query,queryCategories), route handlers, and the 500-item pagination limit. » (Tradução) (Síntese localizada do trecho setenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Salesforce Commerce Cloud (PWA Kit)
- Improve SEO with a Sitemap | Composable Storefront — the Business-Manager-vs-custom-routing branch and the manual sitemap steps.
- PWA Kit GitHub issue #1755 — Add Sitemap handling — community signal that built-in sitemap handling has been a manual gap. » (Tradução) (Síntese localizada do trecho setenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Medusa / Saleor / Elastic Path
- Medusa Next.js Starter Storefront — App Router + React Server Components; SEO inherited from your Next.js implementation.
- Elastic Path — SEO for headless commerce websites — vendor blog; useful as the platform’s stated SEO position (note it omits sitemaps/canonical/redirects). » (Tradução) (Síntese localizada do trecho oitenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Quotes from the source » (Tradução) (Síntese localizada do trecho oitenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Verbatim statements from the platform docs and one named practitioner. Deep links jump to the quoted passage where the source supports it. » (Tradução) (Síntese localizada do trecho oitenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Shopify Hydrogen — the metadata utility » (Tradução) (Síntese localizada do trecho oitenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- “Hydrogen uses Remix’s built-in meta features for SEO tags, and includes the getSeoMeta utility, which makes it easier and more consistent to render SEO meta tags.”
— Shopify.dev, Hydrogen SEO docs. This exact sentence is still live on the doc, but
it’s stale: @shopify/hydrogen no longer depends on Remix (it peer-depends on
react-router ~7.16.0, and @shopify/remix-oxygen is formally deprecated in favor of
react-router). The getSeoMeta utility itself is accurate and current.
Jump to quote
- “By default Hydrogen removes query parameters from canonical URLs.” — Shopify.dev, Hydrogen SEO docs. » (Tradução) (Síntese localizada do trecho oitenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Shopify Hydrogen — preview-crawler blocking » (Tradução) (Síntese localizada do trecho oitenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- “If you make a non-production deployment accessible with a shareable link or an auth bypass token, then Oxygen overrides the deployment’s robots.txt file with a disallow rule for all bots and crawlers.”
— Shopify.dev, Hydrogen SEO docs.
» (Tradução) (Síntese localizada do trecho oitenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«BigCommerce Catalyst — sitemap proxying » (Tradução) (Síntese localizada do trecho oitenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- “Catalyst acts as an intermediary when handling requests to /sitemap.xml.”
— BigCommerce Developer Center, Catalyst Sitemap docs.
- “If your storefront also uses third-party systems that generate content with different URLs, you will need to submit multiple sitemaps to cover the URLs from various sources.” — BigCommerce Developer Center, Catalyst Sitemap docs.
- “The sitemaps don’t need to reside on the same domain as the website they represent.” — BigCommerce Developer Center, Catalyst Sitemap docs. » (Tradução) (Síntese localizada do trecho noventa, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Dan Kogan, 1Digital Agency (practitioner, Catalyst SEO) » (Tradução) (Síntese localizada do trecho noventa e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- “Do not change established URLs on a Stencil-to-Catalyst migration. Every product, category, and content URL should match the legacy structure exactly, or you need a complete 301 redirect map.” Read the guide
- “Use
generateMetadataand SSR-emitted JSON-LD for every PDP and PLP. Do not rely on client-side schema injection.” Read the guide » (Tradução) (Síntese localizada do trecho noventa e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Elastic Path (vendor blog — treat as the platform’s stated position, not neutral) » (Tradução) (Síntese localizada do trecho noventa e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- “If you’re dynamically building a page with a JavaScript framework alone, you might want to look into serving up cached versions of the pages to the bots.” Read the post » (Tradução) (Síntese localizada do trecho noventa e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The Shopify and BigCommerce lines are quoted from the live platform docs; the BigCommerce docs URL has moved paths before, so confirm the live location if the deep link 404s. The 1Digital Agency lines are from a practitioner blog (Dan Kogan) and the Elastic Path line is vendor content — both are attributed and reproduced verbatim, but they’re industry/vendor-tier, not official search-engine statements. The Catalyst preview-indexing claim below (in Anti-patterns) rests on that single 1Digital source and is flagged as such. » (Tradução) (Síntese localizada do trecho noventa e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Mistakes that cost you » (Tradução) (Síntese localizada do trecho noventa e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Concrete failure modes I’d check for on any headless commerce build. » (Tradução) (Síntese localizada do trecho noventa e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Trusting “SEO-optimized out of the box” at face value. Why it’s wrong: it’s a spectrum, not a guarantee. Hydrogen ships real scaffolding; Medusa, Saleor, and Elastic Path ship nothing SEO-specific. Elastic Path’s own SEO blog post doesn’t even mention sitemaps, canonical tags, or redirects. Do instead: ask the specific questions per platform — what ships for sitemaps, metadata, redirects, and preview-blocking? — and budget the gaps as build work. » (Tradução) (Síntese localizada do trecho cem, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Assuming every platform keeps staging out of Google.
Why it’s wrong: only Hydrogen/Oxygen auto-blocks crawlers on preview/shareable
deployments. There’s no documented equivalent for Catalyst, commercetools, or PWA Kit,
and at least one practitioner (1Digital Agency) reports Catalyst preview deployments
getting indexed by Googlebot in the wild. (Single-source claim — treat as one credible
data point, not settled fact.)
Do instead: block non-production environments yourself — robots.txt disallow, HTTP
auth, or a noindex header on every preview/staging URL. Never assume the platform does
it.
» (Tradução) (Síntese localizada do trecho cento e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Treating a platform swap as “rebuild all SEO from scratch.” Why it’s wrong: the rendering layer (your Next.js/React Router frontend) is what determines crawlability and is largely portable across backends — a Next.js storefront can point at BigCommerce, Medusa, Saleor, or commercetools with mostly data-layer changes. Do instead: re-wire only the scaffolding that actually differs — sitemap data source, metadata utility, redirect handling, preview-blocking. Reuse the frontend. » (Tradução) (Síntese localizada do trecho cento e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Judging SEO by API quality. Why it’s wrong: the GraphQL/REST API only determines what data is available to build metadata and sitemaps from. Whether that data reaches Google depends on server-side rendering — a frontend decision, not an API one. Do instead: evaluate the rendering model (per the hub) separately from the API. A great API with a CSR frontend still ships empty HTML to crawlers. » (Tradução) (Síntese localizada do trecho cento e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Skipping the redirect map on migration. Why it’s wrong: no platform reviewed automates redirects. Re-platforming failures almost always trace back to missing 301 maps, changed URL structures, and structured-data gaps. Do instead: build and verify a complete old-URL→new-URL 301 map before launch. On Stencil→Catalyst specifically, keep URLs identical or map every one. See the Site Migrations article for the checklist. » (Tradução) (Síntese localizada do trecho cento e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Letting Product JSON-LD render twice, or client-side.
Why it’s wrong: 1Digital flags Product JSON-LD emitted twice (a custom component plus
a third-party app) and generateMetadata returning a client-only fallback because the
GraphQL query got thrown to a client component — both common Catalyst regressions.
Do instead: emit one server-rendered Product block per PDP, and keep the
generateMetadata query server-side. Validate with the Rich Results Test.
» (Tradução) (Síntese localizada do trecho cento e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Platform SEO scaffolding — at a glance » (Tradução) (Síntese localizada do trecho cento e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«What each platform ships out of the box » (Tradução) (Síntese localizada do trecho cento e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«| Platform | Frontend | Metadata | Sitemap | Preview-crawler block |
| --- | --- | --- | --- | --- |
| Shopify Hydrogen | React Router 7 (migrated off Remix, 2026) | getSeoMeta utility (title/desc/canonical/JSON-LD) | Shipped route, 24h auto-refresh | Automatic (Oxygen) |
| BigCommerce Catalyst | Next.js | generateMetadata + alternates.canonical from GraphQL | Proxied from BigCommerce’s index | Not documented — do it yourself |
| commercetools Frontend | Next.js | Raw API fields → your generateMetadata | SDK helpers; you wire 3 routes (500-item paging) | Not documented — do it yourself |
| Salesforce PWA Kit | React (PWA Kit) | usePage() hook (Page Designer) | Branches on routing; manual scheduled job | Not documented — do it yourself |
| Medusa | Next.js (starter) | Whatever your Next.js frontend does | Build it yourself | Build it yourself |
| Saleor | Next.js (templates) | Whatever your Next.js frontend does | Build it yourself | Build it yourself |
| Elastic Path | Your frontend | Raw custom fields via API | Build it yourself (not in vendor docs) | Build it yourself |
» (Tradução) (Síntese localizada do trecho cento e dez, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Fast facts
- Only Hydrogen ships a dedicated SEO-metadata utility (
getSeoMeta). - Only Hydrogen/Oxygen auto-blocks crawlers on preview/shareable deployments.
- Catalyst proxies BigCommerce’s sitemap — the data lives in BigCommerce, not your app.
- commercetools sitemap queries cap at 500 items/request — large catalogs need paging logic.
- No platform ships automatic redirect management — a 301 map is always your job.
- Platform choice = scaffolding; rendering model (SSR/SSG/CSR) = crawlability. » (Tradução) (Síntese localizada do trecho cento e onze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Three-tier summary
- Ships real tooling: Hydrogen, Catalyst
- Ships SDK helpers, not routes: commercetools, PWA Kit
- Ships nothing SEO-specific: Medusa, Saleor, Elastic Path » (Tradução) (Síntese localizada do trecho cento e doze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Headless platform SEO vetting checklist » (Tradução) (Síntese localizada do trecho cento e quinze, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Run this before committing to a platform, and again before launch. » (Tradução) (Síntese localizada do trecho cento e dezesseis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Scaffolding audit (what the platform gives you)
- Confirmed what ships for metadata — a utility (Hydrogen) vs. raw API fields you
wire into
generateMetadata(everyone else). - Confirmed how the sitemap is produced — shipped route (Hydrogen), proxied (Catalyst), or SDK/API you assemble (commercetools, PWA Kit, Medusa, Saleor, Elastic Path).
- For commercetools: pagination logic in the sitemap generator for catalogs over 500 items per query.
- For PWA Kit: decided the sitemap path (Business Manager vs. custom routing) and scheduled a regeneration job.
- Confirmed there’s a
robots.txtroute (or built one). » (Tradução) (Síntese localizada do trecho cento e dezessete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Preview / staging safety
- On Hydrogen: relying on Oxygen’s automatic crawler-block — verified it’s active on shareable links.
- On every other platform: explicitly blocked non-production environments
(
robots.txtdisallow, HTTP auth, ornoindexheader). - Checked that no preview/staging URLs are currently indexed (
site:search on the preview domain). » (Tradução) (Síntese localizada do trecho cento e dezoito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Rendering (owned by the hub, but verify per platform)
-
curl-checked a product page — title and description present in raw HTML (not CSR-only). - Confirmed category/collection routes also render server-side. » (Tradução) (Síntese localizada do trecho cento e dezenove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Migration / redirects
- Complete old-URL → new-URL 301 map built and verified.
- On Stencil→Catalyst: URLs kept identical, or every one mapped.
-
ProductJSON-LD emitted once, server-side (no double-emission from a third-party app). » (Tradução) (Síntese localizada do trecho cento e vinte, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Verify what a headless store actually ships » (Tradução) (Síntese localizada do trecho cento e vinte e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The whole point of this article is “don’t trust the vendor claim.” Here’s how to check the claims yourself, per platform, on a live demo or your own build. » (Tradução) (Síntese localizada do trecho cento e vinte e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### Is the product page server-rendered? (shell) » (Tradução) (Síntese localizada do trecho cento e vinte e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«If the product title isn’t in the raw HTML, the page is CSR — no platform scaffolding saves you from that. » (Tradução) (Síntese localizada do trecho cento e vinte e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
# Product name should appear in the raw HTML, before any JS runs.
curl -s https://yourstore.example/products/some-slug | grep -i '<title>'
curl -s https://yourstore.example/products/some-slug | grep -o 'og:title[^>]*'«### Does the sitemap exist, and where does it come from? (shell) » (Tradução) (Síntese localizada do trecho cento e vinte e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
# Hydrogen ships this route; Catalyst proxies it from BigCommerce; others may 404.
curl -sI https://yourstore.example/sitemap.xml
# Peek at the first URLs to confirm it's populated (not an empty shell).
curl -s https://yourstore.example/sitemap.xml | grep -o '<loc>[^<]*</loc>' | head«### Is the preview/staging environment blocked? (shell) » (Tradução) (Síntese localizada do trecho cento e trinta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The Hydrogen-vs-everyone-else test. On a preview URL, Oxygen should return a
disallow-everything robots.txt.
» (Tradução) (Síntese localizada do trecho cento e trinta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
# On a preview/shareable deployment URL:
curl -s https://preview--yourstore.example/robots.txt
# Hydrogen/Oxygen preview: expect "User-agent: * Disallow: /"
# If it returns your production robots.txt instead, previews can be indexed — block them.«### Find canonical + JSON-LD in the rendered head (DevTools Console) » (Tradução) (Síntese localizada do trecho cento e trinta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Paste into Chrome DevTools Console on any PDP to see whether canonical and Product schema are actually in the DOM (and whether Product JSON-LD is duplicated — a common Catalyst regression): » (Tradução) (Síntese localizada do trecho cento e trinta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
// Canonical URL the page declares:
document.querySelector('link[rel="canonical"]')?.href ?? '(no canonical)';
// Every JSON-LD block, parsed — watch for TWO Product blocks:
[...document.querySelectorAll('script[type="application/ld+json"]')]
.map(s => { try { return JSON.parse(s.textContent); } catch { return s.textContent; } });«### One-click canonical checker (bookmarklet) » (Tradução) (Síntese localizada do trecho cento e trinta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Save as a bookmark; click it on any product page to alert the declared canonical and how many Product JSON-LD blocks exist (2+ is a problem): » (Tradução) (Síntese localizada do trecho cento e trinta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
javascript:(()=>{const c=document.querySelector('link[rel="canonical"]')?.href||'(none)';const p=[...document.querySelectorAll('script[type="application/ld+json"]')].filter(s=>/"@type"\s*:\s*"Product"/.test(s.textContent)).length;alert('Canonical: '+c+'\nProduct JSON-LD blocks: '+p);})();«### Extract every product URL from a proxied Catalyst sitemap (Python) » (Tradução) (Síntese localizada do trecho cento e trinta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Useful when you need the URL list for a redirect map or an audit: » (Tradução) (Síntese localizada do trecho cento e quarenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
import urllib.request, re
url = "https://yourstore.example/sitemap.xml"
xml = urllib.request.urlopen(url).read().decode("utf-8")
locs = re.findall(r"<loc>(.*?)</loc>", xml)
for loc in locs:
print(loc)«Remember: a curl that shows an empty <title> or a missing sitemap tells you more than
any “SEO-optimized out of the box” claim on a pricing page.
» (Tradução) (Síntese localizada do trecho cento e quarenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Tools for vetting a headless platform » (Tradução) (Síntese localizada do trecho cento e quarenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- curl / view-source — the fastest “is this actually server-rendered?” check. If the
product title isn’t in the raw HTML, no platform scaffolding matters yet.
- Google Search Console — URL Inspection — “Test live URL” shows how Googlebot renders a given product/category page and what canonical it sees. The source of truth over your template.
- Rich Results Test — validate
ProductJSON-LD per PDP, and catch double-emitted schema (a common Catalyst regression). - Screaming Frog SEO Spider — crawl a staging build to find missing canonicals on paginated listings, orphaned routes, and whether preview URLs are reachable/indexable.
- Ahrefs Site Audit — surface duplicate content, missing metadata, and redirect-chain problems across a headless build at scale.
site:search on the preview domain — the crude-but-effective test for whether your staging environment has already been indexed. » (Tradução) (Síntese localizada do trecho cento e quarenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Frameworks for comparing headless commerce platforms » (Tradução) (Síntese localizada do trecho cento e quarenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### The two-axis model: rendering and scaffolding » (Tradução) (Síntese localizada do trecho cento e cinquenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Score the storefront on two independent axes: » (Tradução) (Síntese localizada do trecho cento e cinquenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«- Rendering determines crawlability. SSR or SSG should put product and category content in the initial HTML; CSR can leave crawlers with a shell.
- Platform scaffolding determines what your team must build. Metadata plumbing,
sitemap routes,
robots.txt, preview blocking, and redirect ownership may ship, require assembly, or be absent. » (Tradução) (Síntese localizada do trecho cento e cinquenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«A platform with strong scaffolding can still have a CSR implementation problem. A pure API platform can still be excellent for SEO when its frontend implements the missing layer. Never collapse the two scores into one vendor claim. » (Tradução) (Síntese localizada do trecho cento e cinquenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### The inherit–build–operate model » (Tradução) (Síntese localizada do trecho cento e cinquenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Classify every SEO capability before platform selection: » (Tradução) (Síntese localizada do trecho cento e cinquenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«| Capability | Inherit | Build | Operate |
| --- | --- | --- | --- |
| Metadata | Shipped utility or framework convention | Route-level title, canonical, JSON-LD wiring | Regression checks after template changes |
| Sitemap | Shipped or proxied route | Generators, pagination, multi-source indexes | Refresh jobs and URL-count monitoring |
| Preview safety | Hosting auto-block | Auth, noindex, or environment-specific robots rules | Test every preview deployment pattern |
| Redirects | None of the reviewed platforms automates the migration map | Old-to-new URL rules | Watch chains, loops, and unmapped 404s |
» (Tradução) (Síntese localizada do trecho cento e cinquenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The platform decision is not only build effort. A manual sitemap that works on launch still creates an operating obligation when catalog size, locales, or routing changes. » (Tradução) (Síntese localizada do trecho cento e cinquenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### The evidence ladder » (Tradução) (Síntese localizada do trecho cento e cinquenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Evaluate a platform claim in this order: » (Tradução) (Síntese localizada do trecho cento e cinquenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«1. Raw response evidence: curl, response headers, and view-source show what a
crawler receives.
2. Route evidence: live sitemap, canonical, JSON-LD, and robots.txt behavior.
3. Environment evidence: production and preview deployments behave differently
where they should.
4. Vendor documentation: explains intended behavior, but does not prove the
implementation shipped correctly.
5. Marketing language: useful only as a question generator.
» (Tradução) (Síntese localizada do trecho cento e sessenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«The evidence ladder keeps “SEO-ready” from substituting for a testable acceptance criterion. » (Tradução) (Síntese localizada do trecho cento e sessenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Post-implementation proof for a headless platform » (Tradução) (Síntese localizada do trecho cento e sessenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### Product HTML and canonical test » (Tradução) (Síntese localizada do trecho cento e sessenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Test to run: Fetch a representative product URL with curl -s and inspect the
raw response for its title, product name, canonical, and one Product JSON-LD block.
» (Tradução) (Síntese localizada do trecho cento e sessenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Expected result: The product content and canonical are present before JavaScript,
and exactly one server-rendered Product object exists.
» (Tradução) (Síntese localizada do trecho cento e sessenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Failure interpretation: The route may have fallen back to CSR, metadata may be client-only, or multiple schema producers are active. » (Tradução) (Síntese localizada do trecho cento e sessenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Monitoring window: Immediate after every product-template or data-fetching change. » (Tradução) (Síntese localizada do trecho cento e sessenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Rollback trigger: A release removes indexable product content from raw HTML or duplicates the product schema across the tested template set. » (Tradução) (Síntese localizada do trecho cento e setenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### Sitemap completeness test » (Tradução) (Síntese localizada do trecho cento e setenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Test to run: Fetch the sitemap index and child files, then compare sampled product and category URLs with the commerce catalog. For commercetools, include products on both sides of a pagination boundary. » (Tradução) (Síntese localizada do trecho cento e setenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Expected result: Published canonical URLs appear once, return 200, and the newest catalog changes arrive on the platform’s documented refresh cycle. » (Tradução) (Síntese localizada do trecho cento e setenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Failure interpretation: The route is missing, a source sitemap is not proxied, pagination stops early, or a scheduled generator is stale. » (Tradução) (Síntese localizada do trecho cento e setenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Monitoring window: After launch and after any catalog, locale, routing, or sitemap job change. » (Tradução) (Síntese localizada do trecho cento e setenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Rollback trigger: A deployment drops a material catalog section from the sitemap or starts emitting non-canonical/failed URLs. » (Tradução) (Síntese localizada do trecho cento e setenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### Preview-environment isolation test » (Tradução) (Síntese localizada do trecho cento e setenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Test to run: Request a real shareable preview URL’s robots.txt and headers, then
use URL Inspection or an external fetch without authenticated cookies.
» (Tradução) (Síntese localizada do trecho cento e setenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Expected result: Non-production URLs are inaccessible to anonymous crawlers or carry an environment-wide block; production remains crawlable. » (Tradução) (Síntese localizada do trecho cento e setenta e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Failure interpretation: The hosting preview safeguard is absent, applies only to one preview pattern, or production rules leaked into staging. » (Tradução) (Síntese localizada do trecho cento e oitenta, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Monitoring window: Immediate for every deployment mode, including branch previews and auth-bypass links. » (Tradução) (Síntese localizada do trecho cento e oitenta e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Rollback trigger: A public preview returns indexable content without the intended block, or the fix accidentally blocks production. » (Tradução) (Síntese localizada do trecho cento e oitenta e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«### Migration redirect test » (Tradução) (Síntese localizada do trecho cento e oitenta e três, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Test to run: Request the complete old-URL inventory without following redirects,
then validate status and Location against the approved map.
» (Tradução) (Síntese localizada do trecho cento e oitenta e quatro, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Expected result: Every changed legacy URL returns one permanent redirect to its closest canonical replacement; preserved URLs remain 200. » (Tradução) (Síntese localizada do trecho cento e oitenta e cinco, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Failure interpretation: The platform swap omitted a rule, introduced a chain, or changed a URL that was meant to stay stable. » (Tradução) (Síntese localizada do trecho cento e oitenta e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Monitoring window: Before cutover, immediately after cutover, and during the first post-launch crawl reviews. » (Tradução) (Síntese localizada do trecho cento e oitenta e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Rollback trigger: High-value legacy URLs return 404, loop, chain, or redirect to an irrelevant destination. » (Tradução) (Síntese localizada do trecho cento e oitenta e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Test yourself: Headless Commerce Platforms » (Tradução) (Síntese localizada do trecho cento e noventa e um, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«Five quick questions on how the major headless commerce platforms differ for SEO. Pick an answer for each, then check. » (Tradução) (Síntese localizada do trecho cento e noventa e dois, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«## Resources worth your time » (Tradução) (Síntese localizada do trecho cento e noventa e seis, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«My related writing
- JavaScript SEO Issues & Best Practices — the general rendering failure modes (parity, interaction, state, timing) behind any JS-heavy headless storefront; the verify-don’t-trust approach I apply to platform claims here.
- The Beginner’s Guide to Technical SEO — where rendering and crawlability sit in the bigger picture. » (Tradução) (Síntese localizada do trecho cento e noventa e sete, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«My speaking
- How Search Works (SlideShare) — crawling, rendering, indexing, and ranking, i.e. the pipeline every one of these platforms feeds into. (My standing disclaimer applies: “This is my understanding of systems… not going to be 100% complete or accurate.”) » (Tradução) (Síntese localizada do trecho cento e noventa e oito, parte um: o texto-fonte foi preservado para conferência na revisão nativa.)
«From around the industry
- Search Engine Optimization for Hydrogen (Shopify.dev) — the
getSeoMetautility, sitemap/robots routes, and the Oxygen preview-blocking behavior, straight from the source. - Catalyst Sitemap docs (BigCommerce Developer Center) — how Catalyst proxies BigCommerce’s sitemap index.
- Sitemaps | Frontend Development (commercetools) — the three-sitemap SDK pattern and the 500-item pagination limit.
- Improve SEO with a Sitemap | Composable Storefront (Salesforce Developers) — the Business-Manager-vs-custom-routing branch for PWA Kit.
- BigCommerce Catalyst SEO | Next.js Storefront Best Practices (Dan Kogan, 1Digital Agency) — the one deep practitioner piece on Catalyst SEO: URL parity on migration,
generateMetadataregressions, double JSON-LD, and preview-indexing. - SEO for headless commerce websites (Kirsten Aebersold, Elastic Path) — the vendor’s own SEO position (useful as a case study in what “out of the box” leaves out — no sitemap/canonical/redirect coverage). » (Tradução) (Síntese localizada do trecho cento e noventa e nove, parte um: o texto-fonte foi preservado para conferência na revisão nativa.) «- Best headless commerce platforms: 2026 comparison (Vendure) — a broad business/tech-stack comparison of the platforms (with the SEO axis notably missing, which is the gap this article fills).
- Best Headless Commerce Platforms 2026 (Your Next Store) — another platform-selection comparison for cross-referencing the non-SEO decision criteria. » (Tradução) (Síntese localizada do trecho cento e noventa e nove, parte dois: o texto-fonte foi preservado para conferência na revisão nativa.)
Registro de alterações
Atualizado em 19 de jul. de 2026.
Resumo editorial e detalhes registrados da alteração.Detalhes da alteração
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
-
As notas detalhadas sobre as alterações estão disponíveis atualmente em inglês.
Não é possível fazer a comparação completa — nenhum instantâneo anterior foi arquivado para esta revisão.