< BACK Migração Shopify para Headless Sem Prejudicar o SEO -- ilustração em estilo de linha

Migração Shopify para Headless Sem Destruir o SEO

Um cliente chegou até mim no início de 2022, marca de moda de médio porte, cerca de 40 mil sessões orgânicas mensais, domain rating decente, tinha estado em Shopify por quatro anos. Eles contrataram uma agência dev para reconstruir tudo em Next.js com a Storefront API do Shopify. O novo site era lindo. Genuinamente rápido. E dentro de seis semanas após o lançamento, eles perderam 38% do tráfego orgânico.

Aprendizado-chave: Migrações headless Shopify protegem rankings da mesma forma que toda migração faz: mapa completo de redirects, transporte de metadados byte-idêntico, e um orçamento de Core Web Vitals na nova build.

Ninguém tinha feito uma auditoria de redirecionamentos. O sitemap estava quebrado. Canonical tags apontavam para o ambiente errado. Foi um desastre, e custou a eles cerca de £60.000 em receita antes de estabilizarmos as coisas.

Migrações headless são um daqueles movimentos que parecem uma vitória técnica pura, rendering mais rápido, front-end desacoplado, liberdade total de design, mas se você tratar SEO como uma coisa secundária, vai pagar por isso. E muito. Trabalhei em mais de 12 mil sites na Seahawk e vi esse padrão se repetir o suficiente para que eu quisesse documentar tudo isso direito.

---

Por Que Shopify Headless Quebra SEO em Primeiro Lugar

A arquitetura padrão de temas do Shopify faz muito trabalho pesado de SEO sem você perceber. Tags canônicas são geradas automaticamente. O sitemap.xml em /sitemap.xml é mantido automaticamente. Dados estruturados para produtos vêm prontos via Liquid. Paginação usa as convenções rel="next" e rel="prev" que o Shopify gerencia silenciosamente em segundo plano.

No momento em que você vai headless, tipicamente com um framework como Next.js, Nuxt, Remix ou SvelteKit puxando dados da Storefront API do Shopify, você é responsável por tudo isso. Cada canonical. Cada hreflang. Cada bloco de structured data. Cada redirect. Não vem de graça mais.

E aqui está a coisa: a maioria dos times de dev é contratada porque são bons em React. Não porque sabem como é uma armadilha de rastreamento de navegação com facetas.

Os três modos de falha que vejo constantemente

  • URLs de ambiente de staging vazando para índices de produção. O time de dev constrói em staging.mybrand.com ou uma URL de preview do Vercel, esquece de dar noindex adequadamente, o Google rastreia, e de repente você tem conteúdo duplicado competindo com seu site ao vivo.
  • Redirecionamentos quebrados ou faltando durante reestruturação de URLs. Projetos headless quase sempre envolvem mudanças de URL. /collections/mens-shirts vira /category/shirts ou algo pior. Sem 301s no lugar, cada link de entrada e cada URL indexada pelo Google retorna um 404.
  • Renderização client-side matando a rastreabilidade. Se seu front-end headless está renderizando conteúdo de produtos puramente client-side sem SSR ou SSG, o Googlebot pode não estar pegando seu conteúdo de forma confiável. Google consegue renderizar JavaScript, mas é processado em uma segunda onda e há atraso de indexação. Para catálogos grandes, esse atraso custa.

---

A Auditoria Pré-Migração Que Você Não Pode Pular

Vou ser franco: se você não fez isso antes de entrar ao vivo, você já está atrasado. Mas nunca é tarde demais.

Antes de um único registro DNS mudar, quero quatro coisas em mãos.

1. Um crawl completo do site Shopify existente. Use Screaming Frog (eu executo localmente aqui em Londres em uma máquina dedicada, não cloud crawl, local, para que eu possa capturar tudo incluindo páginas renderizadas com JavaScript). Exporte cada URL, status code, title tag, meta description, canonical e H1. Este é seu baseline. É sua foto antes.

2. Um documento de mapeamento. Cada URL antiga → URL nova. Não apenas páginas de categoria e produto. Posts de blog. Páginas de tag. Páginas de guia de tamanho. A URL /pages/about que tem 47 backlinks daquela menção de imprensa em 2020. Cada URL que tem histórico de crawl, backlinks ou keywords com ranking precisa estar nesta planilha.

3. Uma exportação de backlinks do Ahrefs ou SEMrush. Filtre para páginas com pelo menos um domínio referenciador. Estes são seus alvos de redirecionamento de prioridade mais alta. Perca um 301 em uma página com 12 domínios referenciadores e você acabou de deletar uma porção significativa de link equity.

