Queda de CPM: o checklist técnico de diagnóstico em 5 passos (sem culpar a sazonalidade)

May 27, 2026 às 1:51 PM

Quedas bruscas de CPM raramente são causadas por sazonalidade. Variações de 5% a 10% semana a semana são normais em mídia programática; mas queda de 20%+ que persiste por dias seguidos tem causa específica — geralmente viewability degradada, timeout em SSPs, perda de demanda premium, floor price desatualizado ou combinação desses fatores. Este guia mostra como isolar a variável real em 5 passos, na ordem certa, antes de mexer em qualquer configuração.

Toda segunda-feira, alguém abre o dashboard do Google Ad Manager e vê o gráfico apontando pra baixo. A reação padrão tem duas fases: primeiro culpa o “mercado fraco”, depois entra em pânico e começa a mexer em floor price, refresh rate e ad units esperando que alguma coisa reverta a queda.

Quase sempre, essa abordagem piora o problema.

WinUp Network

Pronto para Decolar?

Junte-se a milhares de publishers que já estão maximizando sua receita com a tecnologia espacial da WinUp.

O motivo é simples: queda de CPM é um sintoma, não uma causa. Mexer em configurações sem diagnóstico é como tomar remédio sem saber a doença. Pior — as variáveis interagem: viewability baixa derruba bid density, que reduz fill rate, que afeta CPM. Atacar a métrica errada acelera a espiral.

Este guia apresenta o mesmo método que ad ops profissionais usam: um diagnóstico sistemático que elimina variáveis na ordem correta até identificar a causa real.

Antes do checklist: quando sazonalidade explica de verdade

Sazonalidade existe. Janeiro tem CPMs naturalmente mais baixos porque budgets de Q4 foram queimados na Black Friday e Natal. Julho costuma ser fraco no Brasil por estar fora do calendário comercial. Esses são padrões reais.

O problema é que sazonalidade vira muleta. Como diferenciar queda sazonal de problema operacional? Três sinais:

  • Sazonalidade afeta o mercado proporcionalmente. Se concorrentes do seu nicho não reportam queda similar, não é sazonalidade.
  • Sazonalidade segue calendário previsível. Queda numa terça aleatória de março não é sazonal — é problema técnico.
  • Sazonalidade impacta CPM, raramente fill rate ou bid density. Se essas métricas caíram junto, você tem problema operacional.

Eliminada a sazonalidade, sobram cinco famílias de causas, que cobrem praticamente todos os casos:

  1. Demanda — perdeu acesso a SSPs premium, vendor desconectado, brand safety bloqueou seu domínio
  2. Qualidade de inventário — viewability caiu, invalid traffic aumentou, ad units em posições piores
  3. Infraestrutura técnica — latência do site subiu, scripts de header bidding quebraram, lazy loading mal configurado
  4. Yield desatualizado — floor prices defasados, refresh agressivo demais, densidade excessiva
  5. Perfil de tráfego — mais mobile que desktop, mais tier 2-3 que tier 1, mais direto e menos orgânico qualificado

Os 5 passos abaixo investigam essas categorias na ordem de maior probabilidade.

Passo 1: o problema está na demanda ou no inventário?

Comece pelo fill rate. Ele revela em qual lado da equação está o gargalo.

Cenário A — fill rate e CPM caíram juntos: problema de demanda. Tem menos anunciante competindo pelas suas impressões. Causas típicas: um SSP importante parou de funcionar (desconexão, violação de política, bug técnico), seu site foi categorizado errado pelo classifier (site de finanças marcado como adulto, por exemplo), ou anunciantes excluíram seu domínio em mudanças de brand safety.

Cenário B — fill rate alto (90%+) mas CPM despencou: problema de qualidade de inventário. As impressões vendem, mas pra compradores de segunda linha. Causas típicas: viewability caiu e anunciantes premium pararam de licitar, floor price baixo demais permitindo que qualquer lance vença, ou perda de acesso a PMPs (deals privados) que pagavam CPMs superiores.

Como segmentar fill rate no GAM

