Ofertar en una subasta para comprar un espacio publicitario

Como comprador de anuncios (DSP y anunciantes), es posible que te interese participar en una subasta de anuncios de Protected Audience en el sitio del publicador para segmentar un anuncio al grupo de interés que definiste en el sitio del anunciante. Si participas en la subasta de Protected Audience, puedes llegar a tus clientes identificados en otros sitios de una manera que preserva la privacidad.

En una subasta de Protected Audience, tú proporcionas la lógica para generar la oferta, y el navegador la calcula con esa lógica. Esto contrasta con otras arquitecturas de subasta en las que se envía la oferta directamente en lugar de proporcionar la lógica.

Proporcionas la lógica de generación de ofertas en la función generateBid() de JavaScript, y el archivo se aloja en tu servidor. Cuando agregas un usuario a un grupo de interés, la ubicación de este archivo se pasa a la configuración del grupo de interés como un biddingLogicUrl.

Durante la subasta, el navegador recupera la lógica de ofertas que especificaste en el campo biddingLogicUrl y ejecuta la función generateBid() para cada grupo de interés en un entorno aislado seguro que está limitado en su comunicación con el contexto externo. Cuando se ejecuta generateBid(), el navegador pasa señales a la función como argumentos. Estos indicadores contienen información variada de distintas fuentes, como datos de origen del publicador, datos del vendedor, datos en tiempo real y mucho más. Puedes usar estos indicadores para calcular la oferta, y la llamada a generateBid() devuelve el valor. Después de que se envíen las ofertas, el navegador ejecutará la lógica de puntuación del vendedor en cada oferta para calcular la puntuación de deseabilidad del vendedor.

generateBid()

A continuación, se describen los argumentos de la función generateBid() y la estructura de la oferta que muestra la función:


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

Argumentos

generateBid() toma los siguientes argumentos:

Argumento Rol

interestGroup

Un objeto que el comprador del anuncio pasa. El grupo de interés se puede actualizar con dailyUpdateUrl.

auctionSignals

Una propiedad del argumento auction config que el vendedor pasa a navigator.runAdAuction(). Proporciona información sobre el contexto de la página (como el tamaño del anuncio y el ID del publicador), el tipo de subasta (primer precio o segundo precio) y otros metadatos.

perBuyerSignals

Una propiedad del argumento auction config que pasó el vendedor. Esto puede proporcionar indicadores contextuales sobre la página del servidor del comprador si el vendedor es una SSP que realiza una llamada de licitación en tiempo real a los servidores del comprador y canaliza la respuesta, o si la página del publicador se comunica directamente con el servidor del comprador. Si es así, es posible que el comprador desee verificar una firma criptográfica de esos indicadores dentro de generateBid() como protección contra la manipulación.

trustedBiddingSignals

Un objeto cuyas claves son el trustedBiddingSignalsKeys del grupo de interés y cuyos valores se muestran en la solicitud trustedBiddingSignals.

browserSignals

Un objeto construido por el navegador, que puede incluir información sobre el contexto de la página (como el hostname de la página actual, que el vendedor podría falsificar) y datos para el grupo de interés (como un registro de cuándo el grupo ganó una subasta anteriormente, para permitir la limitación de frecuencia en el dispositivo).

directFromSellerSignals

Son indicadores que se garantiza que provengan de un vendedor específico, a diferencia de auctionSignals y sellerSignals, que pueden provenir de cualquier participante presente en el contexto en el que se ejecuta runAdAuction.

Indicadores del navegador

El objeto browserSignals tiene las siguientes propiedades:

{
  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
}
Propiedad Descripción

topWindowHostname

El nombre de host donde se realizó la llamada a runAdAuction().

seller

Es el vendedor al que se envía la oferta. En una subasta de componentes, este valor es el vendedor del componente.

topLevelSeller

Es el vendedor de primer nivel en una subasta de componentes y solo está presente en una subasta de componentes.

requestedSize

La propiedad requestedSize recomienda un tamaño de fotograma para la subasta. El vendedor establece el tamaño solicitado en la configuración de la subasta, y el valor pasa a estar disponible para los ofertantes en generateBid(). Los ofertantes que participan en la subasta pueden elegir un tamaño de contenido diferente para el anuncio, y ese tamaño resultante se ajustará visualmente para adaptarse al tamaño del contenedor del elemento.

