Analytics e Dados

29 de nov. de 2025

Go back

Auditoria técnica de métricas: como validar dados, detectar erros e garantir integridade no GA4 + BigQuery

Como auditar métricas, identificar inconsistências e garantir integridade dos dados usando GA4, BigQuery e validações sistemáticas.

A professional, hyper-realistic digital marketing workspace with holographic pipeline data dashboards floating

Fique por dentro do que há de mais relavante no Marketing Digital, assine a nossa newsletter:

A construção de um sistema confiável de mensuração não termina no tracking, nem na unificação, nem na modelagem de conversões.

A última camada — e talvez a mais negligenciada pela maioria das empresas — é a auditoria técnica contínua.

Sem auditoria:

  • métricas são publicadas com erro

  • análises estratégicas viram “achismos”

  • atribuição fica distorcida

  • decisões de investimento tornam-se imprecisas

  • erros pequenos se acumulam e se tornam invisíveis

Este post apresenta um framework técnico real, aplicável hoje em GA4 + BigQuery, e usado em pipelines maduros de mensuração.

1. O que é auditoria técnica de métricas?

É o processo contínuo de:

  • validar a integridade dos dados

  • detectar anomalias

  • identificar erros de implementação

  • corrigir discrepâncias entre fontes

  • testar consistência temporal

  • validar regras de negócio

  • documentar mudanças no sistema

Auditar é garantir que os dados usados para decisões são verdadeiros, e não apenas “parecem certos”.

2. Os quatro tipos essenciais de auditoria

A auditoria técnica deve ocorrer em quatro níveis:

2.1. Auditoria estrutural (schema + campos)

Pergunta: “Os eventos têm todos os campos exigidos?”

Checklist:

  • nome do evento está correto?

  • parâmetros obrigatórios existem?

  • tipos (string, number, boolean) estão coerentes?

  • valores estão dentro de limites esperados?

  • houve mudança silenciosa no front-end?

SQL típico:

SELECT
  event_name,
  COUNT(*) AS rows,
  COUNTIF(param.value.string_param IS NULL) AS missing_strings,
  COUNTIF(param.value.int_param IS NULL) AS missing_ints
FROM clean.events e,
UNNEST(event_params) param
WHERE event_name IN ('purchase', 'generate_lead')
GROUP BY event_name;
SELECT
  event_name,
  COUNT(*) AS rows,
  COUNTIF(param.value.string_param IS NULL) AS missing_strings,
  COUNTIF(param.value.int_param IS NULL) AS missing_ints
FROM clean.events e,
UNNEST(event_params) param
WHERE event_name IN ('purchase', 'generate_lead')
GROUP BY event_name;
SELECT
  event_name,
  COUNT(*) AS rows,
  COUNTIF(param.value.string_param IS NULL) AS missing_strings,
  COUNTIF(param.value.int_param IS NULL) AS missing_ints
FROM clean.events e,
UNNEST(event_params) param
WHERE event_name IN ('purchase', 'generate_lead')
GROUP BY event_name;

2.2. Auditoria semântica (valores corretos)

Pergunta: “Os números fazem sentido?”

Exemplos:

  • purchase com valor = 0

  • currency null

  • leads com e-mails inválidos

  • UTMs incoerentes (utm_medium=“google”)

  • transações com data futura

SQL:

SELECT *
FROM model.purchase
WHERE value <= 0 
   OR currency IS NULL
   OR event_timestamp > CURRENT_TIMESTAMP();
SELECT *
FROM model.purchase
WHERE value <= 0 
   OR currency IS NULL
   OR event_timestamp > CURRENT_TIMESTAMP();
SELECT *
FROM model.purchase
WHERE value <= 0 
   OR currency IS NULL
   OR event_timestamp > CURRENT_TIMESTAMP();

2.3. Auditoria de integridade temporal

Pergunta: “Os volumes fazem sentido historicamente?”

Problemas típicos:

  • quedas abruptas

  • picos fora do padrão

  • gaps de coleta

  • ausência de eventos por mudança de deploy

SQL comparativo:

SELECT 
  DATE(event_timestamp) AS dt,
  COUNT(*) AS events
FROM clean.events
WHERE event_name = 'purchase'
GROUP BY dt
ORDER BY dt;
SELECT 
  DATE(event_timestamp) AS dt,
  COUNT(*) AS events
FROM clean.events
WHERE event_name = 'purchase'
GROUP BY dt
ORDER BY dt;
SELECT 
  DATE(event_timestamp) AS dt,
  COUNT(*) AS events
