Ruota creatività degli annunci

Utilizza uno spazio di archiviazione condiviso per determinare quale creatività può essere visualizzata dall'utente sui vari siti.

L'API Shared Storage è una proposta Privacy Sandbox per l'archiviazione tra siti per uso generico, che supporta molti casi d'uso possibili. Un esempio è la rotazione delle creatività, disponibile per il test in Chrome 104.0.5086.0 e versioni successive.

Con la rotazione creatività, puoi memorizzare dati quali l'ID creatività, il numero di visualizzazioni e l'interazione degli utenti per stabilire quale creatività mostrare agli utenti sui diversi siti.

Esegui un worklet dello spazio di archiviazione condiviso per selezionare un URL da un elenco fornito, in base ai dati archiviati, quindi esegui il rendering della creatività in un frame isolato. Questa può essere utilizzata per selezionare nuovi annunci o altri contenuti.

Prova la rotazione creatività

Per sperimentare la rotazione creatività con l'archiviazione condivisa, verifica di utilizzare Chrome 104.0.5086.0 o versioni successive. Attiva poi il flag Esperimento API annunci Privacy Sandbox all'indirizzo chrome://flags/#privacy-sandbox-ads-apis.

Attiva l'esperimento sulle API degli annunci di Privacy Sandbox per utilizzare queste API

Puoi anche attivare l'archiviazione condivisa con il flag --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames nella riga di comando.

Sperimenta con gli esempi di codice

Un inserzionista o un produttore di contenuti potrebbe voler applicare strategie diverse a una campagna e ruotare i contenuti o le creatività per aumentarne l'efficacia. Lo spazio di archiviazione condiviso può essere utilizzato per applicare diverse strategie di rotazione, come la rotazione sequenziale e la rotazione distribuita in modo uniforme, su diversi siti.

In questo esempio:

  • creative-rotation.js è incorporato in un frame. Questo script imposta gli annunci più importanti ( ponderazione) e richiama il worklet per stabilire quali contenuti devono essere visualizzati.
  • creative-rotation-worklet.js è il worklet dello spazio di archiviazione condiviso che determina la distribuzione ponderata dei contenuti e i resi che devono essere visualizzati.

creative-rotation.js.

// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
  {
    url: 'https://your-server.example/contents/content-1.html',
    weight: 0.7,
  },
  {
    url: 'https://your-server.example/contents/content-2.html',
    weight: 0.2,
  },
  {
    url: 'https://your-server.example/contents/content-3.html',
    weight: 0.1,
  },
];

// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
  await window.sharedStorage.set('content-rotation-mode', 'sequential', {
    ignoreIfPresent: true,
  });

  await window.sharedStorage.set('content-rotation-index', 0, {
    ignoreIfPresent: true,
  });
}

async function injectAd() {
  // Load the worklet module
  await window.sharedStorage.worklet.addModule('content-rotation-worklet.js');

  // Initially set the storage to sequential mode for the demo
  seedStorage();

  // Run the URL selection operation to determine the next content rendered.
  const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
  const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, { 
    data: DEMO_CONTENT_CONFIG,
    resolveToConfig: true
  });

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

injectAd();

creative-rotation-worklet.js.

class SelectURLOperation {
  async run(urls, data) {
    // Read the rotation mode from Shared Storage
    const rotationMode = await this.sharedStorage.get('content-rotation-mode');

    // Generate a random number to be used for rotation
    const randomNumber = Math.random();

    let index;

    switch (rotationMode) {
      /**
       * Sequential rotation
       * - Rotates the contents in order
       * - Example: A -> B -> C -> A ...
       */
      case 'sequential':
        const currentIndex = await this.sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await this.sharedStorage.set('content-rotation-index', nextIndex);
        break;

      /**
       * Weighted rotation
       * - Rotates the contentswith weighted probability
       * - Example: A=70% / B=20% / C=10%
       */
      case 'weighted-distribution':
        
        // Sum the weights cumulatively, and find the first URL where the
        // sum exceeds the random number. The array is sorted in
        // descending order first.
        let weightSum = 0;
        const { url } = data
          .sort((a, b) => b.weight - a.weight)
          .find(({ weight }) => {
            weightSum += weight;
            return weightSum > randomNumber;
          });

        index = urls.indexOf(url);
        break;

      default:
        index = 0;
    }
    return index;
  }
}

register('content-rotation', SelectURLOperation);

Casi d'uso

Questi sono solo alcuni dei possibili casi d'uso dell'archiviazione condivisa. Continueremo ad aggiungere esempi man mano che riceveremo feedback e scopriremo nuovi casi d'uso.

Selezione contenuti

Selezionare e visualizzare contenuti diversi su siti web diversi all'interno di frame recintati in base alle informazioni raccolte nello spazio di archiviazione condiviso. La porta di output per questi casi d'uso è la selezione dell'URL.

  • Rotazione creatività: memorizza dati quali ID creatività, numero di visualizzazioni e interazione dell'utente per determinare quali creatività verranno visualizzate dagli utenti sui diversi siti.
  • Test A/B: puoi assegnare un utente a un gruppo di esperimenti e poi archiviare il gruppo nello spazio di archiviazione condiviso per accedervi tra siti.
  • Esperienze utente personalizzate: condividi contenuti e inviti all'azione personalizzati in base allo stato di registrazione di un utente o ad altri stati dell'utente.

Generare report di riepilogo

Raccogli informazioni con lo spazio di archiviazione condiviso e genera un report di riepilogo aggregato e fittizio. La porta di output per questi casi d'uso è l'API Private Aggregation.

  • Misurazione della copertura unica: molti produttori di contenuti e inserzionisti vogliono sapere quante persone uniche hanno visto i loro contenuti. Utilizza lo spazio di archiviazione condiviso per registrare la prima volta che un utente ha visualizzato l'annuncio, il video incorporato o la pubblicazione ed evitare un conteggio duplicato dello stesso utente su siti diversi. Puoi quindi utilizzare l'API Private Aggregation per generare un report di riepilogo per la tua copertura.
  • Misurazione dei dati demografici: i produttori di contenuti spesso vogliono conoscere i dati demografici del loro pubblico. Puoi utilizzare lo spazio di archiviazione condiviso per registrare i dati demografici degli utenti in un contesto in cui sono disponibili, ad esempio il tuo sito proprietario, e utilizzare i report aggregati per generare report in merito su molti altri siti, ad esempio i contenuti incorporati.
  • Misurazione della frequenza K+: a volte, come si parla di "frequenza effettiva", è spesso previsto un numero minimo di visualizzazioni prima che un utente riconosca o richiami determinati contenuti (spesso nel contesto delle visualizzazioni pubblicitarie). Puoi usare lo spazio di archiviazione condiviso per creare report relativi a utenti unici che hanno visto un contenuto almeno K volte.

Interagisci e condividi il tuo feedback

La proposta di spazio di archiviazione condiviso è in fase di discussione attiva e soggetta a modifiche in futuro. Se provi questa API e hai un feedback, ci farebbe piacere conoscere la tua opinione.