A TV conectada é hoje para onde vai boa parte do investimento em vídeo, e o lugar mais difícil para conferir o que você pagou. Uma campanha comprada para espectadores no Texas pode rodar em Nova York, em um app que você nunca escolheu, ou nem rodar, e o relatório ainda mostra impressões entregues. A verificação de anúncios em CTV significa assistir aos intervalos como um espectador real de cada região faria.
Este guia explica por que a CTV é difícil de verificar, quais checagens importam e uma forma prática de ver os anúncios que realmente rodam em cada região.
Por que a CTV é mais difícil de verificar
Em uma página web, um fornecedor de verificação roda um script ao lado do anúncio e lê o que acontece. Em uma TV, isso quase nunca funciona:
- Inserção de anúncios no servidor (SSAI). Muitos streams inserem os anúncios no vídeo em um servidor antes de ele chegar à TV. A requisição do anúncio vem desse servidor, que repassa o IP e os dados do dispositivo do espectador em cabeçalhos. Se um fraudador falsifica esse servidor, o “espectador” pode ser inventado.
- Medição limitada nos apps. Os apps de TV rodam em muitos sistemas operacionais, e nem todos suportam os SDKs de medição comuns na web e no celular, então as checagens de visibilidade e de dispositivo são irregulares.
- Sem cookies. A CTV depende de um ID de publicidade do dispositivo e do IP da residência. Ambos podem ser redefinidos ou falsificados.
- A região é definida pelo IP. A maioria dos serviços de streaming decide quais anúncios um espectador recebe, e muitas vezes qual conteúdo, pela localização do IP da residência.
- Cadeias de fornecimento longas e em camadas. Uma impressão pode passar pelo app, por uma plataforma de oferta e por vários revendedores antes de você comprá-la.
O resultado: os relatórios de CTV descrevem o que foi dito ao servidor de anúncios, não necessariamente o que rodou em uma tela.
O que checar
Uma rotina útil de verificação em CTV cobre cinco pontos:
- Geografia. O anúncio rodou só nas regiões compradas? Cheque de dentro de cada região alvo e também de fora, para pegar vazamentos.
- Inventário. Rodou nos apps e canais que foram vendidos a você? Compare o app com o
app-ads.txtdo publisher e a lista de vendedores acordada. - Criativo. A versão certa está rodando em cada mercado, incluindo idioma, oferta e texto legal?
- Qualidade de entrega. O anúncio rodou inteiro, em um intervalo limpo, sem tela preta, corte ou repetição do mesmo spot?
- Contexto. Que conteúdo estava ao redor do anúncio? Brand safety importa tanto no streaming quanto na web.
Os logs de entrega não respondem nenhuma dessas perguntas sozinhos. Você precisa de observações do lado do espectador.
Como checar anúncios de streaming por região
Muitos serviços de streaming com anúncios também rodam no navegador, e seus players web pedem anúncios de forma parecida com os apps de TV. Por isso, um navegador atrás de um IP local é um ponto de observação prático.
1. Monte um plano por região e canal
Liste as regiões da campanha, os serviços e canais comprados e os horários em que seus spots devem rodar. Acrescente uma ou duas regiões não compradas para pegar entregas fora do plano.
2. Entre em cada região com um IP residencial
Os serviços de streaming deduzem a localização pelo IP e muitas vezes recusam ou tratam de outra forma o tráfego de datacenter. Use proxies residenciais segmentados na cidade que você precisa e mantenha um IP durante toda a sessão com um ID de sessão sticky, para que o serviço veja uma única residência.
customer-USERNAME-country-us-city-dallas-sid-dal-ctv-01-ttl-1800:PASSWORD
3. Rode o stream e registre os intervalos
Abra o player web em um navegador real, inicie um stream e capture duas coisas: as requisições e respostas de anúncios do player (muitas vezes XML VAST ou VMAP) e o vídeo de cada intervalo. Anote por anúncio: ID do criativo, anunciante, duração, posição no intervalo, região, horário e o conteúdo ao redor.
Uma captura mínima com Playwright fica assim:
from playwright.sync_api import sync_playwright
PROXY = {
"server": "http://p.shifter.io:443",
"username": "customer-USERNAME-country-us-city-dallas-sid-dal-ctv-01-ttl-1800",
"password": "PASSWORD",
}
def capture_ad_calls(stream_url, seconds=600):
seen = []
with sync_playwright() as p:
browser = p.chromium.launch(proxy=PROXY, headless=False)
page = browser.new_page()
def on_response(resp):
ctype = resp.headers.get("content-type", "")
if "xml" in ctype and ("vast" in resp.url.lower() or "vmap" in resp.url.lower()):
seen.append({"url": resp.url, "status": resp.status, "body": resp.text()})
page.on("response", on_response)
page.goto(stream_url, wait_until="domcontentloaded")
page.wait_for_timeout(seconds * 1000)
browser.close()
return seen
O filtro de URL é um ponto de partida: cada serviço nomeia suas chamadas de anúncio de um jeito, então olhe a aba de rede uma vez e ajuste. Com inserção no servidor, o anúncio já vem dentro do vídeo e pode não haver chamada VAST para capturar. Nesse caso, a gravação de tela do intervalo é a sua prova.
4. Compare com o plano
Para cada região e serviço, confronte o que rodou com o que foi comprado. Marque anúncios vistos fora das regiões compradas, anúncios ausentes em regiões compradas, versões erradas de criativo e intervalos com tela preta ou repetições.
5. Faça checagens pontuais nos apps nativos
Para um app nativo de TV, coloque um dispositivo de teste em uma rede roteada pelo proxy e repita a sessão. Trate isso como checagem pontual: apps podem usar seus próprios meios para localizar o espectador.
Sinais de fraude para observar
As checagens do lado do espectador também revelam os padrões por trás da maior parte da fraude em CTV:
- Impressões entregues em regiões onde nenhum anúncio aparece nas suas próprias sessões.
- Apps na fatura que você não encontra, ou que não listam o vendedor no seu
app-ads.txt. - Combinações impossíveis de dispositivos, como muito tráfego de “TV” vindo de uma rede de datacenter.
- Intervalos mais longos do que o conteúdo permite, sinal de blocos de anúncios inflados.
Para o lado da detecção, nosso guia para detectar fraude de anúncios em tempo real aprofunda os sinais.
Dicas práticas
- Rode residências, não só cidades. Use um novo ID de sessão a cada sessão de visualização, para que um único IP não represente um mercado inteiro.
- Assista nos horários certos. Muitas campanhas são programadas por faixa horária, então um intervalo vazio às 3 da manhã não prova nada.
- Ajuste o navegador à região. Fuso horário e idioma devem combinar com o IP, ou o serviço pode tratar a visita como incomum.
- Guarde as provas. Salve a gravação, a resposta do anúncio e a localização do IP de cada intervalo marcado, para que um pedido de compensação se sustente.
- Use o mesmo método para display. É a mesma abordagem usada para encontrar anúncios ocultos e geossegmentados na web.
Resumo
Os relatórios de CTV dizem o que foi informado ao servidor de anúncios. Para saber o que realmente rodou, assista aos intervalos de dentro de cada região: um IP residencial na cidade alvo, uma residência por sessão, uma gravação de cada intervalo e uma comparação com o plano. Faça isso periodicamente nas regiões que você compra, e vazamentos, entregas ausentes e criativos errados aparecem antes do fim da campanha.