Rotar creatividades de anuncios

Use el almacenamiento compartido para determinar qué creatividad ve un usuario en los sitios.

La API de Shared Storage es una Propuesta de zona de pruebas para almacenamiento entre sitios de uso general, que admite muchas posibles casos de uso. Un ejemplo es la rotación de creatividades, que está disponible para probarla en Chrome 104.0.5086.0 y versiones posteriores.

Con la rotación de creatividades, puede almacenar datos como el ID de la creatividad, las vistas recuentos de clics e interacción del usuario para determinar ver a través de diferentes sitios.

Ejecutar un worklet de almacenamiento compartido para seleccionar una URL de una lista proporcionada, según el datos almacenados y, luego, renderizar esa creatividad en un marco cercado. Esto se puede usar para seleccionar nuevos anuncios u otro contenido.

Probar 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 de 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

Un anunciante o un productor de contenido podría querer aplicar diferentes estrategias a un y rotar los contenidos o las creatividades para aumentar su eficacia. El almacenamiento compartido se puede usar para ejecutar diferentes estrategias de rotación, como la rotación secuencial y la distribución 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 al worklet para determinar qué contenido se debe mostrar.
  • creative-rotation-worklet.js es el worklet de almacenamiento compartido que determina la distribución ponderada del contenido y las devoluciones 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('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 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 del almacenamiento compartido. Más tarde continuamos agregando ejemplos a medida que recibir comentarios y descubrir nuevos casos de uso.

Selección de contenido

seleccionar y mostrar contenido diferente en distintos sitios web de marcos vallados basados en información que se recopilan en el almacenamiento compartido. La puerta de salida para estos casos de uso es la selección de URL.

  • Rotación de creatividades: Almacene datos, como el ID de la creatividad, la cantidad de vistas y la interacción del usuario, para determinar qué usuarios de creatividades tienen ven en diferentes sitios.
  • Pruebas A/B: Puedes asignar un usuario a un grupo experimental y, luego, almacenar ese grupo en el almacenamiento compartido para que se pueda acceder a él desde varios sitios.
  • Experiencias del usuario personalizadas: Compartir contenido personalizado y llamados a la acción en función del estado de registro del usuario o de otros estados

Genera informes de resumen

Recopilamos información con el almacenamiento compartido y generamos un informe de resumen acumulado y ruidoso. La puerta de salida para estos casos de uso es la API de Private Aggregation

  • Medición de alcance único: Muchos productores y anunciantes de contenido la gente vio su contenido. Usar el almacenamiento compartido para registrar la primera vez que un usuario vieron tu anuncio, un video incorporado o una publicación y evitan la duplicación el recuento de ese mismo usuario en distintos sitios. Luego, puedes usar la API de Private Aggregation para generar un informe resumido para tu alcance.
  • Medición de datos demográficos: Los productores de contenido suelen querer comprender público. Puede usar el almacenamiento compartido para registrar datos demográficos de usuarios de un contexto donde lo tienes, como tu sitio de origen, y utiliza las para generar informes sobre él en muchos otros sitios, como el contenido incorporado.
  • Medición de frecuencia K+: A veces se describe como "frecuencia efectiva", suele haber un número mínimo vistas antes de que el usuario reconozca o recuerde cierto contenido (a menudo, en el contexto de las vistas de los anuncios). Puedes usar el almacenamiento compartido para crear informes de usuarios únicos que han visto cierto contenido al menos K veces.

Interactúa y comparte tus comentarios

La propuesta de almacenamiento compartido se está debatiendo y está sujeta a cambios en el futuro. Si pruebas esta API y tienes comentarios, nos encantaría recibirlos.