Selecionar um criativo por frequência

Execute uma worklet de armazenamento compartilhado para selecionar um URL e renderizá-lo em um frame isolado.

A API Shared Storage é uma proposta do Sandbox de privacidade para armazenamento entre sites de uso geral e compatível com muitos casos de uso possíveis. Um exemplo é o controle de frequência, disponível para teste no Chrome Beta 104.0.5086.0 e versões mais recentes.

Execute um script de worklet para selecionar um URL de uma lista fornecida, com base nos dados armazenados, e renderize esse URL em um frame isolado. Isso poderá ser usado para selecionar novos anúncios ou outro conteúdo quando o limite de frequência for atingido.

Teste a seleção de criativos por frequência

Para testar a seleção de criativos por frequência com o Shared Storage e os Fenced Frames, confirme se você está usando o Chrome 104.0.5086.0 ou uma versão mais recente. Em seguida, ative a sinalização de experimento das APIs de anúncios do Sandbox de privacidade em chrome://flags/#privacy-sandbox-ads-apis.

Ative o experimento das APIs de anúncios do Sandbox de privacidade para usar essas APIs

Também é possível ativar o armazenamento compartilhado com a sinalização --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames na linha de comando.

Testar exemplos de código

Para selecionar e criar um URL opaco, registre um módulo de worklet para ler dados de armazenamento compartilhados. A classe de worklet recebe uma lista de até oito URLs e retorna o índice do URL escolhido.

Quando o cliente chama sharedStorage.selectURL(), o worklet é executado e retorna um URL opaco para ser renderizado em um frame isolado.

Digamos que você queira selecionar um anúncio ou conteúdo diferente para renderizar com base na frequência de quantas vezes um usuário já o viu antes. Você pode contar quantas vezes um usuário viu um conteúdo e armazenar esse valor no armazenamento compartilhado. Depois de armazenado, o valor no armazenamento compartilhado fica disponível para você em diferentes origens.

Em seguida, essa worklet de armazenamento compartilhado lê os valores contidos nele e incrementa o contador a cada visualização adicional. Se a contagem não atingir o limite predefinido, o conteúdo que você quer renderizar será retornado (índice 1). Caso contrário, o URL padrão será retornado (índice 0).

Neste exemplo:

  • creative-selection-by-frequencyjs é carregado usando o iframe do anunciante ou do produtor de conteúdo e é responsável por carregar a worklet de armazenamento compartilhado e renderizar a fonte opaca retornada em um frame isolado.
  • creative-selection-by-frequency-worklet.js é a worklet de armazenamento compartilhado que lê a contagem de frequência para determinar qual URL é retornado para um conteúdo ou um criativo de anúncio.

creative-selection-by-frequency.js

// The first URL is the default content or ad to be rendered when the frequency limits reached.
const CONTENT_URLS = [
  { url: `https://${contentProducerUrl}/default-content.html` },
  { url: `https://${contentProducerUrl}/example-content.html` },
];

async function injectAd() {
  // Load the worklet module.
  await window.sharedStorage.worklet.addModule('creative-selection-by-frequency-worklet.js');

  // Set the initial frequency count
  window.sharedStorage.set('frequency-count', 0, {
    ignoreIfPresent: true,
  });

  // Run the URL selection operation to choose an ad based on the frequency count in shared storage.
  const fencedFrameConfig = await window.sharedStorage.selectURL('creative-selection-by-frequency', CONTENT_URLS, {
    resolveToConfig: true
  });

  // Render the opaque URL into a fenced frame
  document.getElementById('content-slot').config = fencedFrameConfig;
}

injectAd();

creative-selection-by-frequency-worklet.js

const FREQUENCY_LIMIT = 5;

class CreativeSelectionByFrequencyOperation {
  async run(urls, data) {
    // Read the current frequency limit in shared storage
    const count = parseInt(await this.sharedStorage.get('frequency-count'));

    // Check if the frequency limit has been reached.
    if (count === FREQUENCY_LIMIT) {
      console.log('Frequency limit has been reached, and the default content will be rendered.');
      return 0;
    }

    // Set the new frequency count in shared storage
    await this.sharedStorage.set('frequency-count', count + 1);
    return 1;
  }
}

// Register the operation as 'creative-selection-by-frequency'.
register('creative-selection-by-frequency', CreativeSelectionByFrequencyOperation);

Casos de uso

Esses são apenas alguns dos casos de uso possíveis para o armazenamento compartilhado. Continuaremos adicionando exemplos à medida que recebermos feedback e descobrirmos novos casos de uso.

Seleção de conteúdo

Selecione e exiba conteúdos diferentes em diferentes sites em frames isolados com base nas informações coletadas no armazenamento compartilhado. A porta de saída para esses casos de uso é a seleção de URL.

  • Rotação de criativos: armazene 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.
  • Teste A/B: você pode atribuir um usuário a um grupo experimental e, em seguida, armazenar esse grupo no armazenamento compartilhado para ser acessado entre sites.
  • Experiências do usuário personalizadas: compartilhe conteúdo e calls-to-action personalizados com base no status de registro ou em outros estados do usuário

Gerar relatórios de resumo

Coletar informações com o Armazenamento compartilhado e gerar um relatório resumido agregado e com ruído. A porta de saída para esses casos de uso é a API Private Aggregate.

  • Medição do alcance único: muitos produtores de conteúdo e anunciantes querem saber quantas pessoas únicas viram o conteúdo. Use o armazenamento compartilhado para registrar a primeira vez que um usuário viu seu anúncio, vídeo incorporado ou publicação e evite a contagem duplicada desse mesmo usuário em sites diferentes. É possível usar a API Private agregação para gerar um relatório resumido sobre seu alcance.
  • Medição de informações demográficas: os produtores de conteúdo geralmente querem entender as informações demográficas do público-alvo. É possível usar o armazenamento compartilhado para registrar dados demográficos do usuário em um contexto em que você os tenha, como seu site próprio, e usar relatórios agregados para gerar relatórios sobre eles em muitos outros sites, como conteúdo incorporado.
  • Medição de frequência K+: às vezes descrita como "frequência efetiva", há um número mínimo de visualizações antes que um usuário reconheça ou se lembre de determinado conteúdo, geralmente no contexto de visualizações de anúncios. Use o armazenamento compartilhado para criar relatórios de usuários únicos que visualizaram um conteúdo pelo menos K vezes.

Interaja e compartilhe feedback

A proposta de armazenamento compartilhado está em discussão e sujeita a mudanças no futuro. Se você testar essa API e quiser enviar seu feedback, adoraríamos ouvir.