Meta, Google, TikTok e LinkedIn, uma fonte por conta
Registro conta para cliente e escala de cada plataforma
Mídia de toda a carteira numa tabela só
Dashboard, relatório, agente de IA e alertas
O que resolve
- Uma tabela só com o investimento de todos os clientes, comparável entre Meta, Google, TikTok e LinkedIn.
- Cada conta de anúncio pertence a um cliente declarado, e o número de um cliente nunca aparece no do outro.
- O total por cliente e por dia bate com cada gerenciador, sem fator de um milhão, moeda misturada ou dia trocado.
Perguntas de negócio que responde
Faça estas perguntas ao seu agente quando o caso estiver pronto.
O que você precisa
- As contas de anúncio de cada cliente conectadas na Nekt (uma fonte por conta)
- Um registro conta para cliente: plataforma, id da conta, cliente, moeda, fuso e status
- O critério de cada cliente para contas compartilhadas e imposto sobre a verba
O que você recebe
- Uma tabela unificada por cliente, plataforma, campanha e dia, já em reais
- Um registro versionado que diz de qual cliente é cada conta
- Um alerta de contas sem cliente e de fontes paradas
- Um agente de IA que responde sobre a carteira sem misturar clientes
Onde ativar
Investimento e resultado de todos os clientes lado a lado, com filtro por cliente e plataforma.
Responde sobre qualquer cliente, isolando cada um pelo registro.
Conta sem cliente, fonte parada e cliente que zerou o investimento.
As regras de cada plataforma são fechadas. O trabalho está no registro conta para cliente e em mantê-lo vivo quando entra ou sai cliente. O detalhado traz as regras de negócio, as armadilhas e o teste de aceitação. Ou mande tudo direto para o seu agente com o MCP da Nekt.
Cada cliente vira uma fonte por plataforma, e a agência acaba com dezenas de tabelas iguais por fora e diferentes por dentro. O Google manda custo em micros, o Meta manda tudo como texto, cada conta tem moeda e fuso próprios. E a conta de anúncio não é o cliente: um cliente tem várias contas, uma conta serve mais de uma marca, e o nome da conta raramente é o nome do cliente.
Como costuma ser feito, e a regra
Cada linha é um erro que já aconteceu na prática.
Mantenha um registro com uma linha por conta: plataforma, account_id (ou customer_id do Google), client_id, moeda, fuso, status e data de início e fim. A tabela unificada pega o cliente por plataforma + account_id. O prefixo da tabela e o nome da conta no gerenciador são da conta, não do cliente, e casar por nome não serve como prova.
Google: metrics_cost_micros ÷ 1.000.000 (orçamento e lance em micros também). Meta: spend, impressions e clicks chegam como texto e viram número. LinkedIn: costInLocalCurrency é texto. TikTok: spend por stat_time_day. Converta em cada braço, antes do UNION, para que a coluna investimento tenha a mesma unidade em todas as linhas.
Leia a moeda da conta (currency na tabela de contas da plataforma) e leve a coluna moeda até o fim. Para consolidar a carteira, converta com uma cotação declarada e datada, ou deixe a conta de fora e diga que deixou. Conta em dólar somada com contas em real gera um total sem significado.
O Meta agrega date_start no fuso da conta, e o Google entrega date como o dia da conta, muitas vezes num timestamp à meia-noite. Use o dia como veio. Converter esse timestamp para outro fuso joga o investimento para o dia anterior. Guarde o fuso de cada conta no registro e só compare contas de fusos diferentes sabendo disso.
Defina um contrato de colunas (data, cliente, plataforma, conta, campanha, conjunto, anúncio, moeda, investimento, impressões, cliques, resultado) e liste as colunas em cada braço do UNION ALL, com tipo forçado. Ids viram texto: campaign_id é número numa plataforma e texto na outra, e o cruzamento com a tabela de campanhas do Google precisa do CAST.
Investimento, impressões e cliques saem dos relatórios diários (adsinsights, campaign_performance, campaign_analytics, daily_report). As tabelas de contas, campanhas e conjuntos só enriquecem nome, status e objetivo. A lista de contas não define quais contas existem, e configuração ausente não apaga gasto realizado.
Toda linha leva client_id. Quando a conta não casa no registro, a linha fica com status de mapeamento UNMAPPED_ACCOUNT e entra num alerta. Ela não vai para cliente nenhum e não é descartada em silêncio. A cobertura de mapeamento (investimento com cliente / investimento total) é um número que a agência acompanha.
Quando a conta é dividida com o time interno do cliente ou entre marcas, só entram as campanhas da agência ou da marca, por um termo no nome da campanha guardado no registro (nome em minúsculas, com _ virando espaço). Fonte de agência que atende vários clientes, como perfil de empresa no Google, precisa de filtro pelo id do local de cada cliente.
Fonte retirada, congelada ou reconectada com outro prefixo convive com a nova. Marque no registro qual fonte está ativa e com qual vigência, e nunca some uma tabela congelada com a consolidada. Em fontes que reextraem o mesmo dia, fique com a versão mais recente de cada chave antes de somar.
PMax não tem anúncio individual. Use o relatório de anúncio para Search, Display e Vídeo e o relatório de campanha só para as campanhas PMax. Nunca some os dois níveis da mesma campanha.
Como cada plataforma entrega o custo e o dia
Converta no braço de cada plataforma, antes de unir.
Definições
link_clickArmadilhas que já aconteceram
Padronizar a coluna de custo do Google e do Meta da mesma forma faz uma das duas mentir por um milhão. No total salta aos olhos; em CPA e ROAS os micros podem se cancelar e passar.
Converta em cada braço e confira o total de um dia contra cada gerenciador.
A data do Google chega como timestamp à meia-noite. Converter esse valor para o fuso de São Paulo leva tudo para o dia anterior, e num monitor de frescor isso fez a fonte parecer atrasada.
Trate a data da plataforma como dia, sem conversão de fuso.
O UNION ALL casa por posição. Bastou o conector de uma conta ganhar uma coluna para a tabela da carteira inteira parar.
Liste as colunas em cada braço e mantenha o schema de saída idêntico.
Fontes retiradas ficaram congeladas ao lado da consolidada, e quem somou as duas dobrou o investimento daqueles clientes.
Registre a fonte ativa e a vigência de cada conta.
O nome do cliente diverge entre mídia, CRM, financeiro e planilha de controle, e o cruzamento por nome falhava na maioria das linhas. Contas com nome parecido são unidades distintas.
Cruze por id de conta ou documento, com tabela de apelidos só como pista.
Apagar o dado do cliente que saiu sem tirar o braço dele quebrou a consulta da carteira. Deixar o braço faz o alerta acusar atraso para sempre.
Marque o status no registro com data de fim e remova o braço sem mudar o schema de saída.
spend, impressions e clicks do Meta chegam como texto, o custo do Google vem em micros, costInLocalCurrency do LinkedIn vem como texto, e as datas do Google e do LinkedIn chegam como timestamp à meia-noite.Teste de aceitação
O caso está pronto quando todos os itens passam.
- Para um cliente e um mês fechado, o investimento de cada plataforma bate com o gerenciador correspondente (diferença abaixo de 1%).
- O investimento de um dia escolhido bate com o gerenciador no mesmo dia, em cada plataforma (prova de que o dia não foi deslocado).
- A soma do investimento da tabela unificada é igual à soma das fontes ativas no registro, já convertidas, sem nenhuma fonte congelada.
- Nenhuma linha fica sem client_id fora do status UNMAPPED_ACCOUNT, e a lista de contas não mapeadas é conferida a cada semana.
- A chave plataforma, conta, campanha, dia (e anúncio, quando houver) não se repete.
Pacote para o agente
Cole no Claude, ChatGPT ou outro cliente com o MCP da Nekt conectado.
Mídia paga da carteira - O cliente de cada linha vem do registro conta para cliente (plataforma + account_id). Nunca deduza o cliente pelo nome da tabela, da conta ou da campanha. - Dados de outro cliente não são evidência para este cliente, mesmo com tabelas e métricas de nome parecido. - Investimento já está em moeda: Google foi dividido por 1.000.000; Meta e LinkedIn foram convertidos de texto para número. - Nunca some investimento de moedas diferentes. Se precisar consolidar, diga a cotação usada ou que a conta ficou de fora. - A data é o dia da conta na plataforma. Não converta fuso. - CTR, CPC, CPM, CPA e ROAS são recalculados das somas do período, nunca média de taxas diárias. - Contas com status UNMAPPED_ACCOUNT não pertencem a cliente nenhum: cite como pendência, não atribua. - Fontes congeladas ou retiradas não entram em totais. - Para resultado por objetivo no Meta, siga as regras do caso Resultado do Meta Ads por objetivo. Exceções por cliente: - <cliente>: conta compartilhada com o time interno; só entram campanhas com <termo> no nome. - <cliente>: conta <id> opera em <moeda>; fica fora do total da carteira. - <cliente>: custo do Meta reportado com imposto de <x>% sobre a verba.
Construa no meu workspace Nekt o caso "Mídia paga de toda a carteira" seguindo as regras em https://academy.nekt.com/industrias/agencias/midia-paga-carteira.md. 1) Encontre as tabelas de origem e confirme as colunas usadas pelas regras. 2) Crie uma transformação no grão indicado aplicando todas as regras. 3) Rode o teste de aceitação e me mostre o resultado de cada item. 4) Crie o context document do caso no workspace, com as exceções dos meus clientes em aberto para eu preencher.
Variações
O mesmo registro define quem da equipe ou do cliente vê cada conta no dashboard.
Novo braço com a mesma lista de colunas: a tabela da carteira não muda.
O registro aponta conta para marca e marca para grupo, com a mesma regra de isolamento.