FROM clean.events
WHERE event_name = 'purchase'
GROUP BY dt
ORDER BY dt;

Ferramenta complementar: seasonal baselines.

2.4. Auditoria de consistência entre fontes (GA4 × Ads × CRM × CAPI)

Pergunta: “As conversões do GA4 batem com Ads e CRM?”

Diferenças esperadas:

  • GA4 < Ads (por dedupe + consent mode)

  • CRM > Ads (porque CRM é verdade absoluta)

  • CAPI > GA4 (tracking mais robusto)

Query típica:

SELECT
  ga4.qtd AS ga4_conversions,
  ads.qtd AS ads_conversions,
  crm.qtd AS crm_conversions
FROM metrics.ga4 ga4
JOIN metrics.ads ads USING(date)
JOIN metrics.crm crm USING(date);
SELECT
  ga4.qtd AS ga4_conversions,
  ads.qtd AS ads_conversions,
  crm.qtd AS crm_conversions
FROM metrics.ga4 ga4
JOIN metrics.ads ads USING(date)
JOIN metrics.crm crm USING(date);
SELECT
  ga4.qtd AS ga4_conversions,
  ads.qtd AS ads_conversions,
  crm.qtd AS crm_conversions
FROM metrics.ga4 ga4
JOIN metrics.ads ads USING(date)
JOIN metrics.crm crm USING(date);

3. Auditoria de UTMs, Referrers e Source/Medium

Como GA4 perde muitos referrers, precisamos validar que:

  • UTMs estão sendo preservadas

  • redirect não está apagando parâmetros

  • SGTM está recebendo source/medium

Exemplo detectando “perda de UTM”:

SELECT
  page_location,
  page_referrer,
  COUNT(*) AS qtd
FROM clean.events
WHERE utm_medium IS NULL
  AND page_referrer IS NULL
GROUP BY page_location, page_referrer
ORDER BY qtd DESC;
SELECT
  page_location,
  page_referrer,
  COUNT(*) AS qtd
FROM clean.events
WHERE utm_medium IS NULL
  AND page_referrer IS NULL
GROUP BY page_location, page_referrer
ORDER BY qtd DESC;
SELECT
  page_location,
  page_referrer,
  COUNT(*) AS qtd
FROM clean.events
WHERE utm_medium IS NULL
  AND page_referrer IS NULL
GROUP BY page_location, page_referrer
ORDER BY qtd DESC;

Se um volume anormal aparece → há referrer loss.

4. Auditoria de CAPI e server-side

Erros comuns:

  • event_id não enviado → dedupe falha

  • timestamp errado → atribuição deslocada

  • currency inválido → Ads ignora evento

  • user_data inconsistente

Query:

SELECT *
FROM capi.purchase
WHERE event_id IS NULL 
   OR event_source_url IS NULL 
   OR currency NOT IN ('USD','BRL','EUR');
SELECT *
FROM capi.purchase
WHERE event_id IS NULL 
   OR event_source_url IS NULL 
   OR currency NOT IN ('USD','BRL','EUR');
SELECT *
FROM capi.purchase
WHERE event_id IS NULL 
   OR event_source_url IS NULL 
   OR currency NOT IN ('USD','BRL','EUR');

5. Auditoria de “especialistas escondidos”: tabs, cache e consent mode

Muitos picos de (direct)/(none) são causados por:

  • reopening de abas

  • browser caching

  • cookieless pings

  • Consent Mode v2

SQL detectando sessões com “referrer ausente + session_engaged=false”:

SELECT 
  user_pseudo_id,
  COUNT(*) AS qtd
FROM clean.events
WHERE event_name = 'session_start'
  AND traffic_source.source IS NULL
  AND event_params.engaged_session IS FALSE
GROUP BY user_pseudo_id;
SELECT 
  user_pseudo_id,
  COUNT(*) AS qtd
FROM clean.events
WHERE event_name = 'session_start'
  AND traffic_source.source IS NULL
  AND event_params.engaged_session IS FALSE
GROUP BY user_pseudo_id;
SELECT 
  user_pseudo_id,
  COUNT(*) AS qtd
FROM clean.events
WHERE event_name = 'session_start'
  AND traffic_source.source IS NULL
  AND event_params.engaged_session IS FALSE
GROUP BY user_pseudo_id;

Alta ocorrência?

→ sinal clássico de session restart via aba reaberta.

6. Auditoria de outliers e valores suspeitos

Ferramenta essencial:

SELECT *
FROM model.purchase
WHERE value > 100000  -- limite anormal
   OR value < 1;
SELECT *
FROM model.purchase
WHERE value > 100000  -- limite anormal
   OR value < 1;
