Diagnóstico público de e-commerce · varredura em 13 de julho de 2026
Resumo
O que está funcionando
- ✓ Participação no UCP (manifest /.well-known/ucp) é conhecida e intencionalManifest UCP (Google Universal Commerce Protocol) presente e válido em /.well-known/ucp. Site sinaliza participação no UCP — checkout agêntico no AI Mode/Gemini.
- ✓ Exposição de catálogo via MCP (se existir) é descobrível e válidanenhum endpoint MCP em /.well-known/mcp/server.json→404, /api/mcp→404 — padrão emergente (Shopify storefront MCP, SEP server-card), ausência NÃO é defeito
- ✓ llms.txt (se presente) é auditado apenas por completude/llms.txt presente (# Agent Instructions — Town & Country Brasil…) — registrado por completude; NENHUM engine principal lê llms.txt, não tratar como lever
Pontos críticos
- ✗ Crawlers verificados legítimos (Bing/IA) alcançam o site (não 403 no WAF) CríticoWAF devolve meta-externalagent=429 enquanto Googlebot=200 — Bing + AI search cegos ao site
- ✗ Botões têm nome acessível (button-name) Críticobutton-name: 2 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) — ex.: <button type="button" class="btn btn--body btn--circle js-photoswipe__zoom product__photo-zoom">
- ✗ Links têm nome discernível (link-name) Críticolink-name: 3 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 1 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) · https://tcsurf.com.br/collections/masculino: 1 elemento(s) — ex.: <a href="/" itemprop="url" class="site-header__logo-link" style="padding-top: 100.0%">
Cobertura honesta: medimos 110 de 387 verificações do registro público. 31 verificações ficaram bloqueadas: parte aguarda acesso a dados privados (GA4, Search Console, VTEX) ou entrevista, parte depende de pré-condições de execução.
Capturas da jornada
O que o navegador do nosso agente viu ao percorrer as páginas amostradas, no mesmo carregamento que decidiu as verificações de acessibilidade e rastreamento.





