Segundo o relatório de transparência da IAB Tech Lab 2024, 92% dos publishers brasileiros possuem um arquivo ads.txt publicado. O problema? Apenas 34% desses arquivos estão configurados de forma a maximizar o acesso a licitações de advertisers premium que exigem supply chain 100% transparente.
E você, como publisher qualificado que já implementou seu stack de Header Bidding e gerencia múltiplos SSPs via GAM, provavelmente já validou que seu ads.txt está “correto” – sem erros de sintaxe, sem alertas vermelhos no Google Publisher Console.
Mas sua receita não está onde deveria estar.
O problema não está na sua arquitetura programática. Está nas “rachaduras invisíveis” dentro das configurações de ads.txt e sellers.json que SSPs premium interpretam como “falta de transparência” – bloqueando silenciosamente suas impressões de leilões tier-1, derrubando CPMs em 15-30%, e reduzindo seu fill rate em segmentos de alta demanda.
Este artigo vai auditar as 7 configurações críticas de ads.txt e sellers.json que nosso time de AdOps investiga primeiro quando um publisher relata CPMs estagnados, mesmo com tráfego crescente e stack otimizado. Vamos diagnosticar o que auditar, por que custa dinheiro, e onde encontrar os sinais de que você está perdendo receita premium neste exato momento.
1. Entries duplicados ou conflitantes
Quando você adiciona um novo SSP ao seu stack, é comum que o parceiro forneça uma linha para adicionar ao ads.txt. O erro crítico? Adicionar essa linha sem auditar se já existe um entry anterior para o mesmo seller_account_id.
Se o seu ads.txt contém:
google.com, pub-1234567890, DIRECT, f08c47fec0942fa0
google.com, pub-1234567890, RESELLER, f08c47fec0942fa0
Você acabou de criar um conflito. O mesmo ID está declarado como DIRECT e RESELLER. SSPs premium que validam ads.txt via automated crawlers vão rejeitar ambas as linhas por ambiguidade, bloqueando 100% das licitações desse parceiro.
O Google AdX, Amazon Publisher Services e outros SSPs tier-1 operam sob políticas de “zero tolerance” para conflitos de declaração. Um entry duplicado não gera um aviso no seu dashboard — simplesmente desqualifica seu inventário de leilões premium. O impacto médio? 20-35% de queda no CPM desse SSP específico, porque você está competindo apenas em leilões open exchange (tier-2/tier-3), não em private marketplaces.
O diagnóstico
Você precisa auditar seu ads.txt com um script de validação que identifique:
- Seller IDs duplicados com relationship types diferentes (DIRECT vs RESELLER)
- Entries para o mesmo domínio SSP com IDs conflitantes
- Linhas que foram adicionadas manualmente vs. linhas geradas automaticamente (se você usa um gerenciador)
Impacto no publisher orgânico:
Além da perda de CPM, entries conflitantes podem ser interpretados pelo Google como “tentativa de manipular supply chain”, afetando negativamente sua pontuação de E-E-A-T em auditorias algorítmicas de Ad Experience.
2. Ausência de Reseller Chains completos
Header Bidding não funciona apenas com conexões diretas (DIRECT). A maioria da demanda premium vem de resellers indiretos — exchanges que compram através de outros SSPs intermediários (a famosa “reseller chain”).
Se o seu ads.txt declara apenas:
appnexus.com, 123456, DIRECT, f5ab79cb980f11d1
Mas o AppNexus também revende seu inventário através de Xandr, Index Exchange e Magnite (via reseller agreements), e você não declarou esses resellers, SSPs downstream vão rejeitar suas impressões por “unauthorized seller”.
Demand indireto representa 60-75% do volume de licitações em Header Bidding. Sem reseller chains completos, você está cortando 3 de cada 4 licitantes do leilão. O resultado? Fill rate baixo em horários de pico, CPMs medianos, e a sensação de que “Header Bidding não está entregando o prometido”.
O diagnóstico:
A auditoria crítica aqui é cruzar seu ads.txt com os sellers.json de cada SSP parceiro. Ferramentas como o Ads.txt Crawler da IAB Tech Lab conseguem mapear automaticamente as reseller chains que você está perdendo. O que você busca:
- SSPs que aparecem no seu Prebid.js mas não no seu ads.txt
- Resellers declarados no sellers.json do SSP primário que não constam no seu arquivo
- Gaps entre o número de bidders configurados no wrapper e o número de entries no ads.txt
Impacto no publisher de performance:
Se você opera com arbitragem de tráfego pago, a ausência de reseller chains completos destrói seu ROI. Você está pagando $0.15-0.25 por clique no Google Ads, mas gerando apenas $0.10-0.12 de RPM porque 70% da demanda não consegue licitar. O resultado? Clawbacks de receita e campanhas breakeven ou negativas.
3. IDs desatualizados de ex-parceiros
Você testou um SSP há 18 meses, não renovou o contrato, mas esqueceu de remover a linha do ads.txt. Agora, esse ID obsoleto está gerando 2 problemas simultâneos:
- Falsos positivos de transparência: Crawlers de DSPs interpretam que você ainda trabalha com aquele parceiro, mas não encontram sellers.json correspondente (porque o SSP não está mais ativo). Resultado? Alerta de “incomplete supply chain”.
- Diluição de autoridade: Quanto mais entries você tem no ads.txt, mais complexa é a validação. SSPs premium priorizam publishers com arquivos “limpos” (10-15 entries) sobre publishers com arquivos “poluídos” (40+ entries, muitos inativos).
DSPs enterprise (que compram via PMPs e programmatic guaranteed) auditam a “limpeza” do ads.txt antes de aprovar deals. Um arquivo com 20+ entries obsoletos sinaliza “falta de governança”, levando o buyer a classificar seu inventário como “medium quality” em vez de “premium” — o que reduz os bid floors que ele está disposto a pagar em 15-25%.
O diagnóstico:
A auditoria essencial aqui é cruzar seu ads.txt com os últimos 90 dias de receita no GAM. Qualquer entry que não gerou impressões pagas nos últimos 3 meses é candidato à remoção. Além disso, você deve validar:
- Se o SSP ainda existe (muitos foram adquiridos ou descontinuados)
- Se o seller_account_id mudou (comum após fusões)
- Se você ainda tem login ativo no dashboard do SSP
4. Falta de sincronização entre Ads.txt e Sellers.json
Ads.txt e sellers.json não são arquivos independentes. Eles funcionam como um sistema de validação cruzada:
- Ads.txt (publisher-side): Você declara quem PODE vender seu inventário.
- Sellers.json (SSP-side): O SSP declara quem ELE está vendendo.
Se o seu ads.txt diz:
pubmatic.com, 123456, DIRECT, 5d62403b186f2ace
Mas o sellers.json da PubMatic declara esse mesmo ID como seller_type: "INTERMEDIARY" (não como DIRECT), há uma discrepância de declaração. SSPs downstream vão interpretar isso como “possível fraude” ou “erro de configuração”, bloqueando licitações.
Essa discrepância é especialmente crítica em programmatic guaranteed e preferred deals, onde o buyer exige 100% de match entre ads.txt e sellers.json. Se há conflito, o deal simplesmente não dispara — você perde receita garantida e precisa voltar para open auction, onde os CPMs são 40-60% menores.
O diagnóstico:
Você precisa fazer uma auditoria cruzada manual ou via ferramenta (como o Ads.txt Validator da Prebid.org) que:
- Baixa seu ads.txt
- Baixa o sellers.json de cada SSP declarado
- Compara o
seller_account_ide oseller_type(DIRECT vs INTERMEDIARY vs RESELLER) - Identifica mismatches
Impacto no publisher orgânico:
Para publishers focados em SEO e conteúdo evergreen, a falta de sincronização pode prejudicar parcerias de longo prazo com advertisers premium que exigem certificação de transparência (Ex: campanhas de bancos, seguros, educação) — segmentos que pagam CPMs 2-3x maiores que a média.
5. Uso de “DIRECT” quando deveria ser “RESELLER”
A diferença entre DIRECT e RESELLER não é semântica — é técnica e tem implicações legais:
- DIRECT: Você tem um contrato direto com o SSP e gerencia seu inventário diretamente via dashboard.
- RESELLER: Você não tem contrato direto. Seu inventário é revendido através de uma MCM, network ou outro intermediário.
Se você opera via Google MCM (como a parceria AdSeleto), mas declarou seu pub-id como DIRECT:
google.com, pub-1234567890, DIRECT, f08c47fec0942fa0
Você está tecnicamente incorreto. O correto seria RESELLER (ou omitir o entry, pois a MCM parent já declara no ads.txt dela). O problema? DSPs enterprise rejeitam essa configuração por violar as regras do OpenRTB 2.6 Ads.txt spec.
Quando um DSP detecta esse erro, ele não compra suas impressões via leilão programático — ele só compra se você estiver em uma whitelist manual (o que é raro). O resultado? 30-50% de queda no fill rate em campanhas de brand safety tier-1 (automotivo, tecnologia, finanças).
O diagnóstico:
A auditoria fundamental aqui é revisar sua estrutura de monetização:
- Você tem login direto no AdX? → DIRECT está correto.
- Você acessa AdX via MCM? → RESELLER ou entry via parent.
- Você usa um network intermediário? → RESELLER obrigatório.
Se você não tem certeza, a regra prática é: se você não gerencia o publisher ID diretamente no dashboard do SSP, use RESELLER.
6. Ausência do domínio raiz no Ads.txt de subdomínios
Se você publica conteúdo em múltiplos subdomínios (Ex: blog.seusite.com, noticias.seusite.com, tech.seusite.com), cada subdomínio precisa ter seu próprio arquivo ads.txt — ou um redirect 301 para o ads.txt do domínio raiz.
Se blog.seusite.com gera 40% do seu tráfego, mas não possui ads.txt (ou possui um ads.txt desatualizado), 100% das impressões desse subdomínio são classificadas como “unauthorized” por SSPs que validam por domínio.
Você está perdendo 40% do inventário do melhor segmento (blogs geram CPMs 20-30% maiores que páginas genéricas, por terem maior dwell time e engagement). A perda não é proporcional — é total. Nenhum SSP premium vai licitar em inventário “unauthorized”, então você perde 100% da receita desse subdomínio.
O diagnóstico:
A auditoria essencial é mapear todos os subdomínios ativos (via Google Search Console ou Analytics) e verificar:
- Cada subdomínio possui
/ads.txtacessível? - O ads.txt do subdomínio é idêntico ao do domínio raiz?
- Se você usa redirect 301, ele está funcionando? (Teste com
curl -I https://blog.seusite.com/ads.txt)
Impacto no publisher de performance:
Se você opera com arbitragem multi-canal (tráfego pago direcionado para diferentes subdomínios por vertical), a ausência de ads.txt em subdomínios secundários destrói o ROI de campanhas segmentadas. Você paga pelo clique, mas não monetiza a impressão.
7. Falta de atualização contínua
Ads.txt não é um arquivo estático. Ele precisa ser atualizado sempre que:
- Você adiciona um novo SSP ao stack
- Um SSP atualiza seu seller_account_id (comum após migrações de plataforma)
- Você muda de MCM ou network
- Um parceiro é descontinuado ou adquirido
A maioria dos publishers configura o ads.txt uma vez e nunca mais revisa. Resultado? Após 12-18 meses, 40-60% dos entries estão desatualizados, conflitantes ou obsoletos.
SSPs atualizados (com novos IDs) não conseguem licitar porque seu ads.txt não autoriza o novo seller_account_id. Enquanto isso, SSPs antigos (já desativados) continuam consumindo “autoridade” do arquivo. O efeito líquido? Queda progressiva de CPM ao longo do tempo — o publisher acha que é “queda de mercado”, mas é falta de manutenção técnica.
O diagnóstico
Você precisa estabelecer uma rotina de auditoria trimestral:
- Revisar receita por SSP nos últimos 90 dias (remover entries sem revenue)
- Validar se os IDs ainda correspondem aos dashboards dos SSPs
- Cruzar com sellers.json para garantir sincronização
- Testar o ads.txt via Ads.txt Validator (ferramentas automatizadas)
A regra prática: se você não revisou seu ads.txt nos últimos 6 meses, há 70% de chance de que você está perdendo receita por configurações obsoletas.
Impacto no publisher orgânico:
Para publishers que constroem audiência a longo prazo, a falta de manutenção do ads.txt pode sabotar anos de trabalho. Um ads.txt “poluído” reduz a percepção de qualidade do inventário, afastando advertisers premium que preferem publishers com governança técnica clara.
Conclusão
Como vimos, otimizar um stack programático não é sobre reconstruir toda a arquitetura: é sobre identificar e selar as “rachaduras” invisíveis que drenam receita silenciosamente.
Os 7 erros que auditamos neste artigo (entries duplicados, reseller chains incompletos, IDs obsoletos, falta de sincronização com sellers.json, uso incorreto de DIRECT/RESELLER, ausência de ads.txt em subdomínios, e falta de manutenção contínua) são responsáveis por 15-30% de perda de CPM em publishers médios e grandes — mesmo aqueles com stacks tecnicamente sofisticados.
Os 3 takeaways críticos:
- Ads.txt não é compliance, é otimização de receita. Um arquivo “correto” (sem erros de sintaxe) não é suficiente. Você precisa de um arquivo otimizado para demand premium.
- A relação entre ads.txt e sellers.json é sistêmica, não isolada. Auditar um sem cruzar com o outro é deixar dinheiro na mesa.
- Monetização programática exige manutenção contínua. Se você configurou seu ads.txt há mais de 6 meses e não revisou, está operando com pelo menos 3-5 erros críticos neste momento.
A diferença entre um publisher que gera $8-12 de RPM e um que gera $15-22 de RPM (mesmo com o mesmo tráfego e qualidade de conteúdo) está nessas configurações invisíveis que só uma auditoria técnica especializada consegue mapear.
Pronto para selar as rachaduras do seu stack? Agende uma auditoria gratuita de ads.txt/sellers.json com nossos especialistas. Vamos identificar os gaps de receita e entregar um plano de otimização customizado para sua operação.
Visão AdSeleto
Depois de auditar mais de 120 publishers brasileiros nos últimos 3 anos, descobri um padrão que poucos falam: a perda de receita por ads.txt/sellers.json mal configurados é quase sempre proporcional ao nível de maturidade técnica do publisher.
Publishers iniciantes (AdSense puro) raramente têm esse problema — eles usam o ads.txt padrão do Google e pronto. A armadilha está nos publishers médios e grandes, que montaram stacks complexos com múltiplos SSPs, testaram dezenas de parceiros ao longo dos anos, e acumularam “dívida técnica” no ads.txt sem perceber.
A métrica que eu uso como red flag? Se o seu ads.txt tem mais de 25 entries, mas apenas 8-10 SSPs geraram receita nos últimos 90 dias, você está operando com 62-70% de “peso morto” no arquivo. Isso não só bloqueia demand premium, mas sinaliza para DSPs enterprise que você não tem governança técnica — o que te desqualifica de PMPs tier-1 antes mesmo do leilão começar.
A correção não é complexa. A complexidade está em saber onde procurar. E isso só vem de quem auditou centenas de arquivos e correlacionou cada erro com a perda exata de CPM no mês seguinte.