joinCount

El campo joinCount indica la cantidad de veces que este dispositivo se unió a este grupo de interés durante los últimos 30 días mientras el grupo de interés se almacenó de forma continua (es decir, no hay espacios de almacenamiento en el dispositivo por abandonar o por vencer la membresía).

recency

El campo recency indica la cantidad de tiempo (en minutos) que transcurre desde que este dispositivo se unió a este grupo de interés hasta ahora.

bidCount

Indica la cantidad de veces que ese grupo de interés envió una oferta.

prevWinsMs

El campo prevWinMs contiene los anuncios ganadores del grupo de interés y el tiempo desde sus victorias anteriores en milisegundos. Ten en cuenta que aquí el objeto de anuncio solo contiene los campos renderURL y de metadatos.

wasmHelper

Un objeto WebAssembly.Module basado en el biddingWasmHelperURL del grupo de interés.

dataVersion

Es el valor de la versión de los datos de las respuestas del servicio de par clave-valor del comprador.

adComponentsLimit

Cantidad máxima de componentes del anuncio que puede devolver generateBid()

Cómo calcular una oferta

Para calcular el valor de una oferta, el código de generateBid() puede usar las propiedades de los parámetros de la función.

Por ejemplo:

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

Cómo devolver una oferta

generateBid() muestra un objeto con las siguientes propiedades:

Propiedad Rol
ad Son metadatos arbitrarios sobre el anuncio, como la información que el vendedor espera obtener sobre esta oferta o creatividad del anuncio. El vendedor usa esta información en su lógica de subasta y decisión.
adCost Un valor numérico que se usa para pasar el costo de conversión o los clics del anunciante del informe de generateBid a reportWin. La precisión de este número se limita a una mantisa de 8 bits y un exponente de 8 bits, y el redondeo se realiza de forma estocástica.
adComponents Una lista opcional de hasta 20 componentes para anuncios compuestos por varias partes, tomada de la propiedad adComponents del argumento de grupo de interés que se pasa a navigator.joinAdInterestGroup().
allowComponentAuction Es un valor booleano que indica si esta oferta se puede usar en una subasta de componentes. La configuración predeterminada es “false”. si no se especifica.
bid Es una oferta numérica que ingresará en la subasta. El vendedor debe estar en posición de comparar ofertas de diferentes compradores; por lo tanto, las ofertas deben tener alguna unidad elegida por el vendedor (por ejemplo, "USD por cada mil"). Si la oferta es cero o negativa, este grupo de interés no participará en la subasta del vendedor. Con este mecanismo, el comprador puede implementar reglas del anunciante que indiquen dónde pueden aparecer o no sus anuncios.
bidCurrency Indica la moneda de la oferta, que se utiliza para la currency-checking.
render Es un diccionario que describe la creatividad que debe dibujarse si esta oferta gana la subasta. Esto incluye lo siguiente:
  • url: Es la URL de la creatividad.
  • width: El ancho de la creatividad. Este tamaño se comparará con la declaración del grupo de interés y se reemplazará por cualquier macro de tamaño de anuncio presente en la URL de la creatividad del anuncio. Cuando se cargue el anuncio en un marco vallado, el marco interno del marco vallado (es decir, el tamaño visible para la creatividad del anuncio) se congelará a este tamaño y no podrá ver los cambios en el tamaño del marco que realizó la incorporación.
  • height: Es la altura de la creatividad. Consulta la elaboración en width.

modelingSignals

Un número entero de 0 a 4,095 (12 bits) que se pasa a reportWin(), con ruido, como se describe en el esquema de ruido y agrupamiento. Los valores no válidos, como los valores negativos, infinitos y NaN, se ignorarán y no se pasarán. Solo se pasarán los 12 bits más bajos.


El comprador puede usar los indicadores disponibles dentro de la función generateBid(), incluidos los datos de origen del comprador capturados en el momento de la creación del grupo de interés en userBiddingSignals, para derivar algún valor que se pase a la función de informe ganador del comprador a fin de habilitar el entrenamiento del modelo de AA.