Análise agregada não diagnostica nada. Vá em Relatórios → Histórico e crie um relatório com:

  • Dimensões: Data (diária), Rede de anúncios, Tamanho do anúncio, País, Tipo de dispositivo
  • Métricas: Taxa de preenchimento, eCPM, Receita, Impressões disponíveis, Impressões preenchidas

Procure padrões assimétricos. Se o Index Exchange caiu de 85% pra 40% de fill rate enquanto outros SSPs mantiveram performance, o problema é específico daquele vendor. Se mobile caiu mas desktop não, latência mobile ou timeout em conexões 4G é a hipótese mais provável.

O sinal mais subestimado: discrepância entre relatórios

Compare impressões reportadas pelo GAM com impressões reportadas pelos SSPs individuais. Discrepâncias acima de 10% indicam problema técnico — ad units carregando errado, impressões contadas mas não leiloadas, ou IVT inflando números no GAM enquanto SSPs filtram. Essa discrepância silenciosa é o motivo de muitos sites terem fill rate “aparentemente saudável” mas receita não condizente.

Passo 2: viewability e invalid traffic

Viewability mede se o anúncio foi efetivamente visto, não apenas servido. Uma impressão pode ser tecnicamente contabilizada mas nunca ter aparecido na tela do usuário — carregou abaixo da dobra, em aba inativa, ou o visitante saiu antes do scroll.

O Media Rating Council (MRC) estabelece 70% de viewability como threshold mínimo pra anunciantes premium. Abaixo disso, você é excluído automaticamente de campanhas de alto valor.

A relação não é linear

Aqui está o detalhe que muita gente perde: a penalidade por viewability baixa é exponencial, não proporcional.

Viewability médiaImpacto típico no CPM
75%+Acesso pleno a demanda premium
65-70%CPM 10-15% abaixo do ideal
50-60%CPM 40-50% abaixo — perda de camada inteira de demand
Abaixo de 50%Cauda longa apenas, sem premium

Além disso, SSPs como Magnite e Index Exchange ajustam lances automaticamente baseado no histórico de viewability do publisher. Se a sua média caiu, os algoritmos já estão licitando menos antes do leilão começar — você foi precificado pra baixo.

Diagnosticando viewability no GAM

Vá em Relatórios → Histórico, adicione métrica “Viewability ativa (%)” e dimensão “Nome do bloco de anúncios”. Você vai descobrir que tipicamente 2-3 posições problemáticas (rodapé, sidebar inferior, anúncios em pontos de baixo scroll depth) estão arrastando a média. As posições premium (above the fold, in-content) normalmente seguem saudáveis.

Invalid traffic: o assassino invisível

IVT inclui mais do que botnets de fraude — abrange crawlers de SEO, ferramentas de monitoramento, abas deixadas abertas com auto-refresh, e tráfego incentivado de qualidade duvidosa.

SSPs filtram IVT antes de leiloar. Se o GAM reporta 1 milhão de impressões disponíveis mas SSPs participam de leilão em apenas 700 mil, você descobriu o gap: 300 mil impressões classificadas como inválidas. Pior: você calcula eCPM dividindo receita por 1 milhão, então o CPM “efetivo” aparece 30% menor do que a realidade dos leilões mostraria.

Teste rápido: divida o número de impressões disponíveis pelo número de pageviews. Sites bem configurados ficam em 3-5 impressões por pageview (a depender de quantos ad units por página). Se essa proporção dispara pra 15-20, você tem refresh rate descontrolado ou scripts duplicando ad units por erro — e SSPs detectam esse padrão como suspeito.

Ferramentas como DoubleVerify ou IAS dão a visão completa, separando IVT geral (bots conhecidos, datacenters) de IVT sofisticado (fraude coordenada). Publishers profissionais mantêm IVT geral abaixo de 2% e IVT sofisticado próximo de zero.

Passo 3: timeout rates e latência

Leilões programáticos têm janela curta — geralmente 1.000 a 2.000 milissegundos. Se um SSP não responde com lance dentro dessa janela, é excluído daquele leilão. Menos bidders = menos competição = CPM menor.

