Gerar relatórios de dados agregados usando dados da Protected Audience e dados entre sites da Shared Storage.
Para oferecer recursos essenciais para a Web, a API Private Aggregation foi criada para agregar e gerar relatórios sobre dados em sites de forma a preservar a privacidade.
Status da implementação
Proposta | Status |
---|---|
Evite relatórios inválidos da API Private Aggregation com a verificação de relatórios para o Shared Storage Explicação |
Disponível no Chrome |
A disponibilidade do modo de depuração da agregação privada depende da qualificação de 3PC Issue do GitHub (em inglês) |
Disponível no Chrome M119 |
Como reduzir o atraso no envio de relatórios Explicação |
Disponível no Chrome M119 |
Tempo limite de contribuição da Private Aggregation para o Shared Storage Explicação |
Disponível na M119 |
Suporte à API Private Aggregation e ao serviço de agregação para o Google Cloud Explicação |
Disponível no Chrome M121 |
Padding para payloads de relatórios agregáveis Explicação |
Disponível no Chrome M119 |
Modo de depuração da Private Aggregation disponível para o relatório "auctionReportBuyers" Explicação |
Disponível no Chrome M123 |
Suporte a IDs de filtro Explicação |
Disponível no Chrome M128 |
Fusão de contribuições do lado do cliente Explicação |
Disponível no Chrome M129 |
Limites de contribuição por contexto Explicação |
Prevista para o 1º trimestre de 2025 |
Orçamentos de privacidade nomeados que pré-alocam o orçamento de privacidade para diferentes casos de uso de medição Explicação |
Prevista para o 2º trimestre de 2025 |
Relatório de erros agregados que depura problemas de implementação sem depender de cookies de terceiros Explicação |
Prevista para o 2º trimestre de 2025 |
O que é a API Private Aggregation?
A API Private Aggregation permite que os desenvolvedores gerem relatórios de dados agregados com dados da API Protected Audience e dados entre sites do Shared Storage.
A principal função dessa API é conhecida como contributeToHistogram()
. A operação de histograma permite agregar dados de usuários em cada bucket (conhecido na API como uma chave de agregação) que você define.
A chamada de histograma acumula valores e retorna um resultado agregado com ruído na forma de um relatório de resumo. Por exemplo, o relatório pode mostrar o número de sites em que cada usuário viu seu conteúdo ou encontrou um bug no script de terceiros. Essa operação é realizada no worklet de outra API.
Por exemplo, se você já gravou dados demográficos e geográficos no Shared Storage, use a API Private Aggregation para criar um histograma que informa aproximadamente quantos usuários na cidade de Nova York viram seu conteúdo em vários sites. Para agregar essa medição, codifique a dimensão de geografia na chave de agregação e conte os usuários no valor agregável.
Principais conceitos
Quando você chama a API Private Aggregation com uma chave de agregação e um valor agregável, o navegador gera um relatório agregável.
Os relatórios agregáveis são enviados ao seu servidor para coleta e agrupamento em lotes. Os relatórios em lote são processados mais tarde pelo Serviço de agregação, e um relatório de resumo é gerado.
Consulte o documento Fundamentos da API Private Aggregation para saber mais sobre os principais conceitos envolvidos na API Private Aggregation.
Diferenças da API Attribution Reporting
A API Private Aggregation tem muitas semelhanças com a API Attribution Reporting. A API Attribution Reporting é independente e foi projetada para medir conversões, enquanto a agregação particular foi criada para medições entre sites em conjunto com APIs como a Protected Audience e o armazenamento compartilhado. Ambas as APIs produzem relatórios agregáveis que são consumidos pelo back-end do serviço de agregação para gerar relatórios resumidos.
Os Relatórios de atribuição associam dados coletados de um evento de impressão e um evento de conversão, que acontecem em momentos diferentes. A agregação particular mede um único evento entre sites.
Testar esta API
Para testar a API Private Aggregation localmente, ative todas as APIs de privacidade de anúncios em chrome://settings/adPrivacy
.
Leia mais sobre testes em experimentar e participar.
Usar a demonstração
A demonstração da API Private Aggregation para Shared Storage pode ser acessada em goo.gle/shared-storage-demo, e o código está disponível no GitHub. A demonstração implementa as operações do lado do cliente e produz um relatório agregável que é enviado ao seu servidor.
Uma demonstração da API Private Aggregation para a API Protected Audience será publicada no futuro.
Casos de uso
A Private Aggregation é uma API de uso geral para medição entre sites e está disponível para uso em worklets do Shared Storage e da Protected Audience API. A primeira etapa é decidir especificamente quais informações você quer coletar. Esses pontos de dados são a base das suas chaves de agregação.
Com armazenamento compartilhado
O armazenamento compartilhado permite ler e gravar dados entre sites em um ambiente seguro para evitar vazamentos, e a API Private Aggregation permite medir dados entre sites armazenados no armazenamento compartilhado.
Medição do Unique Reach
Talvez você queira medir quantos usuários únicos viram o conteúdo. A API Private Aggregation pode fornecer uma resposta como "Aproximadamente 317 usuários únicos viram o Content ID 861".
É possível definir uma flag no Shared Storage para indicar se o usuário já viu o conteúdo ou não. Na primeira visita em que a flag não existe, uma chamada para agregação privada é feita e, em seguida, a flag é definida. Nas visitas subsequentes do usuário, incluindo as entre sites, você pode verificar o Armazenamento compartilhado e pular o envio de um relatório para a Private Aggregation se a flag estiver definida. Para saber mais sobre os métodos de implementação dessas medições, consulte nosso artigo sobre alcance.
Medição de dados demográficos
Talvez você queira medir as informações demográficas dos usuários que viram seu conteúdo em diferentes sites.
A agregação privada pode fornecer uma resposta, como "Aproximadamente 317 usuários únicos têm entre 18 e 45 anos e são da Alemanha". Use o Shared Storage para acessar dados demográficos de um contexto de terceiros. Mais tarde, você pode gerar um relatório com agregação privada codificando as dimensões de faixa etária e país na chave de agregação.
Medição de frequência K+
Você pode medir o número de usuários que viram um conteúdo ou anúncio pelo menos K vezes em um determinado navegador, para um valor pré-escolhido de K.
A agregação privada pode fornecer uma resposta como: "Aproximadamente 89 usuários viram o Content ID 581 pelo menos três vezes". Um contador pode ser incrementado no armazenamento compartilhado de diferentes sites e lido em um worklet. Quando a contagem atinge K, um relatório pode ser enviado usando a agregação privada.
Atribuição multitoque
A atribuição de marketing é um método usado por anunciantes para determinar a contribuição das táticas de marketing e das interações subsequentes com anúncios para vendas ou conversões.
Com a API Protected Audience
A API Protected Audience permite casos de uso de retargeting e público-alvo personalizado, e a agregação particular permite informar eventos de worklets de compradores e vendedores. A API pode ser usada para tarefas como medir a distribuição de lances de leilão.
Em um worklet da API Protected Audience, é possível agregar seus dados diretamente usando contributeToHistogram()
e gerar relatórios com base em um gatilho usando contributeToHistogramOnEvent()
, que é uma extensão especial da API Protected Audience.
Funções disponíveis
As seguintes funções estão disponíveis no objeto privateAggregation
disponível nos worklets da API Shared Storage e Protected Audience.
contributeToHistogram()
É possível chamar privateAggregation.contributeToHistogram({ bucket: <bucket>, value: <value> })
, em que a chave de agregação é bucket
e o valor agregável é value
. Para o parâmetro bucket
, é necessário um BigInt
. Para o parâmetro value
, é necessário um número inteiro.
Confira um exemplo de como ele pode ser chamado no armazenamento compartilhado para medição de alcance:
iframe.js
// Cross-site iframe code
async function measureReach() {
// Register worklet
await window.sharedStorage.worklet.addModule('worklet.js');
// Run reach measurement operation
await window.sharedStorage.run('reach-measurement', {
data: { contentId: '1234' }
});
}
measureReach();
worklet.js
// Shared storage worklet code
function convertContentIdToBucket(campaignId){
// Generate aggregation key
}
// The scale factor is multiplied by the aggregatable value to
// maximize the signal-to-noise ratio. See "Noise and scaling"
// section in the Aggregation Fundamentals document to learn more.
const SCALE_FACTOR = 65536;
class ReachMeasurementOperation {
async run(data) {
const key = 'has-reported-content';
// Read the flag from Shared Storage
const hasReportedContent = await sharedStorage.get(key) === 'true';
// Don't send report if the flag is set
if (hasReportedContent) {
return;
}
// Send histogram report
// Set the aggregation key in `bucket`
// Bucket examples: 54153254n or BigInt(54153254)
// Set the scaled aggregatable value in `value`
privateAggregation.contributeToHistogram({
bucket: convertContentIdToBucket(data.contentId),
value: 1 * SCALE_FACTOR
});
// Set the flag in Shared Storage
await sharedStorage.set(key, true);
}
}
register('reach-measurement', ReachMeasurementOperation);
O exemplo de código anterior vai chamar a agregação particular sempre que o conteúdo do iframe entre sites for carregado. O código do iframe carrega o worklet, e ele chama a API Private Aggregation com o ID do conteúdo convertido em uma chave de agregação (bucket).
contributeToHistogramOnEvent()
Somente nos worklets da API Protected Audience, oferecemos um mecanismo baseado em acionadores para enviar um relatório apenas se um determinado evento ocorrer. Essa função também permite que o agrupamento e o valor dependam de indicadores que ainda não estão disponíveis naquele momento do leilão.
O método privateAggregation.contributeToHistogramOnEvent(eventType, contribution)
usa um eventType
que especifica o evento de acionamento e o contribution
a ser enviado quando o evento é acionado. O evento de acionamento pode vir do próprio leilão após o término dele, como um evento de vitória ou perda, ou de um frame isolado que renderizou o anúncio.
Para enviar um relatório de eventos de leilão, use duas palavras-chave reservadas, reserved.win
, reserved.loss
e reserved.always
. Para enviar um relatório acionado por um evento de um frame isolado, defina um tipo de evento personalizado. Para acionar o evento de um frame isolado, use o método fence.reportEvent()
disponível na API Fenced Frames Ads Reporting.
O exemplo a seguir envia um relatório de impressão quando o evento de vitória do leilão é acionado e um relatório de clique se um evento click
for acionado do frame isolado que renderizou o anúncio. Esses dois valores podem ser usados para calcular a taxa de cliques.
function generateBid(interestGroup, auctionSignals, perBuyerSignals, trustedBiddingSignals, browserSignals) {
// …
privateAggregation.contributeToHistogramOnEvent("reserved.win", {
bucket: getImpressionReportBucket(),
value: 1
});
privateAggregation.contributeToHistogramOnEvent("click", {
bucket: getClickReportBuckets(), // 128-bit integer as BigInt
value: 1
});
Consulte a explicação sobre os relatórios de agregação particulares estendidos para saber mais.
enableDebugMode()
Enquanto os cookies de terceiros ainda estiverem disponíveis, vamos fornecer um mecanismo temporário que permite depuração e testes mais fáceis ao ativar o modo de depuração. Um relatório de depuração é útil para comparar suas medições baseadas em cookies com as de agregação privada e também permite validar rapidamente a integração da API.
Chamar privateAggregation.enableDebugMode()
no worklet ativa o modo de depuração, o que faz com que os relatórios agregáveis incluam o payload não criptografado (texto simples). Em seguida, processe esses payloads com a ferramenta de teste local do serviço de agregação.
O modo de depuração só está disponível para autores de chamadas com permissão para acessar cookies de terceiros. Se o caller não tiver acesso a cookies de terceiros, enableDebugMode()
vai falhar silenciosamente.
Também é possível definir a chave de depuração chamando privateAggregation.enableDebugMode({ <debugKey: debugKey> })
, em que um BigInt
pode ser usado como chave de depuração. A chave de depuração pode ser usada para associar dados de uma medição baseada em cookies e dados de uma medição da API Private Aggregation.
Eles só podem ser chamados uma vez por contexto. Todas as chamadas subsequentes vão gerar uma exceção.
// Enables debug mode
privateAggregation.enableDebugMode();
// Enables debug mode and sets a debug key
privateAggregation.enableDebugMode({ debugKey: BigInt(1234) });
Denunciar verificação
A API Private Aggregation permite a medição entre sites e protege a privacidade do usuário. No entanto, usuários mal-intencionados podem tentar manipular a acurácia dessas medições. Para evitar isso, use um ID de contexto para verificar a autenticidade dos relatórios.
Definir um ID de contexto ajuda a garantir que os dados sejam precisos ao contribuir para os resultados agregados finais. Isso é feito das seguintes maneiras:
- Prevenção de relatórios ilegítimos ou não autênticos:verifique se os relatórios são gerados por chamadas de API legítimas e autênticas, dificultando a criação de relatórios por atores mal-intencionados.
- Evitar a repetição de relatórios:detecta e rejeita qualquer tentativa de reutilizar relatórios antigos, garantindo que cada relatório contribua apenas uma vez para os resultados agregados.
Armazenamento compartilhado
Ao usar o armazenamento compartilhado para executar uma operação que pode enviar um relatório agregável, é possível definir um ID imprevisível fora do worklet.
Esse ID é incorporado ao relatório criado com base no worklet. É possível especificar isso
ao chamar os métodos de armazenamento compartilhado run()
ou selectURL()
, no
objeto de opções na chave privateAggregationConfig
.
Exemplo:
sharedStorage.run('measurement-operation', {
privateAggregationConfig: {
contextId: 'exampleId123456789abcdeFGHijk'
}
});
Depois que esse ID for definido, você poderá usá-lo para verificar se o relatório foi enviado da
operação de armazenamento compartilhado. Para evitar vazamento de informações, exatamente um relatório é enviado por operação de armazenamento compartilhado (mesmo que não haja contribuições), independente do número de chamadas contributeToHistogram()
.
A API Private Aggregation envia relatórios agregáveis com um atraso aleatório de até uma hora. No entanto, definir um ID de contexto para verificar um relatório reduz esse atraso. Nesse caso, há um atraso fixo e menor de 5 segundos desde o início da operação de armazenamento compartilhado.

Um exemplo de fluxo de trabalho (como mostrado no diagrama acima):
- A operação Shared Storage é executada com uma configuração de Private Aggregation que especifica um ID de contexto e gera um relatório agregável.
- O ID de contexto é incorporado ao relatório agregável gerado e enviado ao seu servidor.
- Seu servidor coleta os relatórios agregáveis gerados.
- Os processos no seu servidor verificam o ID de contexto em cada relatório agregável em relação aos IDs de contexto armazenados para verificar a validade antes de agrupar os relatórios e enviá-los ao Serviço de agregação.
Verificação do ID do contexto
Os relatórios recebidos no servidor de coleta podem ser verificados de algumas maneiras diferentes antes de serem enviados ao serviço de agregação. Relatórios com IDs de contexto inválidos podem ser rejeitados quando o ID de contexto:
- Desconhecido:se um relatório chegar com um ID de contexto que seu sistema não criou, descarte-o. Isso impede que agentes desconhecidos ou maliciosos injetem dados no seu pipeline de agregação.
- Uma cópia:se você receber dois ou mais relatórios com o mesmo ID de contexto, escolha qual deles descartar.
- Marcado na detecção de spam:
- Se você detectar atividade suspeita de um usuário, por exemplo, uma mudança repentina na atividade dele, enquanto processa a denúncia, descarte-a.
- É possível armazenar relatórios com os IDs de contexto e todos os indicadores relevantes (por exemplo, user agent, fonte de encaminhamento etc.). Depois, ao analisar o comportamento do usuário e identificar novos indicadores de spam, você pode reavaliar os relatórios armazenados com base nos IDs e indicadores de contexto associados. Isso permite descartar denúncias de usuários com atividade suspeita, mesmo que eles não tenham sido sinalizados inicialmente.
Engajamento e como compartilhar feedback
A API Private Aggregation está em discussão e sujeita a mudanças no futuro. Se você testar essa API e tiver feedback, envie sua opinião.
- GitHub: leia a explicação, faça perguntas e participe da discussão.
- Suporte para desenvolvedores: faça perguntas e participe das discussões no repositório de suporte para desenvolvedores do Sandbox de privacidade.
- Participe do grupo da API Shared Storage e do grupo da API Protected Audience para receber os avisos mais recentes relacionados à agregação particular.