SELECT *
FROM model.purchase
WHERE value > 100000  -- limite anormal
   OR value < 1;

Para leads:

SELECT *
FROM model.leads
WHERE LENGTH(email) < 5 OR email NOT LIKE '%@%';
SELECT *
FROM model.leads
WHERE LENGTH(email) < 5 OR email NOT LIKE '%@%';
SELECT *
FROM model.leads
WHERE LENGTH(email) < 5 OR email NOT LIKE '%@%';

7. Auditoria de completude (coverage)

Mede quantos usuários chegam até cada etapa do funil.

Exemplo:

WITH funnel AS (
  SELECT user_pseudo_id,
    MAX(event_name = 'view_product') AS view_product,
    MAX(event_name = 'add_to_cart') AS add_to_cart,
    MAX(event_name = 'purchase') AS purchase
  FROM clean.events
  GROUP BY user_pseudo_id
)
SELECT 
  SUM(view_product) AS views,
  SUM(add_to_cart) AS carts,
  SUM(purchase) AS purchases;
WITH funnel AS (
  SELECT user_pseudo_id,
    MAX(event_name = 'view_product') AS view_product,
    MAX(event_name = 'add_to_cart') AS add_to_cart,
    MAX(event_name = 'purchase') AS purchase
  FROM clean.events
  GROUP BY user_pseudo_id
)
SELECT 
  SUM(view_product) AS views,
  SUM(add_to_cart) AS carts,
  SUM(purchase) AS purchases;
WITH funnel AS (
  SELECT user_pseudo_id,
    MAX(event_name = 'view_product') AS view_product,
    MAX(event_name = 'add_to_cart') AS add_to_cart,
    MAX(event_name = 'purchase') AS purchase
  FROM clean.events
  GROUP BY user_pseudo_id
)
SELECT 
  SUM(view_product) AS views,
  SUM(add_to_cart) AS carts,
  SUM(purchase) AS purchases;

Quedas abruptas indicam:

  • falha de tracking

  • regressão no front-end

  • erro no SGTM

8. Checklists prontos para devs, marketing e dados

Checklist técnico (devs)

  • parâmetros corretos

  • event_id sempre enviado

  • timestamps UTC

  • currency presente

  • UTMs preservadas após redirects

  • GTM carregando antes de scripts custom

Checklist de marketing

  • UTMs consistentes

  • nomenclatura padronizada

  • consistency Ads → GA4

  • validação de origem

Checklist de dados

  • dedupe funcionando

  • modelagem aplicada

  • reconciliação diária

  • alertas automáticos por erro

9. Como integrar auditoria no pipeline (o segredo dos times avançados)

A auditoria deve ocorrer:

Diariamente:

  • divergência Ads × GA4 × CRM

  • quedas de volume

Semanalmente:

  • comparação histórica

  • validação de UTMs

Mensalmente:

  • revisão de schema

  • validação de modelagem

  • ajustes no SGTM

Após cada deploy:

  • smoke test de tracking

  • validação de parâmetros

  • monitoramento de duplicações

10. Como conectar este post à série

👉 Post 1 - Como construir dashboards que refletem a “verdade de negócio” (GA4 + BigQuery)
👉 Post 2 - Como padronizar métricas entre equipes e ferramentas (GA4, CRM, Ads e BigQuery)
👉 Post 3 - Como alinhar definições de conversão entre GA4, Ads e CRM (e finalmente parar com divergências)
👉 Post 4 - Como limpar conversões no GA4: deduplicação, parâmetros obrigatórios e validação técnica
👉 Post 5 — Como construir pipelines confiáveis com BigQuery: coleta, limpeza e versionamento de métricas
👉 Post 6 — Como modelar conversões corretamente: lógica, deduplicação, janelas e atribuição multi-origem
👉 Post 7 — Auditoria técnica de métricas: como validar dados, detectar erros e garantir integridade no GA4 + BigQuery
👉 Post 8 - Como criar um Sistema Oficial de Métricas para sua empresa (ou ONG): governança, padronização e ciclo de melhoria contínua)

Referências

👉 GA4 Debugging
👉 Enhanced Conversions
👉 Advanced Consent Mode
👉 BigQuery Quality Controls

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Posts relacionados:

Posts relacionados:

Compartilhe!

Go back

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

© 2010 - 2026 Copyright

All Rights Reserved - Develop by Ad Rock Digital Mkt

Tecnologias utilizadas

© 2010 - 2026 Copyright

All Rights Reserved - Develop by
Ad Rock Digital Mkt

Tecnologias utilizadas