display:none por 720 s — 12 minutos de vídeo antes de existir qualquer botão.| Item | Estado |
|---|---|
| Plataforma | WordPress + Elementor Pro 4.3.5 + WP Rocket |
| Estrutura | VSL pura: 1 hero com player vertical VTurb (14 min 03 s) + 8 containers escondidos |
| Checkout | LastLink /p/C01E2D987/checkout-payment/ nos 3 CTAs — sem UTM/fbclid no link |
| Tracking | GTM-TKNTJMGX (self-hosted em /bd3c/) → 3 pixels Meta + TikTok + Clarity + Google Ads 810179376 |
| Preço | R$ 197 (de R$ 482) · garantia 7 dias · 8 itens de FAQ — tudo dentro do bloco escondido |
| SEO | index,follow · zero H1 (só H2) |
Detalhe dos requests que importam (tempo em relação ao início da navegação, mesma simulação 4G):
| t | Request | Peso |
|---|---|---|
| 0,47 s | googletagmanager.com/gtm.js?id=GTM-TKNTJMGX | 180 KB |
| 4,62 s | sabrinanunes.com/bd3c/ + 2 chunks (GTM self-hosted) | 190 + 374 KB |
| 5,35 s | connect.facebook.net/en_US/fbevents.js começa a carregar | 111 KB |
| 7,93 s | signals/config/1502494303320239 | 85 KB |
| 9,45 s | 1º beacon facebook.com/tr/?ev=PageView | — |
| 9,45 s | signals/config/132382626241636 | 105 KB |
| 10,57 s | signals/config/1873889120187819 + PageView | 38 KB |
| 11,15 s | PageView repetido no pixel 132382626241636 | — |
Connect rate = Landing Page Views ÷ cliques no link. O LPV só existe quando o PageView do pixel carrega e sai do navegador. Nesta página esse evento depende de uma corrente inteira:
HTML → gtm.js remoto (0,5 s) → /bd3c/ local (4,6 s) → fbevents.js (5,4 s)
→ signals/config (7,9–10,6 s) → PageView (9,4–11,2 s)
Em tráfego frio de Meta no celular, uma sessão curta cabe inteira nesses 10 s. O usuário foi cobrado como clique, navegou, não converteu em LPV. Conectividade não é problema de rede nem de servidor — é ordem de carregamento.
| # | Causa | Prova | Impacto |
|---|---|---|---|
| 1 | Pixel Meta dentro do GTM | fbevents.js só é pedido em 5,35 s; PageView em 9,4 s | Alto |
| 2 | GTM carregado duas vezes (remoto + self-hosted) | gtm.js 180 KB e /bd3c/ 190 KB + 374 KB de chunks | Alto |
| 3 | 3 pixels Meta disparando PageView no mesmo pageview | 132382626241636 · 1502494303320239 · 1873889120187819 (um deles dispara 2×) | Médio (atribuição) |
| 4 | ~730 KB de JS + 4 famílias de fonte (Roboto, Roboto Slab, Sora, TikTok Sans) com range 100–900 | peso total 1,11 MB em 78 requests | Médio |
Pixel do Meta inline no <head>, independente do GTM. Testei na própria página, mesma rede, com o GTM bloqueado: fbevents.js sai em 0,52 s em vez de 5,35 s — PageView na casa de 1 s em vez de 9–11 s. O GTM continua existindo só pro TikTok, Clarity e Google Ads.
Junto: matar o GTM duplicado (fica só o de 1º domínio, 190 KB, e some o gtm.js remoto), deixar 1 pixel Meta (o da conta que roda as campanhas) e adicionar preconnect pra connect.facebook.net, scripts.converteai.net e lastlink.com.
<style>.esconder{display:none}</style>
var delaySeconds = 720;
player.displayHiddenElements(720, [".esconder"], { persist: true });
O vídeo tem 842 s (14 min 03 s). O conteúdo só aparece aos 720 s (12 min). Antes disso, o que existe na página é: título + player. Nada mais. Ficam invisíveis:
Consequências práticas:
display:none e não entra em relatório de profundidade.Recomendação mínima (não mexe no roteiro): CTA fixo visível desde o primeiro frame pra quem já decidiu + liberar garantia/FAQ a partir de 3–5 min. Se o pitch da VSL acontece antes dos 12 min, o delaySeconds está liberando a oferta depois da hora — nesse caso o número correto é o timestamp do pitch.
Hoje a página carrega ~730 KB de JS e 370 KB de GTM pra renderizar um vídeo e blocos de texto. Um HTML estático com CSS inline faria o mesmo trabalho com ~35–45 KB de documento.
| Hoje (WP+Elementor) | Estático (Pages) | |
|---|---|---|
| Documento | 113 KB / 22 KB br | ~40 KB / ~9 KB br |
| JS | ~730 KB (12 arquivos) | ~0 (só o player VTurb) |
| CSS | 18 arquivos, 63 KB só do post-2510 | 1 bloco inline |
| Fontes | 4 famílias, range 100–900 | 1–2 famílias, só os pesos usados |
| PageView Meta | 9,4–11,2 s | < 1 s (pixel inline) |
| Custo de editar copy | Elementor | HTML (ou componente de seção) |
<vturb-smartplayer id="ab-6adbb82516b0fd83c8de206f"> + scripts.converteai.net/.../player.js.displayHiddenElements(720,[".esconder"],{persist:true}) — e o .esconder{display:none} no CSS crítico (senão o conteúdo pisca antes do vídeo).https://lastlink.com/p/C01E2D987/checkout-payment/ nos 3 CTAs.preconnect.bdb_utm_v2, TTL 90 dias, pega fbclid/ttclid/gclid, monta form_fields[...] do Elementor Pro) — mas não existe form nesta página. Hoje ele só grava em localStorage e não serve pra nada. Ou passa UTM/fbclid na URL do checkout, ou o script morre na migração.http:// faz 301 certo, mas https://www.sabrinanunes.com/shopmax-lp/ responde 403. Qualquer criativo, bio ou link de terceiro que use www = connect rate zero.| # | Ação | Onde | Ganho |
|---|---|---|---|
| P0 | Pixel Meta inline no <head> (sai do GTM) | WP: header script ou functions.php | PageView 10 s → ~1 s |
| P0 | Remover GTM duplicado — manter só 1 container | plugin self-hosted / functions.php | −370 KB e −4 s até o 1º beacon |
| P0 | Confirmar autoplay do vídeo no desktop (hoje abriu "parado" no teste) | player / Elementor | sem isso a página não vende |
| P0 | Arrumar www → 301 pro apex | Cloudflare | elimina risco de 403 |
| P1 | CTA fixo desde o início + liberar garantia/FAQ aos 3–5 min | Elementor | conversão, não connect |
| P1 | Deixar 1 pixel Meta (hoje 3 IDs, um dispara 2×) | GTM | atribuição limpa |
| P1 | Passar UTM/fbclid na URL do LastLink | CTAs | rastreio de venda por campanha |
| P1 | preconnect: connect.facebook.net, scripts.converteai.net, lastlink.com | head | −0,2 a −0,4 s |
| P2 | Reduzir para 1–2 famílias de fonte, só pesos usados | Elementor | −200 KB aprox. |
| P2 | Adicionar H1 (hoje zero) | Elementor | semântica/SEO |
| P2 | Migrar pra HTML estático no Pages | build novo | P0+P1 de peso somem de uma vez |
Vale, mas não como primeiro passo. P0 resolve connect rate em uma tarde dentro do WordPress — sem risco de perder a página que está no ar. Migrar entrega o mesmo resultado de rede e ainda tira 700 KB de JS, porém custa mais e mexe no que já converte.
Se a decisão for migrar, o caminho é: 1 HTML + CSS inline, player VTurb igual, gate igual, pixel inline, GTM só se sobrar TikTok/Clarity/Ads, deploy no Cloudflare Pages em URL de teste e comparação de PageView/lado a lado antes de trocar o tráfego. A copy passa a ser editada em código — o que é ganho pra mim e perda pra quem edita no Elementor.
curl + Chromium headless via Playwright, viewport 390×844, UA iPhone, throttling CDP 1,6 Mbps / 150 ms. Timestamps de performance.getEntriesByType('resource'). Gate confirmado por getComputedStyle + leitura da propriedade duration do vturb-smartplayer (842 s).