Por que 5% de timeout já é crítico

A matemática é direta. Se o Index Exchange tem timeout de 15%, ele não participa de 15% dos seus leilões. Se ele normalmente ganharia 20% deles (com CPMs altos), você está perdendo 3% do seu melhor demand sem nem perceber. Multiplique por 3-4 SSPs com timeout elevado e a perda de receita facilmente chega a 10-15%.

Como referência:

  • Até 3% de timeout: normal, latência ocasional
  • 3% a 5%: investigar, mas não emergência
  • Acima de 5%: problema estrutural, ataque ativamente
  • Acima de 10%: SSP está praticamente fora dos seus leilões

O culpado pode ser seu próprio site

Latência alta do site causa timeouts em massa. Scripts de header bidding competem por recursos do browser com tudo o mais que sua página carrega. Em conexão mobile lenta, isso é determinante.

Teste fundamental: compare timeout rates entre desktop e mobile. Se desktop tem 3% e mobile 12-15%, latência é o culpado, não o SSP.

Métricas-chave pra acompanhar:

  • Time to Interactive (TTI) acima de 5 segundos → header bidding compete por recursos escassos
  • Largest Contentful Paint (LCP) acima de 2,5 segundos → browser sobrecarregado

A solução costuma estar fora da configuração de SSP: lazy loading de imagens, defer de scripts não-críticos, CDN pra assets estáticos, redução de JavaScript bloqueante. Otimizar o site melhora tanto Core Web Vitals (que ajuda SEO) quanto performance dos leilões. Dois ganhos pelo mesmo trabalho.

Identificando SSPs problemáticos individualmente

Use Prebid Analytics (ou ferramentas como Pubstack/Admiral) e ordene bidders por timeout rate descendente. Pra cada SSP com timeout acima de 5%, três opções:

  1. Aumentar timeout específico daquele adapter (Prebid permite configuração por bidder)
  2. Substituir o vendor por alternativa com infraestrutura melhor
  3. Mover para server-side via Prebid Server, onde timeouts são menos sensíveis ao browser

Pista útil: timeouts concentrados em horário de pico (18h-22h) indicam capacidade de infraestrutura do SSP, não problema seu. Negocie com o account manager antes de remover.

Passo 4: bid density (e por que ela importa mais que fill rate)

Bid density mede quantos bidders efetivamente participam de cada leilão, não quantos você tem configurados. É a diferença entre ter 12 SSPs no stack e ter 12 SSPs competindo de verdade.

O leilão que parece saudável mas está morto

Imagine floor price de US$ 2. Cenário A: um único bidder participa e oferece US$ 2,10. Você preenche a impressão (fill rate 100%), mas vendeu pelo mínimo aceitável. Cenário B: cinco bidders competem e o vencedor paga US$ 4,80. Mesmo fill rate, mais que o dobro de receita.

Fill rate olha o resultado. Bid density olha o processo. É a diferença entre ter inventário vendido e ter inventário disputado.

Como referência saudável: se você tem 12+ SSPs configurados, espere que 60-70% participem da maioria dos leilões. Se apenas 30-40% participam consistentemente, os outros são peso morto técnico — adicionam latência sem agregar demand.

Como identificar perda de demanda premium

Perda de premium se manifesta como queda de bid density em segmentos específicos. Exemplo típico: bid density em tráfego desktop tier 1 (EUA, UK) cai de 8-9 bidders para 4-5, enquanto mobile tier 2-3 segue estável. Isso indica que anunciantes premium (que focam desktop tier 1) saíram dos seus leilões.

Causas comuns:

  • Viewability caiu abaixo do threshold mínimo desses anunciantes
  • Problemas de brand safety classificaram seu conteúdo errado
  • PMPs (deals privados) foram descontinuados sem aviso
  • Compliance expirou — ads.txt desatualizado, sellers.json incompleto, TCF 2.2 desconfigurado pra Europa