Problemas por página
Cada verificação reprovada, anotada na página onde foi observada e com a evidência literal capturada pelo probe. O título descreve o estado esperado; o ✗ indica que ele não foi atendido.
| Página | Verificação reprovada e evidência | Área | Severidade |
|---|---|---|---|
| Todas as páginas | ✗ Botões têm nome acessível (button-name)button-name: 2 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) — ex.: <button type="button" class="btn btn--body btn--circle js-photoswipe__zoom product__photo-zoom"> | Qualidade Técnica do Site | Crítico |
| ✗ Links têm nome discernível (link-name)link-name: 3 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 1 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) · https://tcsurf.com.br/collections/masculino: 1 elemento(s) — ex.: <a href="/" itemprop="url" class="site-header__logo-link" style="padding-top: 100.0%"> | Qualidade Técnica do Site | Crítico | |
| ✗ Elementos aria-hidden não contêm foco (aria-hidden-focus)aria-hidden-focus: 14 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 10 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) · https://tcsurf.com.br/collections/masculino: 2 elemento(s) — ex.: <div id="AnnouncementSlide-announcement-1" class="announcement-slider__slide" data-index="0" style="position: absolute; left: 0px; transform: translateX(0%);" aria-hidden="true"><a class="announcement-link" href="#"><span class="announcement-text">5% OFF Pix e Boleto</span></a></div> | Qualidade Técnica do Site | Crítico | |
| ✗ Funil completo dispara em ordem (view_item_list -> view_item -> add_to_cart -> begin_checkout -> add_payment_info -> purchase)GA4 dispara page_view mas nenhum evento de ecommerce (view_item/view_item_list/add_to_cart…) foi observado nas páginas de produto/listagem amostradas — funil de receita invisível no GA4 | Qualidade de Dados & Tagging | Crítico | |
| ✗ Crawlers verificados legítimos (Bing/IA) alcançam o site (não 403 no WAF)WAF devolve meta-externalagent=429 enquanto Googlebot=200 — Bing + AI search cegos ao site | Funil de Conversão & Experiência | Crítico | |
| ✗ AI bots permitidos no robots.txt não são bloqueados na camada CDN/WAFrobots.txt permite mas CDN/WAF bloqueia: meta-externalagent=429 enquanto browser=200 — site invisível a esses engines apesar do robots.txt limpo. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir | Aquisição de Tráfego | Crítico | |
| ✗ Domínio apex redireciona para o host www canônicohttps://tcsurf.com.br/ serve 200 em paralelo com www (host duplicado dilui canônico) | Qualidade Técnica do Site | Crítico | |
| ✗ Headings em ordem hierárquica (heading-order)heading-order: 1 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) — ex.: <h3 class="section-header__title"> Relacionados </h3> | Qualidade Técnica do Site | Atenção | |
| ✗ Todo conteúdo está dentro de landmarks (region)region: 6 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 2 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) · https://tcsurf.com.br/collections/masculino: 2 elemento(s) — ex.: <div id="AnnouncementSlide-announcement-0" class="announcement-slider__slide is-selected" data-index="1" style="position: absolute; left: 0px; transform: translateX(100%);"> | Qualidade Técnica do Site | Atenção | |
| ✗ WAF presente sem bloquear bots legítimos (Googlebot etc.)UA×path (GET /): browser=200 googlebot=200 bingbot=200 gptbot=200 oai-searchbot=200 chatgpt-user=200 claudebot=200 claude-searchbot=200 claude-user=200 perplexitybot=200 perplexity-user=200 ccbot=200 meta-externalagent=429 — WAF bloqueia meta-externalagent | Qualidade Técnica do Site | Atenção | |
| ✗ Acesso de AI crawlers é governado intencionalmente no robots.txtrobots.txt sem NENHUMA diretiva para AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, CCBot, meta-externalagent, Amazonbot, Applebot-Extended, Bytespider) — acesso de IA não governado (default-allow acidental) | Aquisição de Tráfego | Atenção | |
| ✗ Headers de cache/CDN corretos por tipo de páginahome Cache-Control: ∅; cf-cache-status: DYNAMIC | Qualidade Técnica do Site | Atenção |
Busca por IA (GEO)
Como o ChatGPT, o Perplexity e as respostas de IA do Google conseguem descobrir, entender e citar esta loja, medido em 9 dimensões sobre as 32 verificações de GEO do registro.
Scorecard do funil
A jornada do comprador, etapa a etapa, com o que passou e o que reprovou em cada uma.
Atração
54- ✗AI bots permitidos no robots.txt não são bloqueados na camada CDN/WAFrobots.txt permite mas CDN/WAF bloqueia: meta-externalagent=429 enquanto browser=200 — site invisível a esses engines apesar do robots.txt limpo. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir
- ✗Domínio apex redireciona para o host www canônicohttps://tcsurf.com.br/ serve 200 em paralelo com www (host duplicado dilui canônico)
- ✗WAF presente sem bloquear bots legítimos (Googlebot etc.)UA×path (GET /): browser=200 googlebot=200 bingbot=200 gptbot=200 oai-searchbot=200 chatgpt-user=200 claudebot=200 claude-searchbot=200 claude-user=200 perplexitybot=200 perplexity-user=200 ccbot=200 meta-externalagent=429 — WAF bloqueia meta-externalagent
- ✗Acesso de AI crawlers é governado intencionalmente no robots.txtrobots.txt sem NENHUMA diretiva para AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, CCBot, meta-externalagent, Amazonbot, Applebot-Extended, Bytespider) — acesso de IA não governado (default-allow acidental)
- ✗Headers de cache/CDN corretos por tipo de páginahome Cache-Control: ∅; cf-cache-status: DYNAMIC
- ✗Registros de autenticação de e-mail (SPF/DKIM/DMARC) presentesSPF AUSENTE; DMARC AUSENTE; DKIM selector não descoberto (testados: google/default/k1/s1/selector1)
- ✗<title> tem comprimento adequado (não truncado nem curto demais)title lens 57/81/43 (alvo 10–70 chars ≈ sem truncar na SERP)
- ✗Meta description está presentemeta description 2/3 URLs
Consideração
59- ✗Botões têm nome acessível (button-name)button-name: 2 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) — ex.: <button type="button" class="btn btn--body btn--circle js-photoswipe__zoom product__photo-zoom">
- ✗Links têm nome discernível (link-name)link-name: 3 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 1 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) · https://tcsurf.com.br/collections/masculino: 1 elemento(s) — ex.: <a href="/" itemprop="url" class="site-header__logo-link" style="padding-top: 100.0%">
- ✗Elementos aria-hidden não contêm foco (aria-hidden-focus)aria-hidden-focus: 14 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 10 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) · https://tcsurf.com.br/collections/masculino: 2 elemento(s) — ex.: <div id="AnnouncementSlide-announcement-1" class="announcement-slider__slide" data-index="0" style="position: absolute; left: 0px; transform: translateX(0%);" aria-hidden="true"><a class="announcement-link" href="#"><span class="announcement-text">5% OFF Pix e Boleto</span></a></div>
- ✗Headings em ordem hierárquica (heading-order)heading-order: 1 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) — ex.: <h3 class="section-header__title"> Relacionados </h3>
- ✗Todo conteúdo está dentro de landmarks (region)region: 6 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 2 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) · https://tcsurf.com.br/collections/masculino: 2 elemento(s) — ex.: <div id="AnnouncementSlide-announcement-0" class="announcement-slider__slide is-selected" data-index="1" style="position: absolute; left: 0px; transform: translateX(100%);">
- ✗Total Blocking Time dentro do alvoLighthouse: https://tcsurf.com.br/ — total-blocking-time=0.45 (660 ms) | https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country — total-blocking-time=0.66 (410 ms)
- ✗Reduzir JavaScript não utilizadoLighthouse: https://tcsurf.com.br/ — unused-javascript=0 (Est savings of 729 KiB) | https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country — unused-javascript=0 (Est savings of 743 KiB) | https://tcsurf.com.br/collections/masculino — unused-javascript=0 (Est savings of 725 KiB)
- ✗Evitar payloads de rede enormes (peso total da página)Lighthouse: https://tcsurf.com.br/ — total-byte-weight=0.5 (Total size was 3,337 KiB) | https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country — total-byte-weight=0.5 (Total size was 3,505 KiB) | https://tcsurf.com.br/collections/masculino — total-byte-weight=0.5 (Total size was 3,446 KiB)
Compra
38- ✗HSTS com max-age >= 1 ano, includeSubDomains e preloadStrict-Transport-Security: max-age=7889238 (max-age=7889238)
- ✗Content-Security-Policy presente e não trivialmente permissivaCSP presente com diretivas [block-all-mixed-content, frame-ancestors, upgrade-insecure-requests] — só frame-ancestors, zero mitigação XSS/skimmer
- ✗Subresource Integrity (SRI) em scripts de terceirosterceiros sem SRI: cdn.shopify.com, a.klaviyo.com · com SRI: 3
- ✗Referrer-Policy restritivo definidoReferrer-Policy: AUSENTE
- ✗Permissions-Policy restringe APIs sensíveis do browserPermissions-Policy: AUSENTE
- ✗Isolamento cross-origin (COOP/COEP/CORP) configuradosem COOP/COEP/CORP — isolamento cross-origin ausente
- ✗Sem URLs protocol-relative (//) em recursosrecursos protocol-relative (//): 171 em 3 URLs
- ✓HTTPS em todas as rotas (sem conteúdo servido em HTTP)
Retenção
não medidoNenhuma verificação desta etapa pôde ser medida só com dados públicos.
Correções ao alcance
Verificações reprovadas que o time de implementação resolve sem depender do cliente ou de terceiros, em ordem de severidade. Cada título descreve o estado esperado que hoje não é atendido.
- Crítico✗ Botões têm nome acessível (button-name)button-name: 2 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) — ex.: <button type="button" class="btn btn--body btn--circle js-photoswipe__zoom product__photo-zoom">
- Crítico✗ Links têm nome discernível (link-name)link-name: 3 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 1 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) · https://tcsurf.com.br/collections/masculino: 1 elemento(s) — ex.: <a href="/" itemprop="url" class="site-header__logo-link" style="padding-top: 100.0%">
- Crítico✗ Elementos aria-hidden não contêm foco (aria-hidden-focus)aria-hidden-focus: 14 elemento(s) em 3 página(s) — https://tcsurf.com.br/: 10 elemento(s) · https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 2 elemento(s) · https://tcsurf.com.br/collections/masculino: 2 elemento(s) — ex.: <div id="AnnouncementSlide-announcement-1" class="announcement-slider__slide" data-index="0" style="position: absolute; left: 0px; transform: translateX(0%);" aria-hidden="true"><a class="announcement-link" href="#"><span class="announcement-text">5% OFF Pix e Boleto</span></a></div>
- Crítico✗ Funil completo dispara em ordem (view_item_list -> view_item -> add_to_cart -> begin_checkout -> add_payment_info -> purchase)GA4 dispara page_view mas nenhum evento de ecommerce (view_item/view_item_list/add_to_cart…) foi observado nas páginas de produto/listagem amostradas — funil de receita invisível no GA4
- Crítico✗ Crawlers verificados legítimos (Bing/IA) alcançam o site (não 403 no WAF)WAF devolve meta-externalagent=429 enquanto Googlebot=200 — Bing + AI search cegos ao site
- Crítico✗ AI bots permitidos no robots.txt não são bloqueados na camada CDN/WAFrobots.txt permite mas CDN/WAF bloqueia: meta-externalagent=429 enquanto browser=200 — site invisível a esses engines apesar do robots.txt limpo. método: GET com UA spoofado (IP não-oficial) — 4xx/challenge ao UA prova bloqueio por UA-string, o mesmo mecanismo que cega o bot real; WAFs que validam IP podem divergir
- Crítico✗ Domínio apex redireciona para o host www canônicohttps://tcsurf.com.br/ serve 200 em paralelo com www (host duplicado dilui canônico)
- Atenção✗ Headings em ordem hierárquica (heading-order)heading-order: 1 elemento(s) em 1 página(s) — https://tcsurf.com.br/products/camiseta-manga-curta-surface-town-country: 1 elemento(s) — ex.: <h3 class="section-header__title"> Relacionados </h3>
Identidade de marca
“Stoke & Aloha desde 1971”
#D02E2E#56AD6A#8ACBDF#FFFFFF#000000Descontraído, autêntico e aspiracional, com forte apelo ao lifestyle de surf e à herança havaiana da marca
Próximo passo
Isto é só a parte pública.
Este relatório usou apenas o que qualquer visitante consegue observar de fora: páginas públicas, dados estruturados, sinais de crawler e testes de navegador. O diagnóstico completo conecta GA4, Search Console e a plataforma da loja para medir o funil real, achar onde a receita escapa e dimensionar cada correção em reais.
Falar com a deco.cx