Participer à une mise aux enchères pour acheter un espace publicitaire

En tant qu'acheteur d'annonces (DSP et annonceurs), vous pouvez participer à une enchère publicitaire Protected Audience sur le site de l'éditeur afin de cibler une annonce sur le groupe de centres d'intérêt que vous avez défini sur le site de l'annonceur. En participant aux enchères Protected Audience, vous pouvez toucher les clients que vous avez identifiés sur d'autres sites, tout en protégeant leur confidentialité.

Dans une mise aux enchères Protected Audience, vous fournissez la logique pour générer l'enchère, et le navigateur la calcule en utilisant cette logique. Cela diffère des autres architectures d'enchères, dans lesquelles vous soumettez l'enchère directement au lieu de fournir la logique.

Vous fournissez votre logique de génération d'enchères dans la fonction JavaScript generateBid(), et le fichier est hébergé sur votre serveur. Lorsque vous ajoutez un utilisateur à un groupe de centres d'intérêt, l'emplacement de ce fichier est transmis à la configuration du groupe de centres d'intérêt en tant que biddingLogicUrl.

Lors de l'enchère, le navigateur récupère la logique d'enchères spécifiée dans le champ biddingLogicUrl, puis exécute votre fonction generateBid() pour chaque groupe de centres d'intérêt dans un environnement isolé sécurisé et limité dans sa communication avec le contexte extérieur. Lorsque generateBid() est exécuté, le navigateur transmet les signaux à la fonction en tant qu'arguments. Ces signaux contiennent diverses informations provenant de différentes sources, telles que les données first party de l'éditeur, les données du vendeur, les données en temps réel, etc. Vous pouvez utiliser ces signaux pour calculer l'enchère. La valeur est renvoyée par l'appel generateBid(). Une fois les enchères envoyées, le navigateur exécute la logique d'évaluation du vendeur pour chaque enchère afin de calculer son score de désirabilité.

generateBid()

Vous trouverez ci-dessous une description des arguments de la fonction generateBid() et de la structure de l'enchère renvoyée par la fonction:


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

Arguments

generateBid() utilise les arguments suivants :

Argument Rôle

interestGroup

Objet transmis par l'acheteur d'annonces. Le groupe de centres d'intérêt peut être mis à jour avec dailyUpdateUrl.

auctionSignals

Propriété de l'argument configuration des enchères transmise à navigator.runAdAuction() par le vendeur. Elles fournissent des informations sur le contexte de la page (par exemple, la taille de l'annonce et la référence éditeur), le type d'enchère (au premier ou au second prix), ainsi que d'autres métadonnées.

perBuyerSignals

Propriété de l'argument configuration des enchères transmis par le vendeur. Cela peut fournir des signaux contextuels provenant du serveur de l'acheteur à propos de la page, si le vendeur est une SSP qui effectue un appel d'enchères en temps réel vers les serveurs de l'acheteur et renvoie la réponse, ou si la page de l'éditeur contacte directement le serveur de l'acheteur. Si tel est le cas, l'acheteur peut souhaiter vérifier une signature cryptographique de ces signaux dans generateBid() pour se protéger contre la falsification.

trustedBiddingSignals

Objet dont les clés sont les trustedBiddingSignalsKeys pour le groupe de centres d'intérêt et dont les valeurs sont renvoyées dans la requête trustedBiddingSignals.

browserSignals

Objet construit par le navigateur, qui peut inclure des informations sur le contexte de la page (telles que la hostname de la page actuelle, que le vendeur aurait pu falsifier autrement) et des données sur le groupe de centres d'intérêt lui-même (par exemple, la date à laquelle le groupe a précédemment remporté une enchère, afin d'autoriser la limitation de la fréquence d'exposition sur l'appareil).

directFromSellerSignals

Les signaux sont assurés de provenir d'un vendeur spécifique, contrairement à auctionSignals et sellerSignals, qui peuvent provenir de n'importe quel participant présent dans le contexte de l'exécution de runAdAuction.

Signaux du navigateur

L'objet browserSignals possède les propriétés suivantes:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
Propriété Description

topWindowHostname

Nom d'hôte du lieu où l'appel runAdAuction() a été effectué.

seller

Vendeur auquel l'enchère est envoyée. Dans une mise aux enchères d'éléments individuels, cette valeur correspond au vendeur de composants.

topLevelSeller

Vendeur de premier niveau dans une enchère individuelle, et n'est présent que dans ce type d'enchères.

requestedSize