No GAM, vá em Inventário → Ofertas e filtre por status ativo. Compare o número de deals ativos agora com o de 30-60 dias atrás. Queda no número de PMPs é diagnóstico direto: você perdeu acesso a leilões premium e está dependente só do open auction.

SSPs zumbis: presentes mas inativos

Frequentemente, queda de bid density acontece porque algum SSP parou silenciosamente. Credenciais expiraram, o vendor bloqueou seu domínio por suspeita de IVT, mudança de política excluiu seu nicho, ou simplesmente bug na integração.

Crie um relatório no GAM com receita por rede dos últimos 30 dias. Procure vendors que geravam receita consistente e agora estão em zero ou próximo. Se o Index Exchange gerava R$ 10.000/mês e abruptamente caiu pra R$ 200, ele está praticamente inativo — pode até enviar lances ocasionais, mas saiu dos leilões.

Verifique no console do browser (F12) durante o carregamento da página. Erros como “Failed to load adapter” ou “Invalid credentials” entregam o problema. Se nada técnico aparece, contate o account manager com dados específicos: data exata da queda, percentual, comparação antes/depois.

Passo 5: floor price e configurações de yield

Floor price desatualizado é provavelmente o erro mais comum em publishers que rodam GAM por mais de seis meses sem revisão. Mercado se move; configurações estáticas não acompanham.

Os dois cenários do floor errado

Floor baixo demais. Você configurou US$ 1,50 há seis meses quando o CPM médio era US$ 3-4. Hoje o mercado paga US$ 5-6, mas seu floor segue US$ 1,50. Resultado: fill rate perfeito, mas você está vendendo barato. Subsidiando comprador.

Floor alto demais. Configurou US$ 4 num momento aquecido. A demanda esfriou, CPMs médios caíram pra US$ 2,50-3,50, mas seu floor manteve US$ 4. Resultado: fill rate despenca, você perde receita por precificação desalinhada — não por falta de demanda.

Teste rápido pra saber em qual cenário você está:

  • Se eCPM atual está 50%+ acima do floor → você está vendendo barato, suba o floor
  • Se eCPM está 10-15% acima → você está perto do ótimo, ajustes finos
  • Se eCPM está igual ou abaixo → seu floor está claramente alto demais

A/B test é o único método confiável

Suposição nesse tema custa caro. Divida o inventário em dois grupos: A com floor atual, B com floor 20% acima (ou abaixo, se a hipótese for que está alto). Rode por 7-10 dias e compare receita total, não apenas eCPM.

Cenário ilustrativo:

GrupoFlooreCPMFill rateReceita por mil impressões disponíveis
AUS$ 2,00US$ 3,2085%US$ 2,72
BUS$ 2,50US$ 3,6070%US$ 2,52

Grupo B tem eCPM maior, mas Grupo A gera mais receita total. Floor de US$ 2 ganha — o ganho em fill rate compensou o eCPM ligeiramente menor.

Importante: floor único pra todo o tráfego é subotimização garantida. Desktop tier 1 pode tolerar US$ 5; mobile tier 2 brasileiro funciona melhor com US$ 1,20. Configure por device e GEO.

Refresh rate e densidade de anúncios

Refresh aumenta o inventário sem aumentar pageviews — atraente, mas tem três armadilhas:

  1. Impressões refreshed têm CPM 30-50% menor que a impressão inicial
  2. Refresh agressivo (abaixo de 30 segundos) é penalizado por muitos SSPs
  3. Refresh em ad units below the fold gera impressões não-visíveis que destroem a viewability média

Regras práticas: só implemente refresh em posições comprovadamente visíveis (above the fold, in-content sticky), com intervalo mínimo de 30-45 segundos, e pause quando a aba estiver inativa.

Quanto à densidade de anúncios, mais nem sempre é melhor. Sites editoriais costumam performar bem com 3-5 ad units por página (above the fold, mid-content, end-content); páginas de listagem suportam 5-7. Acima disso, geralmente você sacrifica CPM e UX por volume de impressões que não compensa. Teste remover as 1-2 unidades de pior performance — frequentemente, a receita total se mantém ou sobe, porque a viewability melhora e anunciantes premium voltam a licitar.

