Selecionar um URL com armazenamento compartilhado

Selecione um URL com base nos dados coletados no Shared Storage e renderize o conteúdo em um frame delimitado.

Com a API Shared Storage, é possível selecionar um URL para renderização em um frame protegido usando dados entre sites. Use JavaScript para ler e gravar dados entre sites e selecione um URL de uma lista fornecida com base nos dados armazenados. É possível renderizar esse URL em um frame fechado.

A seleção de URLs pode incluir qualquer tipo de conteúdo: anúncios, artigos, imagens, HTML, calls-to-action (como botões) e muito mais.

Por exemplo, digamos que você tenha um site de viagens e esteja veiculando uma campanha publicitária com três criativos diferentes. Você quer ordenar esses criativos com base nas interações do usuário (visualização ou clique).

Três criativos de anúncios, que são mostrados aos usuários com base na interação anterior.
O primeiro criativo para um novo espectador diz: "Parta para sua próxima aventura". Com apenas uma visualização e sem cliques, o usuário veria "Explorar viagens de fim de semana". Depois de visualizar ou clicar, o terceiro criativo incentiva os usuários a "Clique para receber seu desconto de hotel". Se o usuário clicar no primeiro anúncio, o próximo que ele vai ver será o terceiro criativo.

Quando um usuário observa um espaço de anúncio vencedor pela primeira vez, é possível armazenar um ID e o status do clique para esse criativo no armazenamento compartilhado. Isso significa que, quando você ganha um leilão de anúncios em outros sites que o usuário visita, é possível mostrar um anúncio diferente com base nesses dados.

Tutorial do armazenamento compartilhado com três criativos de anúncio e interação do usuário.

O JavaScript é executado em um worklet para extrair essas informações, mas o código não pode interagir ou se comunicar fora do iframe ou do frame cercado na página pai.

Vamos usar outro exemplo. Digamos que você queira testar qual artigo teria um desempenho melhor em um contexto incorporado. É possível atribuir um usuário a um grupo de experimentos quando ele aparece no seu site e armazenar esse ID de grupo no armazenamento compartilhado para ser acessado em um contexto entre sites. Em outro site, o frame delimitado pode selecionar um URL com base no grupo de experimentos do usuário armazenado com o Armazenamento compartilhado.

O Shared Storage permite que você tome decisões com base em dados entre sites, sem compartilhar informações do usuário (como histórico de navegação ou outros detalhes pessoais) com um site de incorporação ou exfiltrar dados para seus próprios servidores.

Casos de uso

A seleção de URL com armazenamento compartilhado oferece suporte a casos de uso como estes:

  • Roteie criativos de anúncios: é possível armazenar dados, como o ID do criativo e a interação do usuário, para determinar quais criativos os usuários veem em diferentes sites.
    • Frequência. As contagens de visualizações do navegador podem ser armazenadas no armazenamento compartilhado e usadas para decidir qual criativo é mostrado para um usuário.
  • Executar testes A/B: atribua um usuário a um grupo experimental e armazene o ID desse grupo com o armazenamento compartilhado para ser acessado em vários sites.
  • Personalizar a experiência do usuário: compartilhe conteúdo personalizado e calls-to-action com base no status de registro ou em outros estados de verificação do usuário.

Orçamentos

Para reduzir o risco de vazamento de dados entre sites, a API Select URL usa um sistema de alocação com uma combinação de orçamentos de curto e longo prazo:

  • Orçamento de longo prazo: 12 bits por site de autor da chamada por dia ao usar selectURL(). Esse orçamento só é cobrado se o frame que hospeda o URL selecionado realizar uma navegação de nível superior, em que o custo é calculado como log2(number of URLs). Portanto, se você fornecer 8 URLs para escolher, o custo será de 3 bits. Qualquer orçamento restante para o dia é calculado como 12 - (sum of bits deducted in the last 24 hours). Se o orçamento for insuficiente, o URL padrão (o primeiro URL da lista) será retornado e um bit será registrado se o URL padrão for acessado.
  • Orçamentos de curto prazo: limites adicionais por carregamento de página. Há um orçamento de 6 bits por site de chamada por carregamento de página que limita a quantidade de vazamento de um único site de chamada usando selectURL(). Há também um orçamento de 12 bits no total por carregamento de página, que é um limite combinado para todos os sites de chamada em uma página.

    As consultas salvas permitem reutilizar um resultado selectURL() anterior na mesma página, reduzindo o uso do orçamento a curto prazo. Quando selectURL() é chamado com um nome de consulta salvo pela primeira vez, o índice resultante é armazenado para a duração da página. Quando selectURL() é chamado com o mesmo nome de consulta salvo para chamadas de acompanhamento, o índice armazenado é retornado e a operação registrada não é executada. Nesse caso, o orçamento só será cobrado no primeiro uso, mas não nas reutilizações no mesmo carregamento de página, já que nenhuma informação nova é revelada.

    As consultas salvas podem ser implementadas adicionando a propriedade savedQuery, com o nome da consulta escolhido, ao objeto de opções, conforme mostrado no exemplo a seguir.

    const topProductUrls = [
      { url: 'https://ad.example/default-top-product.html' },
      { url: 'https://ad.example/experiment-top-product.html' }];
    const relatedProductUrls = [
      { url: 'https://ad.example/default-related-product.html' },
      { url: 'https://ad.example/experiment-related-product.html' }];
    
    // This is the first call to `selectURL()` with `savedQuery: 'control_or_experiment'`
    // on this page, so it will be charged to both per-page budgets.
    const topProductsConfig = await sharedStorage.selectURL(
      'productExperiment', topProductUrls, {
        savedQuery: 'control_or_experiment',
        keepAlive: true,
        resolveToConfig: true
    });
    document.getElementById('topProductsFencedFrame').config = topProductsConfig;
    
    // This next call with this savedQuery won't charge either of the per-page budgets.
    const relatedProductConfig = await sharedStorage.selectURL(
      'productExperiment', relatedProductUrls, {
        savedQuery: 'control_or_experiment',
        resolveToConfig: true
    });
    document.getElementById("relatedProductFencedFrame").config = relatedProductConfig;
    

Testar a seleção de URL

A seleção de URL com a API Shared Storage está disponível para testes no Chrome Canary/Dev/Beta M105 ou mais recente. Para testar a seleção de URL, ative todas as APIs de privacidade de anúncios em chrome://settings/adPrivacy.

Testar a demonstração

Uma demonstração está disponível, e você pode analisar o código no GitHub.

Essa demonstração foi criada na perspectiva de um anunciante, uma adtech, um distribuidor de conteúdo ou outro serviço de terceiros que quer armazenar informações em diferentes sites de editores. Na demonstração, o mesmo código de terceiros é executado nos sites do Editor A e do Editor B para cada caso de uso. Acesse a página de cada editor para saber como os dados são compartilhados em um contexto entre sites.

Interaja e compartilhe feedback

A proposta de armazenamento compartilhado está em discussão ativa e sujeita a alterações. no futuro. Se você testar essa API e tiver algum feedback, conte para nós.