4. Snapshot de ranking de palavras-chave. Exporte seus rankings atuais do Google Search Console, no mínimo, as top 200 queries por volume de cliques. Você precisa disso para comparar pré e pós-migração. Se "mens linen trousers" cai da posição 4 para a posição 22 após o lançamento, você precisa ser capaz de detectar isso imediatamente.

---

Implementando Redirects em um Setup Headless

É aqui que fica um pouco técnico, mas fique comigo.

Em uma setup padrão do Shopify, você gerencia redirects dentro do admin do Shopify. Em uma setup headless, seu framework front-end está lidando com roteamento, o que significa que redirects vivem em algum lugar diferente dependendo do seu alvo de deployment.

Se você está em Vercel (que é onde a maioria dos projetos headless Shopify com Next.js acabam), seus redirects vão para vercel.json sob o array redirects. Ele lida com 301s limpa e a edge network da Vercel aplica eles antes mesmo da página renderizar, que é exatamente o que você quer para SEO, o redirect acontece na camada de infraestrutura, não em JavaScript.

Se você está em Netlify, mesma ideia, netlify.toml ou um arquivo _redirects.

Se você está fazendo self-hosting em algo como AWS CloudFront ou um servidor Node customizado, você vai precisar implementar redirects no nível do reverse proxy. Não faça isso no React router. Redirects no edge level são os que passam equity de link de forma limpa.

Uma coisa que sempre faço: depois de implementar cada redirect, eu rodo uma verificação em lote através do httpstatus.io para validar a cadeia. Uma cadeia 301 → 301 → 200 é ruim. Você quer 301 → 200. Cadeias de redirect vazam equity de link e desaceleram as coisas.

---

Canonicals, Structured Data, e os Bits que Times Esquecem

Em 2023, a Seahawk teve uma marca de skincare DTC migrar para uma configuração headless Hydrogen (o próprio framework React do Shopify). Os desenvolvedores fizeram um trabalho sólido com os redirects. Mas esqueceram que Hydrogen não gera tags canônicas automaticamente, você tem que configurá-las manualmente no <head> usando o componente SEO do Hydrogen. Resultado: cada página de produto estava canonicalizando para si mesma com os parâmetros da query string anexados, porque a lógica de carrinho e filtros estava escrevendo params na URL. Google estava vendo centenas de páginas de produtos quase duplicadas.

O fix levou cerca de um dia uma vez que encontramos, mas a volatilidade de ranking que causou levou cerca de três semanas para se estabilizar.

O que verificar manualmente antes do launch

  1. Canonical tags em páginas de produto apontam para a URL limpa (sem query strings, sem parâmetros UTM).
  2. noindex deve estar no seu ambiente de staging e em qualquer URL de preview do Vercel/Netlify, adicione isso à sua checklist de deployment, não à sua lista de tarefas.
  3. Os dados estruturados de produto (tipo Product do Schema.org) estão sendo renderizados no servidor na <head>, não injetados por um script do lado do cliente após hidratação.
  4. Seu robots.txt é acessível no domínio raiz e não está bloqueando o Googlebot de seus novos padrões de URL.
  5. O sitemap XML reflete a nova estrutura de URLs, não o antigo sitemap do Shopify, e não uma versão em cache do seu processo de build.

---

Core Web Vitals: A Faca de Dois Gumes

Aqui está o argumento que a maioria das agências faz quando vendem headless: "Vai melhorar seus Core Web Vitals." E não estão errados, potencialmente. Um front-end Next.js bem construído com otimização de imagens, edge caching e code splitting apropriado pode genuinamente atingir verde em todas as três métricas de Core Web Vitals.

Mas já vi migrações headless que pioraram os CWV. Especificamente LCP (Largest Contentful Paint) e CLS (Cumulative Layout Shift).

LCP fica pior quando a imagem hero ou a imagem de produto acima da dobra não está sendo feito preload apropriadamente. Em uma configuração headless, seu pipeline de imagens é sua própria responsabilidade. Você não está mais confiando na CDN do Shopify, precisa garantir que seu framework está usando priority flags em imagens hero (em Next.js, esse é o prop priority em <Image>) e que você está servindo imagens com tamanho correto via uma CDN como Cloudflare ou Fastly.

CLS piora quando fontes ou conteúdo dinâmico (especialmente estado do drawer do carrinho, banners promocionais ou chips de filtro) causam mudanças de layout durante hidratação. Temas Shopify lidam com isso razoavelmente bem por padrão. Seu front-end headless customizado não vai, a menos que alguém especificamente projete para isso.

