Alterner les créations

Utilisez un espace de stockage partagé pour déterminer la création qu'un utilisateur voit sur différents sites.

L'API Shared Storage est une proposition de la Privacy Sandbox pour le stockage multisites à usage général, qui prend en charge de nombreux cas d'utilisation possibles. La rotation des créations en est un exemple, et est disponible à des fins de test dans Chrome 104.0.5086.0 et versions ultérieures.

Grâce à la rotation des créations, vous pouvez stocker des données telles que l'ID de la création, le nombre de vues et les interactions des utilisateurs pour déterminer les créations que les utilisateurs voient sur différents sites.

Exécutez un worklet Shared Storage pour sélectionner une URL dans une liste fournie, en fonction des données stockées, puis affichez cette création dans un cadre clôturé. Vous pouvez l'utiliser pour sélectionner de nouvelles annonces ou d'autres contenus.

Essayer la rotation des créations

Pour tester la rotation des créations avec l'espace de stockage partagé, vérifiez que vous utilisez Chrome 104.0.5086.0 ou une version ultérieure. Activez toutes les API de confidentialité des annonces sous chrome://settings/adPrivacy.

Vous pouvez également activer Shared Storage avec l'indicateur --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames dans la ligne de commande.

Tester des exemples de code

Un annonceur ou un producteur de contenu peut souhaiter appliquer différentes stratégies à une campagne et faire tourner les contenus ou les créations pour en améliorer l'efficacité. Le stockage partagé peut être utilisé pour exécuter différentes stratégies de rotation, telles que la rotation séquentielle et la rotation répartie uniformément, sur différents sites.

Dans cet exemple :

  • creative-rotation.js est intégré à un frame. Ce script définit les annonces les plus importantes ( pondération) et appelle le worklet pour déterminer le contenu à afficher.
  • creative-rotation-worklet.js est le worklet de stockage partagé qui détermine la distribution pondérée des contenus et des résultats à afficher.

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

Cas d'utilisation

Il ne s'agit là que de quelques-uns des cas d'utilisation possibles de Shared Storage. Nous continuerons d'ajouter des exemples à mesure que nous recevons des commentaires et découvrons de nouveaux cas d'utilisation.

Sélection de contenu

Sélectionnez et affichez différents contenus sur différents sites Web dans des cadres clôturés en fonction des informations collectées dans le stockage partagé. La porte de sortie de ces cas d'utilisation est la sélection d'URL.

  • Rotation des créations : stocke des données telles que l'ID de la création, le nombre de vues et l'interaction des utilisateurs pour déterminer les créations que les utilisateurs voient sur différents sites.
  • Tests A/B : vous pouvez attribuer un utilisateur à un groupe de test, puis stocker ce groupe dans Shared Storage pour y accéder entre les sites.
  • Expériences utilisateur personnalisées : partagez du contenu et des incitations à l'action personnalisés en fonction de l'état d'enregistrement ou d'autres états de l'utilisateur.

Générer des rapports récapitulatifs

Collectez des informations avec Shared Storage et générez un rapport récapitulatif agrégé et bruyant. La porte de sortie de ces cas d'utilisation est l'API Private Aggregation.

  • Mesure de la couverture unique : de nombreux producteurs de contenus et annonceurs souhaitent savoir combien de personnes uniques ont vu leur contenu. Utilisez l'espace de stockage partagé pour enregistrer la première fois qu'un utilisateur a vu votre annonce, votre vidéo intégrée ou votre publication, et pour éviter de comptabiliser deux fois cet utilisateur sur différents sites. Vous pouvez ensuite utiliser l'API Private Aggregation pour générer un rapport récapitulatif de votre couverture.
  • Mesure des données démographiques : les producteurs de contenus souhaitent souvent comprendre les données démographiques de leur audience. Vous pouvez utiliser le stockage partagé pour enregistrer des données démographiques sur les utilisateurs dans un contexte où vous les avez, comme votre site first party, et utiliser des rapports agrégés pour les enregistrer sur de nombreux autres sites, tels que le contenu intégré.
  • Mesure de la fréquence K+ : parfois décrite comme "fréquence effective", il existe souvent un nombre minimal de vues avant qu'un utilisateur ne reconnaisse ou ne se souvienne d'un contenu donné (souvent dans le contexte des vues d'annonces). Vous pouvez utiliser le stockage partagé pour créer des rapports sur les utilisateurs uniques ayant vu un contenu au moins K fois.

Interagir et envoyer des commentaires

Notez que la proposition d'API Shared Storage est en cours de discussion et de développement, et est donc susceptible d'être modifiée.

Nous sommes impatients de connaître votre avis sur l'API Shared Storage.

Se tenir informé

  • Liste de diffusion: abonnez-vous à notre liste de diffusion pour recevoir les dernières informations et annonces concernant l'API Shared Storage.

Besoin d'aide ?