O resumo em uma tabela

PassoMétrica-chaveThreshold saudávelSinal de problema
1. Fill rateTaxa de preenchimento por SSPConsistente com baselineQueda assimétrica por vendor
2. Viewability% de impressões visíveis (MRC)70%+Abaixo de 65%
3. Timeout rate% de leilões com timeout por SSPAbaixo de 3%Acima de 5%
4. Bid densityBidders ativos por leilão60-70% dos SSPs configuradosApenas 30-40% participam
5. Floor priceeCPM vs flooreCPM 10-30% acima do flooreCPM ≤ floor, ou >50% acima

O que dá pra resolver sozinho e o que não dá

Depois do diagnóstico, parte das soluções é puramente operacional. Você consegue resolver sozinho:

  • Floor price desatualizado → ajustar nas Regras de Preços Unificadas do GAM, segmentar por device/GEO
  • Ad units com viewability baixa → remover posições problemáticas ou implementar lazy loading básico
  • SSP claramente inativo → desabilitar e medir impacto em fill rate/CPM
  • Densidade excessiva → remover 1-2 ad units de menor performance
  • Compliance básica → atualizar ads.txt, validar sellers.json, revisar categorias do site no GAM

Outros problemas pedem expertise que não está no manual:

  • Timeouts estruturais em múltiplos SSPs → arquitetura de header bidding, possível migração pra Prebid Server, otimização profunda de performance
  • Perda de PMPs e demand premium → relacionamento direto com buyers e SSPs, mais fácil via parceiros MCM (Multiple Customer Management) com relacionamento estabelecido
  • IVT contaminando 15%+ do tráfego → exige ferramentas de verificação (DoubleVerify/IAS), análise forensic de fontes, possível reformulação da estratégia de aquisição
  • Viewability estruturalmente baixa por arquitetura do site → mudanças de layout, sticky ads bem implementadas, reconfiguração avançada de lazy loading

Os red flags que indicam problema estrutural

Três sinais de que a queda não é pontual e sim sintoma de monetização mal configurada:

  • 12+ SSPs integrados mas bid density média de 3-4 bidders por leilão. A maioria do seu stack não está funcionando.
  • Métricas oscilam 40-50% dia a dia sem padrão claro. Indica instabilidade técnica — scripts intermitentes, configurações conflitantes.
  • Múltiplas “soluções” implementadas nos últimos meses sem reverter a queda. Quando tentativa e erro repetido falha, o problema não é uma configuração — é a abordagem.

Nesses casos, especialmente quando o diagnóstico revela múltiplos problemas simultâneos, otimizar coordenadamente vira tarefa de quem faz isso em escala. Mexer em uma variável afeta outras: aumentar timeout pode degradar UX, remover ad units melhora viewability mas reduz inventário. Orquestrar otimizações que se complementam em vez de conflitar exige metodologia, não palpite.

Para fechar

A queda de CPM quase nunca é o que parece à primeira vista. Não é “mercado fraco” — é fill rate degradado num SSP específico, viewability abaixo de 70%, timeout matando competição, bid density inexistente, ou floor que ficou anos-luz atrás do mercado.

O valor do diagnóstico sistemático não está em “encontrar a solução”, está em parar de mexer no que não é o problema. Publishers que aumentam o floor quando o problema era viewability só aprofundam a queda. Os que adicionam SSPs quando o stack já está sobrecarregado de timeout pioram a latência. O método dos 5 passos não promete reverter qualquer queda — promete que, quando você for agir, vai estar agindo na variável certa.

Se rodar o checklist e o diagnóstico apontar pra problemas estruturais (header bidding mal arquitetado, perda de PMPs, IVT alto), vale conversar com quem faz monetização em escala. Se apontar pra ajustes operacionais, o GAM e o Prebid já te dão tudo que você precisa pra resolver na próxima semana.

A pior decisão é continuar achando que é sazonalidade.