O que Analista de Landing Pages GA4 faz?
Uma revisão de landing pages que lê o GA4 em vez de pedir exportações. Cada descoberta vem de uma consulta que esta skill executa, e cada descoberta mostra os números por trás dela.
Antes de começar
Você precisa do InsightfulPipe MCP conectado a uma propriedade GA4. Google Ads e Search Console são opcionais; eles adicionam custo e cliques orgânicos por página.
- Chame
query_contextscomrequest="accounts"eplatform="google-analytics". Anoteworkspace_id,brand_ideproperty_id. Se houver várias propriedades, pergunte qual. Passe a propriedade comoproperties/<id>. - Chame
query_contextscomrequest="actions_details"paraget_report,pages,list_key_events,list_data_streamseget_enhanced_measurement_settings, e siga as estruturas de corpo que ele retorna. - Se o usuário quiser detalhes de tráfego pago ou orgânico, execute
accountsparagoogle-adsegoogle-search-consoletambém, depoisactions_detailsparagaql(platform="google-ads") esearch_analytics(platform="google-search-console"). Use a conta do Google Ads quelist_google_ads_linksmostrar como vinculada a esta propriedade, e o site do Search Console que corresponder aodefaultUrido stream. O corpo do Google Ads nomeia a conta comoaccount_id(10 dígitos, sem traços), nãocustomer_id. - Peça três coisas e use os padrões se eles não souberem:
- A conversão principal. Padrão: os eventos-chave de
list_key_events. - O título da página 404 do site. Padrão: títulos que contenham "não encontrado" ou "404".
- Intervalo de datas. Padrão: os últimos 30 dias completos, comparados com os 30 dias anteriores.
- A conversão principal. Padrão: os eventos-chave de
Informe as datas, o nome da propriedade, seu fuso horário e moeda no topo do relatório.
Como executar as consultas
Todo corpo abaixo passa por query_data com platform="google-analytics" a menos que nomeie outra plataforma. Substitua <WORKSPACE_ID>, <BRAND_ID>, <PROPERTY_ID>, <START> e <END>. Regras que a API impõe:
- Filtros são em camelCase. Use
dimensionFilter,metricFiltereorderBys. Umdimension_filterem snake_case é ignorado silenciosamente e você recebe todas as linhas de volta, então verifique se um relatório filtrado realmente está filtrado. - Limites de linhas. Passe
limit. A respostameta.paging.total_availableé a contagem total de linhas; diga quando você leu apenas uma parte. - Não há métrica de saídas na API de Dados do GA4. Não prometa taxas de saída. Vazamentos são medidos como sessões não engajadas (abaixo).
- O custo de anúncio não pode ser dividido por landing page no GA4.
advertiserAdCostcomlandingPageretorna um erro. Obtenha o custo por landing page do Google Adslanding_page_view. - As métricas de Pesquisa Orgânica no GA4 (
organicGoogleSearchClickse similares) só funcionam quando o Search Console está vinculado à propriedade. Se derem erro, use a ação do Search Console. - As taxas retornam como frações (0,42 significa 42%). Durações são em segundos.
Se uma consulta falhar, continue. Marque essa área como desconhecida e diga qual consulta falhou e por quê. Nunca preencha uma lacuna com um palpite.
Tamanho da amostra. Não julgue uma página com menos de 30 sessões no período. Liste essas páginas sob "tráfego muito baixo para julgar".
As seis áreas
Pontue cada área como passar, alerta, falhar ou desconhecido. O resultado de uma área é sua pior verificação. Os limites são pontos de partida; diga quando o modelo do site torna um errado (uma página de documentação é feita para ser lida e abandonada, uma página de contato é feita para ser curta).
1. Saúde dos dados: os números são confiáveis?
{"platform": "google-analytics", "action": "get_property", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "list_key_events", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "list_data_streams", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "get_enhanced_measurement_settings", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "data_stream_id": "<STREAM_ID>"}
Pegue <STREAM_ID> do número no final do name do stream web.
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["date"], "metrics": ["sessions", "engagedSessions", "keyEvents", "screenPageViews"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"dimension": {"dimensionName": "date"}}]}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["eventName"], "metrics": ["eventCount", "keyEvents"], "start_date": "<START>", "end_date": "<END>"}
| Verificação | Resultado |
|---|---|
| Eventos-chave | falhar quando nenhum está definido. alerta quando eventos-chave estão definidos mas nenhum disparou no período: as verificações de conversão nas áreas 2 e 3 tornam-se desconhecidas, e as páginas são classificadas por sessões engajadas. A correção está no site (os eventos não estão sendo enviados), não em um novo evento-chave. Quando um evento semelhante a conversão dispara (aparece no relatório eventName) mas não é um evento-chave, ofereça create_key_event. |
| Landing page "(not set)" | Participação de sessões onde landingPage é "(not set)" ou vazio: essas sessões começaram sem uma visualização de página (banners de consentimento, tags disparando tarde, sessões que expiram e reiniciam). alerta acima de 5%, falhar acima de 15%. |
| Lacunas | alerta em qualquer dia com 0 sessões, ou um dia abaixo de 20% da mediana diária do período, dentro do período. Diga quais datas. |
| Muitos streams | Observe quando uma propriedade tem vários streams web (um stream de teste ou staging pode adicionar tráfego estranho). Verifique hostName se os números parecerem altos. |
| Medição aprimorada | Observe se scrollsEnabled e siteSearchEnabled estão ativados. As áreas 4 e 6 dependem deles. |
2. Desempenho da landing page e vazamentos
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage"], "metrics": ["sessions", "engagedSessions", "engagementRate", "keyEvents", "sessionKeyEventRate", "newUsers", "averageSessionDuration"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 250}
Execute novamente para o período anterior com a mesma duração.
- Taxa do site. Taxa de engajamento e taxa de eventos-chave para todas as sessões, excluindo landing pages "(not set)".
- Vazamentos. Para cada página com 30+ sessões: sessões não engajadas = sessões − engagedSessions. Excesso de vazamento = sessões não engajadas − sessões × (1 − taxa de engajamento do site). Este é o número de visitantes que a página perde além do que uma página média perderia. Calcule para cada página com 30+ sessões e classifique todas as páginas com excesso de vazamento positivo; esta classificação alimenta as 5 principais correções. Uma página movimentada apenas um pouco abaixo da taxa do site pode perder mais visitantes do que uma página pequena muito abaixo dela. Separadamente, rotule uma página como vazamento quando seu engajamento estiver abaixo de 75% da taxa do site; o rótulo de vazamento determina o resultado desta área e o veredito da tabela de landing pages, não a classificação de correção. alerta quando os vazamentos juntos detêm mais de 10% das sessões, falhar acima de 25%.
- Conversores. Com eventos-chave disparando: as páginas com a maior taxa de eventos-chave (30+ sessões), e as páginas com mais sessões e uma taxa de eventos-chave abaixo da metade da taxa do site. Essas são as páginas a corrigir primeiro.
- Mudança. Páginas com 50+ sessões em qualquer período cujas sessões mudaram mais de 30%. Separe páginas que são novas ou que desapareceram daquelas que cresceram ou caíram.
- Strings de consulta. Se um caminho aparecer com muitas variantes sob
landingPagePlusQueryString, a página está OK; não a divida. UselandingPage(apenas caminho) para cada julgamento.
3. Adequação da origem de tráfego: quais páginas funcionam para quais visitantes
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage", "sessionDefaultChannelGroup"], "metrics": ["sessions", "engagedSessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 1000}
- Taxas por origem de anúncio. Para cada grupo de canal com 30+ sessões: taxa de engajamento e taxa de eventos-chave por landing page. Exclua landing pages "(not set)" de cada taxa, como na área 2; elas ficam principalmente em Pesquisa Orgânica e Direto e arrastam esses canais para baixo. Canais pagos são Pesquisa Paga, Social Pago, Shopping Pago, Vídeo Pago, Outro Pago, Display e Rede de Display.
- Páginas pagas com baixo desempenho. Uma página cujas sessões pagas engajam a menos de 75% da mesma taxa orgânica ou direta da página é um problema de correspondência de mensagem: o anúncio promete algo que a página não mostra. Com eventos-chave disparando, compare as taxas de eventos-chave.
- Landing pages orgânicas. As principais landing pages de Pesquisa Orgânica por sessões, com sua taxa de engajamento. alerta quando uma página carrega mais de 50% das sessões orgânicas (a uma mudança de classificação de uma queda de tráfego).
- Fontes fracas. Um canal com 100+ sessões que engaja a menos de 75% da taxa do site envia visitantes que a landing page não atende. Direto não é uma fonte que você possa segmentar: uma taxa Direta fraca geralmente significa links não marcados (email, aplicativos, chat), então a correção são tags UTM, não a página. alerta, e liste as 3 principais landing pages em que esse canal pousa, para que a correção vá para a página certa (ou para a postagem ou link que as envia). Para a classificação de correção, conte a perda por página, nunca para o canal inteiro: sessões dessa página do canal × taxa de engajamento do site − suas sessões engajadas do canal. Um canal tem duas contagens de sessões: todas as suas sessões e as sessões com uma landing page conhecida (a base de sua taxa). Dê a contagem completa e nomeie a exclusão ao lado dela, por exemplo, "500 sessões, 460 com uma landing page conhecida"; nunca imprima a contagem menor sozinha.
- Participação paga. Informe qual a participação de sessões pagas. Se as sessões pagas forem menos de 30 no total, diga que a qualidade paga não pode ser julgada e pule as verificações pagas.
Detalhe de pesquisa paga, somente quando as sessões de pesquisa paga forem 30 ou mais:
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage", "sessionGoogleAdsCampaignName"], "metrics": ["sessions", "engagedSessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "sessionDefaultChannelGroup", "stringFilter": {"matchType": "EXACT", "value": "Paid Search"}}}, "limit": 500}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["sessionGoogleAdsCampaignName"], "metrics": ["sessions", "advertiserAdCost", "advertiserAdClicks"], "start_date": "<START>", "end_date": "<END>"}
Com a conta do Google Ads conectada, obtenha custo e conversões por URL final. Substitua <ACCOUNT_ID> pelo id da conta vinculada:
{"platform": "google-ads", "action": "gaql", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<ACCOUNT_ID>", "query": "SELECT landing_page_view.unexpanded_final_url, metrics.clicks, metrics.cost_micros, metrics.conversions FROM landing_page_view WHERE segments.date BETWEEN '<START>' AND '<END>' ORDER BY metrics.cost_micros DESC LIMIT 100"}
- Combine uma URL final com um
landingPagedo GA4 pelo seu caminho: remova o host, a string de consulta e modelos de rastreamento como{ignore}. - Custo por sessão engajada paga da página = custo ÷ sessões engajadas pagas do GA4 nessa página. Sinalize as páginas na metade superior por custo cujo custo por sessão engajada seja mais que o dobro da média paga.
- Os eventos-chave do GA4 e as conversões do Google Ads contam de forma diferente (atribuição, contagem, importação). Relate ambos lado a lado; nunca subtraia um do outro.
Com o Search Console conectado (platform="google-search-console", action="search_analytics"):
{"platform": "google-search-console", "action": "search_analytics", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "site_url": "<SITE_URL>", "dimensions": ["page"], "start_date": "<START>", "end_date": "<END>", "row_limit": 250}
- Junte pelo caminho. Para páginas com 30+ cliques no Search Console, alerta quando as sessões de Pesquisa Orgânica do GA4 estiverem abaixo de 60% dos cliques: essa página está perdendo rastreamento (consentimento, uma tag atrasada ou sessões caindo como "(not set)"). O GA4 pode mostrar mais sessões orgânicas do que cliques do Google, porque seu canal de Pesquisa Orgânica também conta Bing, DuckDuckGo e outros; isso não é um problema. Uma página com altas impressões e baixo CTR é um trabalho de título e snippet, não um trabalho de landing page; passe para uma skill de SEO.
4. Engajamento de conteúdo e rolagem
{"platform": "google-analytics", "action": "pages", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["pagePath"], "metrics": ["screenPageViews", "activeUsers", "userEngagementDuration", "scrolledUsers"], "start_date": "<START>", "end_date": "<END>", "limit": 250}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["percentScrolled"], "metrics": ["eventCount"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"matchType": "EXACT", "value": "scroll"}}}}
- Tempo de engajamento por visualização = userEngagementDuration ÷ screenPageViews, para páginas com 100+ visualizações.
- Rolagem
…
[truncado para tradução]