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

En tant qu'acheteur d'annonces (DSP et annonceurs), vous pouvez être intéressé par des enchères publicitaires Protected Audience sur le site de l'éditeur pour cibler 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 vos clients identifiés sur d'autres sites tout en protégeant la confidentialité.

Dans une mise aux enchères Protected Audience, vous fournissez la logique pour générer l'enchère, et le navigateur calcule l'enchère à l'aide de cette logique. Cela diffère d'autres architectures de mise aux enchères, dans lesquelles vous envoyez directement l'enchère 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 d'intérêt dans un environnement isolé sécurisé, dont la communication avec l'extérieur est limitée. Lorsque generateBid() est exécuté, le navigateur transmet des 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 le score de désirabilité du vendeur.

generateBid()

Voici 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 mise aux enchères transmise à navigator.runAdAuction() par le vendeur. Elle fournit des informations sur le contexte de la page (comme la taille de l'annonce et la référence éditeur), le type d'enchères (premier ou second prix) et d'autres métadonnées.

perBuyerSignals

Propriété de l'argument mise aux enchères transmise par le vendeur. Cela peut fournir des signaux de contexte provenant du serveur de l'acheteur concernant 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 vers le canal de réponse, ou si la page de l'éditeur contacte directement le serveur de l'acheteur. Si tel est le cas, l'acheteur peut vérifier la signature cryptographique de ces signaux dans generateBid() afin de les protéger contre la falsification.

trustedBiddingSignals

Un objet dont les clés correspondent aux trustedBiddingSignalsKeys du groupe d'intérêt et dont les valeurs sont renvoyées dans la requête trustedBiddingSignals.

browserSignals

Objet créé par le navigateur, qui peut inclure des informations sur le contexte de la page (comme l'hostname de la page actuelle, que le vendeur pourrait falsifier) et des données concernant le groupe d'intérêt lui-même (comme l'enregistrement de la date à laquelle le groupe a précédemment remporté une enchère, pour permettre la limitation de la fréquence d'exposition sur l'appareil).

directFromSellerSignals

Signaux dont la provenance est garantie par un vendeur spécifique, contrairement à auctionSignals et sellerSignals, qui peuvent provenir de n'importe quel participant présent dans le contexte d'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 où l'appel runAdAuction() a été effectué.

seller

Vendeur auquel l'enchère est envoyée. Dans une enchère de composants, cette valeur correspond au vendeur du composant.

topLevelSeller

Vendeur de premier niveau dans une enchère de composants et n'est présent que dans une enchère de composant.

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, et cette valeur devient disponible pour les enchérisseurs dans le pays suivant : generateBid(). Les enchérisseurs participant aux enchères peuvent choisir une taille de contenu différente pour l'annonce. Cette taille est alors redimensionné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 alors que le groupe de centres d'intérêt a été stocké de façon continue (c'est-à-dire que l'espace de stockage du groupe de centres d'intérêt sur l'appareil ne présente aucune interruption due à un départ ou à l'expiration de l'abonnement).

recency

Le champ "recency" indique la durée (en minutes) entre le moment où cet appareil a rejoint ce groupe de centres d'intérêt jusqu'à aujourd'hui

bidCount

Nombre de fois où le groupe de centres d'intérêt a soumis 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 victoires précédentes est exprimé en millisecondes. Notez que ici, l'objet d'annonce ne contient que les champs renderURL et de métadonnées.

wasmHelper

Un objet WebAssembly.Module basé sur l'biddingWasmHelperURL du groupe d'intérêt.

dataVersion

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

adComponentsLimit

Nombre maximal de composants d'annonce susceptibles d'être affichés par generateBid()

Calculer une enchère

Pour calculer la valeur d'une enchère, le code 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 concernant l'annonce, telles que les informations que le vendeur s'attend à obtenir sur cette enchère ou cette création publicitaire. Le vendeur utilise ces informations dans sa logique de mise aux enchères et de décision.
adCost Valeur numérique utilisée pour transmettre le coût de clic ou de conversion de l'annonceur de generateBid à reportWin. La précision de ce nombre est limitée à une mantisse de 8 bits et à un exposant de 8 bits, tout arrondi étant effectué de manière stochastique.
adComponents Liste facultative de 20 composants maximum pour les annonces composées de plusieurs éléments, tirée de la propriété adComponents de l'argument de groupe d'intérêt transmis à navigator.joinAdInterestGroup().
allowComponentAuction Valeur booléenne indiquant si cette enchère peut être utilisée dans une enchère de composant. La valeur par défaut est "false". s'il n'est pas spécifié.
bid 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, le groupe d'intérêt ne participera pas du tout à l'enchère du vendeur. Grâce à ce mécanisme, l'acheteur peut appliquer les règles de l'annonceur concernant l'emplacement de diffusion de ses annonces.
bidCurrency Devise de l'enchère, utilisée pour le currency-checking.
render Dictionnaire décrivant la création qui doit être diffusée si cette enchère remporte l'enchère. Par exemple:
<ph type="x-smartling-placeholder">
    </ph>
  • url: URL de la création.
  • width: largeur de la création. Cette taille est mise en correspondance avec la déclaration du groupe de centres d'intérêt et remplacée par toute macro de taille d'annonce présente dans l'URL de la création publicitaire. Lorsque l'annonce est chargée dans un cadre cloisonné, le cadre interne du cadre cloisonné (c'est-à-dire la taille visible par la création publicitaire) sera figé sur cette taille et ne pourra pas voir les modifications de la taille du cadre effectuées par l'outil d'intégration.
  • height: hauteur de la création. Voir le développement dans 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 faibles seront transmis.


L'acheteur peut utiliser les signaux disponibles dans la fonction generateBid(), y compris les données provenant des données first party des acheteurs capturées au moment de la création du groupe de centres d'intérêt dans userBiddingSignals, pour dériver une valeur transmise à la fonction de création de rapports sur les gains de l'acheteur afin de permettre l'entraînement du modèle de ML.