Visão geral do URL selecionado

Com a API Select URL, você pode escolher qual conteúdo mostrar a um usuário com base nos dados do Shared Storage, sem revelar os dados armazenados.

Quando você quiser mostrar conteúdo com base em dados entre sites de uma forma que respeite a privacidade, use a API Select URL. A API Select URL funciona bem para casos de uso como:

  • Conteúdo de teste A/B para uma experiência do usuário consistente em vários sites.
  • Mostrar um botão de login diferente para usuários que têm uma conta e para usuários que não têm.
  • Rotação de criativos de publicidade para limitar a frequência com que um usuário vê o mesmo anúncio em vários sites.

O que é a API Select URL?

A API Select URL permite escolher entre um conjunto de URLs com base em dados entre sites. A API é criada com base no Shared Storage e usa um SharedStorageWorklet para ler os dados entre sites disponíveis e selecionar um dos URLs fornecidos. O URL selecionado é retornado ao chamador de uma forma que impede a leitura, exceto em um frame isolado. O URL também pode ser renderizado em um iframe até pelo menos 2026.

Diagrama mostrando o iframe shoes.example incorporado aos sites de diferentes editores, incluindo news.example e blog.example. O site shoes.com pode acessar o próprio armazenamento não particionado de cada site de nível superior.

No diagrama anterior, o site shoes.example pode ser incorporado a outros sites de editores, como news.example, e ainda acessar os mesmos dados usando Select URL com armazenamento compartilhado para escolher o conteúdo adequado a ser incorporado.

Como funciona a opção "Selecionar URL"

Você pode usar a API Select URL para selecionar um URL a ser renderizado em um frame isolado ou iframe usando dados entre sites. Use JavaScript para ler e gravar dados entre sites no Shared Storage e selecione um URL de uma lista fornecida com base nos dados armazenados.

Qualquer site ou origem inscrita pode gravar dados no armazenamento compartilhado. Depois, os sites só podem ler esses dados com a API Select URL.

O URL renderizado pode incluir qualquer tipo de conteúdo: anúncios, artigos, imagens, HTML, calls-to-action (como botões) e muito mais.

Neste exemplo, você tem um site de viagens e está veiculando uma campanha publicitária com três criativos de anúncio diferentes. Você quer sequenciar esses criativos com base nas interações do usuário (visualização ou clique).

Três criativos de anúncio, 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 clique, o próximo criativo que o usuário vê diz "Conheça viagens de fim de semana". Depois de visualizar ou clicar, o terceiro criativo incentiva os usuários a "Clicar para receber seu desconto no hotel". Se o usuário clicar no primeiro anúncio, o próximo que ele vai ver é o terceiro criativo.

Quando um site 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.

Exemplo:

await sharedStorage.set('last-creative', 'globe');
await sharedStorage.set('click', 'true');

Isso significa que, quando você ganha um leilão de anúncios em outros sites que esse 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.

Seu JavaScript é executado em um SharedStorageWorklet para recuperar essas informações, mas seu código não pode interagir ou se comunicar fora do iframe ou do frame isolado na página principal.

Por exemplo, você pode testar qual artigo teria melhor desempenho em um contexto incorporado. Para testar isso, atribua um usuário a um grupo de experimento quando ele acessar seu site e armazene o ID do grupo no Shared Storage para acesso em um contexto entre sites. Em outro site, use a API Select URL para escolher o URL mais adequado a ser renderizado em um frame isolado, com base no grupo de experimento desse usuário, conforme armazenado com o Armazenamento compartilhado.

Com a opção "Selecionar URL", você toma decisões conscientes com base em dados de vários sites sem compartilhar informações do usuário (como histórico do navegador ou outros detalhes pessoais) com um site de incorporação ou exfiltrar dados para seus próprios servidores.

Orçamentos

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

  • Orçamento de longo prazo: o orçamento de longo prazo é de 12 bits por site de chamada por dia ao usar selectURL(). Esse orçamento só será 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 oito URLs para escolher, o custo será de 3 bits. O orçamento restante do dia é calculado como 12 - (sum of bits deducted in the last 24 hours). Se não houver orçamento suficiente, o URL padrão (o primeiro da lista) será retornado, e 1 bit será registrado se o URL padrão for acessado.
  • Orçamentos de curto prazo: são limites adicionais por carregamento de página até que os frames isolados sejam totalmente aplicados e os relatórios no nível do evento estejam disponíveis. Há um orçamento de 6 bits por site de chamada, por carregamento de página que limita o quanto um único site de chamada pode vazar 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.

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

    Para implementar consultas salvas, adicione a propriedade "savedQuery" com o nome da consulta escolhida ao objeto de opções, como mostrado neste exemplo.

    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;
    

Selecionar casos de uso da API URL

Se você estiver criando um site com recursos que precisam funcionar em diferentes domínios, poderá ter um dos seguintes casos de uso:

  • Girar criativos de anúncio: limite a frequência com que um usuário vê o mesmo anúncio em vários sites armazenando dados, como ID do criativo, contagens de visualizações e interação do usuário, para determinar quais criativos os usuários veem em diferentes sites. Isso permite equilibrar as visualizações e evitar a saturação de determinado conteúdo para limitar uma possível experiência negativa do usuário. Para mais informações sobre esse caso de uso, consulte Fazer a rotação de criativos de anúncios.
  • Selecionar criativo de anúncio por frequência: armazene as contagens de visualizações do navegador no Shared Storage para limitar a frequência com que um usuário vê o mesmo anúncio em vários sites. Para mais informações sobre esse caso de uso, consulte Selecionar um criativo de anúncio por frequência.
  • Personalize a experiência do usuário para clientes conhecidos: ofereça uma experiência consistente em diferentes domínios. Compartilhe conteúdo personalizado e chamadas para ação com base no status de registro ou em outros estados do usuário, e ofereça uma experiência consistente em diferentes domínios. Para mais informações sobre esse caso de uso, consulte Personalizar a experiência do usuário para clientes conhecidos.
  • Faça um teste A/B: um teste A/B compara duas ou mais versões de uma configuração para determinar qual tem o melhor desempenho. Você pode atribuir um usuário a um grupo de teste e armazenar esse grupo no armazenamento compartilhado para acesso entre sites. Isso permite coletar insights sobre o comportamento do usuário em toda a rede de sites sem rastrear indivíduos. Para mais informações sobre esse caso de uso, consulte Executar testes A/B.

A API Select URL com Shared Storage permite desenvolver esses casos de uso ao ter acesso ao mesmo armazenamento em diferentes sites de nível superior.

Teste a demonstração

Você pode testar o Select URL usando a demonstração do armazenamento compartilhado.

Esta 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.

Você também pode revisar o código da demonstração no GitHub.

Status da API

A API Select URL está em disponibilidade geral. Para usar a API Select URL ou ativá-la para desenvolvimento local, siga as instruções para se inscrever no Sandbox de privacidade.

Proposal Status
Event-level reporting for Content Selection (selectURL()) Available until at least 2026
Per-site budgeting
Explainer
Available in M119
Debugging Shared Storage worklets with DevTools
Section
Available in M120

Engajamento e como compartilhar feedback

A proposta da API Select URL está em discussão e desenvolvimento ativos e está sujeita a mudanças.

Queremos saber o que você acha da API Select URL.