Rotar creatividades de anuncios

Usa un almacenamiento compartido para determinar qué creatividad ve un usuario en todos los sitios.

La API de Shared Storage es una propuesta de Privacy Sandbox para el almacenamiento general y entre sitios, que admite muchos casos de uso posibles. Un ejemplo de esto es la rotación de creatividades, que está disponible para probar en Chrome 104.0.5086.0 y versiones posteriores.

Con la rotación de creatividades, puedes almacenar datos, como el ID de creatividad, los recuentos de vistas y la interacción del usuario, para determinar qué creatividades ven los usuarios en diferentes sitios.

Ejecuta una tarea de trabajo de almacenamiento compartido para seleccionar una URL de una lista proporcionada, según los datos almacenados, y, luego, renderiza esa creatividad en un marco cercado. Se puede usar para seleccionar anuncios nuevos o cualquier otro contenido.

Prueba la rotación de creatividades

Para experimentar con la rotación de creatividades con el almacenamiento compartido, confirma que estás usando Chrome 104.0.5086.0 o una versión posterior. Habilita todas las APIs de privacidad en los anuncios en chrome://settings/adPrivacy.

También puedes habilitar el almacenamiento compartido con la marca --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames en la línea de comandos.

Experimenta con muestras de código

Es posible que un anunciante o un productor de contenido desee aplicar diferentes estrategias a una campaña y rotar el contenido o las creatividades para aumentar la eficacia. El almacenamiento compartido se puede usar para ejecutar diferentes estrategias de rotación, como la rotación secuencial y la rotación distribuida de forma uniforme, en diferentes sitios.

En este ejemplo:

  • creative-rotation.js está incorporado en un marco. Esta secuencia de comandos establece qué anuncios son los más importantes ( peso) y llama a la worklet para determinar qué contenido se debe mostrar.
  • creative-rotation-worklet.js es la worklet de almacenamiento compartido que determina la distribución ponderada del contenido y los resultados que se deben mostrar.

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('creative-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 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 sharedStorage.get('creative-rotation-index');
        index = parseInt(currentIndex, 10);
        const nextIndex = (index + 1) % urls.length;

        await 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);

Casos prácticos

Estos son solo algunos de los casos de uso posibles para el almacenamiento compartido. Seguiremos agregando ejemplos a medida que recibamos comentarios y descubramos nuevos casos de uso.

Selección de contenido

Selecciona y muestra contenido diferente en diferentes sitios web en marcos delimitados según la información recopilada en el almacenamiento compartido. La puerta de salida para estos casos de uso es la selección de URL.

  • Rotación de creatividades: Almacena datos, como el ID de la creatividad, los recuentos de vistas y la interacción del usuario, para determinar qué creatividades ven los usuarios en diferentes sitios.
  • Pruebas A/B: Puedes asignar un usuario a un grupo de experimentos y, luego, almacenar ese grupo en el almacenamiento compartido para que se pueda acceder a él en varios sitios.
  • Experiencias del usuario personalizadas: comparte contenido personalizado y llamados a la acción según el estado de registro de un usuario o algún otro estado

Genera informes de resumen

Recopilar información con el almacenamiento compartido y generar un informe de resumen agregado con ruido La puerta de salida para estos casos de uso es la API de agregación privada.

  • Medición del alcance único: Muchos productores de contenido y anunciantes quieren saber cuántas personas únicas vieron su contenido. Usa el almacenamiento compartido para registrar la primera vez que un usuario vio tu anuncio, video incorporado o publicación, y evita el registro duplicado de ese mismo usuario en diferentes sitios. Luego, puedes usar la API de Private Aggregation para generar un informe de resumen de tu alcance.
  • Medición de datos demográficos: Los productores de contenido suelen querer comprender los datos demográficos de su público. Puedes usar el almacenamiento compartido para registrar los datos demográficos de los usuarios en un contexto en el que los tengas, como tu sitio propio, y usar informes agregados para generar informes sobre ellos en muchos otros sitios, como el contenido incorporado.
  • Medición de frecuencia K+: A veces, se describe como "frecuencia efectiva". Por lo general, hay una cantidad mínima de vistas antes de que un usuario reconozca o recuerde cierto contenido (a menudo, en el contexto de las vistas de anuncios). Puedes usar el almacenamiento compartido para crear informes de usuarios únicos que vieron un contenido al menos K veces.

Interactúa y comparte comentarios

Ten en cuenta que la propuesta de la API de Shared Storage está en discusión y desarrollo activo y, por lo tanto, está sujeta a cambios.

Nos encantaría conocer tu opinión sobre la API de Shared Storage.

Mantente al tanto

  • Lista de distribución: Suscríbete a nuestra lista de distribución para recibir las actualizaciones y los anuncios más recientes relacionados con la API de Shared Storage.

¿Necesitas ayuda?