La propriété requestedSize recommande une taille de cadre pour l'enchère. Le vendeur définit la taille demandée dans la configuration de l'enchère. Cette valeur devient disponible pour les enchérisseurs dans generateBid(). Les enchérisseurs participant aux enchères peuvent choisir une taille de contenu différente pour l'annonce. La taille qui en résulte sera ajustée visuellement pour s'adapter à la taille du conteneur de l'élément.

joinCount

Le champ joinCount indique le nombre de fois où cet appareil a rejoint ce groupe de centres d'intérêt au cours des 30 derniers jours, tant que celui-ci est stocké en continu. En d'autres termes, l'espace de stockage de ce groupe de centres d'intérêt sur l'appareil n'est pas vide en raison d'un départ ou d'une expiration d'adhésion.

recency

Le champ recency indique la durée (en minutes) écoulée entre le moment où cet appareil a rejoint ce groupe de centres d'intérêt et maintenant.

bidCount

Nombre de fois où ce groupe de centres d'intérêt a envoyé une enchère.

prevWinsMs

Le champ prevWinMs contient les annonces gagnantes du groupe de centres d'intérêt et le temps écoulé depuis leurs précédentes victoires (en millisecondes). Notez que l'objet ad ne contient que les champs renderURL et de métadonnées.

wasmHelper

un objet WebAssembly.Module basé sur le biddingWasmHelperURL du groupe de centres d'intérêt.

dataVersion

Valeur de version de données issue de la ou des réponses du service clé-valeur de l'acheteur.

adComponentsLimit

Nombre maximal de composants d'annonce que generateBid() peut renvoyer

Calculer une enchère

Pour calculer la valeur d'une enchère, le code fourni dans generateBid() peut utiliser les propriétés des paramètres de la fonction.

Exemple :

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

Renvoyer une enchère

generateBid() renvoie un objet avec les propriétés suivantes:

Propriété Rôle
ad Métadonnées arbitraires sur l'annonce, telles que les informations que le vendeur s'attend à obtenir à propos de cette enchère ou de la création publicitaire. Le vendeur utilise ces informations dans sa logique d'enchères et de décision.
adCost Valeur numérique utilisée pour transmettre le clic de l'annonceur ou le coût de conversion de la génération des rapports à reportWin à reportWin. La précision de ce nombre est limitée à une mantisse de 8 bits et à un exposant de 8 bits, tous les arrondis étant effectués de manière stochastique.
adComponents Liste facultative de 20 composants au maximum pour les annonces composées de plusieurs éléments, tirée de la propriété adComponents de l'argument de groupe de centres d'intérêt transmis à navigator.joinAdInterestGroup().
allowComponentAuction Valeur booléenne indiquant si cette enchère peut être utilisée dans un système d'enchères individuelles. Si aucune valeur n'est spécifiée, la valeur par défaut est "false".
bid Il s'agit d'une enchère numérique qui participera à la mise aux enchères. Le vendeur doit être en mesure de comparer les enchères de différents acheteurs. Par conséquent, les enchères doivent être exprimées dans une unité choisie par le vendeur (par exemple, "USD pour mille"). Si l'enchère est nulle ou négative, ce groupe de centres d'intérêt ne participera pas du tout aux enchères du vendeur. Grâce à ce mécanisme, l'acheteur peut appliquer n'importe quelle règle annonceur concernant les emplacements où ses annonces peuvent être diffusées ou non.
bidCurrency Devise de l'enchère, utilisée pour vérifier les devises.
render Dictionnaire décrivant la création à afficher si cette enchère remporte l'enchère. Par exemple:
  • url: URL de la création.
  • width: largeur de la création. Cette taille sera mise en correspondance avec la déclaration du groupe de centres d'intérêt et remplacée dans toutes les macros de taille d'annonce présentes dans l'URL de la création publicitaire. Lorsque l'annonce est chargée dans un frame cloisonné, le cadre interne du frame cloisonné (c'est-à-dire la taille visible par la création publicitaire) reste figé sur cette taille. Il ne peut donc pas voir les modifications apportées à la taille du frame par l'outil d'intégration.
  • height: hauteur de la création. Voir les détails en width.

modelingSignals

Entier compris entre 0 et 4 095 (12 bits) transmis à reportWin(), avec bruit, comme décrit dans le schéma de bruit et de binning. Les valeurs non valides, telles que les valeurs négatives, infinies et NaN, seront ignorées et ne seront pas transmises. Seuls les 12 bits les plus bas seront transmis.


L'acheteur peut utiliser les signaux disponibles dans la fonction generateBid(), y compris les données d'acheteurs first party collectées au moment de la création du groupe de centres d'intérêt dans userBiddingSignals, pour obtenir une valeur transmise à la fonction de reporting sur l'enchère de l'acheteur pour activer l'entraînement du modèle de ML.