Teste com PageSpeed Insights na sua URL de staging antes do go-live, não depois. Use dados de campo do Chrome UX Report se o site esteve em staging tempo suficiente para acumulá-los. E verifique no mobile, esse é o dado que Google realmente usa para ranking.

---

Orçamento de Rastreamento e Catálogos Grandes

Se você tem menos de 5.000 URLs de produto, crawl budget provavelmente não é sua principal preocupação. Mas se você está migrando um catálogo com 50.000+ SKUs, navegação facetada, variantes de múltiplas moedas/regiões, e um blog que remonta a 2015, você precisa pensar sobre isso.

Configurações headless frequentemente criam mais URLs do que a configuração do Shopify que estão substituindo. Filtros facetados que eram previamente tratados via AJAX com noindex no Shopify agora ganham suas próprias rotas renderizadas no servidor se alguém não pensou cuidadosamente sobre o tratamento de parâmetros de URL. De repente, o Googlebot está tentando rastrear um site de 200.000 URLs quando você tinha 30.000 antes.

Mantenha seu robots.txt enxuto. Desautorize o crawling de padrões de URLs filtradas que não representam conteúdo único e rankável. Use rel="canonical" em páginas filtradas para apontar de volta para a categoria raiz. E não crie rotas individuais server-side para cada combinação de faceta, esse caminho leva à loucura e desperdício de crawl.

---

Monitoramento Pós-Migração (A Parte Que as Pessoas Param de Fazer Após a Segunda Semana)

A migração entra ao vivo, o cliente aprova, todos comemoram. E então ninguém olha o Search Console por um mês. Não faça isso.

Configure uma exportação semanal de dados do GSC pelos primeiros três meses no mínimo. Rastreie impressões, cliques, posição média e cobertura de índice. Fique atento a quedas de índice, se sua contagem de páginas indexadas cai repentinamente de 8.000 para 4.200, algo está errado e você precisa descobrir antes que Google decida que essas páginas se foram para sempre.

Também configurei um uptime monitor (eu uso Better Uptime) na própria URL do sitemap, yourdomain.com/sitemap.xml. Se começar a retornar um 500 durante um deployment, você quer saber imediatamente, não três dias depois quando perceber rankings deslizando.

Mais uma coisa: reenvie seu sitemap no Search Console após o go-live. Óbvio, talvez. Mas já vi isso ser esquecido mais vezes do que gostaria de admitir.

---

FAQ

Ir headless sempre prejudica o SEO no início?

Nem sempre, mas há quase sempre alguma volatilidade de ranking nas primeiras quatro a oito semanas conforme o Google rastreia novamente e reindexa a nova configuração. Se seus redirecionamentos são sólidos, seus canonicais estão corretos e seus dados estruturados estão intactos, isso normalmente se estabiliza e frequentemente melhora. O perigo é quando migrações são apressadas, é quando a volatilidade de curto prazo se transforma em perda de longo prazo.

Posso usar o framework Hydrogen do Shopify e ainda manter um bom SEO?

Sim. Hydrogen usa renderização do lado do servidor por padrão, o que é a base correta para SEO. As lacunas estão nos detalhes, gestão de canonicais, geração de sitemap e dados estruturados. Shopify fornece um utilitário de SEO na biblioteca de componentes do Hydrogen, mas não é mágica. Você ainda precisa de alguém que entenda o que isso faz e por quê.

Quanto tempo leva para os rankings se recuperarem após um problema de migração?

Honestamente? Depende da gravidade. Um redirect faltando em algumas páginas pode se corrigir em algumas semanas uma vez que você o corrija. Um erro de canonical em todo o site ou noindex acidental em todo o domínio pode levar de dois a quatro meses para se recuperar, às vezes mais para termos altamente competitivos. Quanto mais cedo você detectar e corrigir, mais curto será o tempo de recuperação.

Ir headless vale a pena apenas do ponto de vista de SEO?

Não. Headless vale a pena por performance, flexibilidade e experiência do desenvolvedor front-end. SEO é um fator neutro se você migrar corretamente. Não deixe uma agência vender headless liderando com benefícios de SEO, os mesmos ganhos de performance frequentemente podem ser alcançados com um tema Shopify 2.0 bem otimizado e uma configuração sólida de CDN, por uma fração do custo.

---

Migrações não são lançamentos. São transferências de confiança, de um ambiente antigo que o Google conhece bem para um novo que não conhece. Trate cada detalhe técnico como se importasse, porque para seu canal orgânico, importa.

< BACK