Oferta 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 para el grupo de interés que definiste en el sitio del anunciante. Si participas en la subasta de Protected Audience, podrás llegar a tus clientes identificados en otros sitios de una manera que preserva la privacidad.

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

Proporcionas tu 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 tu función generateBid() para cada grupo de interés en un entorno aislado seguro que tiene una comunicación limitada con el contexto externo. Cuando se ejecuta generateBid(), el navegador pasa indicadores a la función como argumentos. Estos indicadores contienen diversa información de diferentes fuentes, como los datos de origen del publicador, los datos del vendedor, los datos en tiempo real y mucho más. Puedes usar estos indicadores para calcular la oferta, y el valor se devuelve desde la llamada a generateBid(). Después de que se envían las ofertas, el navegador ejecutará la lógica de puntuación del vendedor en cada oferta para calcular la puntuación de conveniencia del vendedor.

generateBid()

A continuación, se describen los argumentos de la función generateBid() y la estructura de la oferta que devuelve 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

Es un objeto que pasa el comprador de anuncios. El grupo de interés se puede actualizar con dailyUpdateUrl.

auctionSignals

Es una propiedad del argumento de configuración de la subasta que el vendedor pasa a navigator.runAdAuction(). Esto 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 (de primer precio o de segundo precio) y otros metadatos.

perBuyerSignals

Es una propiedad del argumento de configuración de la subasta que pasa el vendedor. Esto puede proporcionar indicadores contextuales del servidor del comprador sobre la página, si el vendedor es un SSP que realiza una llamada de ofertas 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 quiera verificar una firma criptográfica de esos indicadores dentro de generateBid() como protección contra manipulaciones.

trustedBiddingSignals

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

browserSignals

Es un objeto creado 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 del propio grupo de interés (como un registro de cuándo el grupo ganó una subasta anteriormente, para permitir el límite de frecuencia en el dispositivo).

directFromSellerSignals

Son indicadores que provienen 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

Es el nombre de host desde el que 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 de componentes.

topLevelSeller

Es el vendedor de nivel superior en una subasta de componentes y solo está presente en este tipo de subastas.

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 queda disponible para los ofertantes en generateBid(). Los ofertantes dentro de la subasta pueden elegir un tamaño de contenido diferente para el anuncio, y ese tamaño resultante se ajustará visualmente para que quepa dentro del 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 en los últimos 30 días mientras el grupo de interés se almacenó de forma continua (es decir, no hay brechas en el almacenamiento del grupo de interés en el dispositivo debido a que se abandonó o venció la membresía).

recency

El campo recency es la duración (en minutos) desde que este dispositivo se unió a este grupo de interés hasta ahora.

bidCount

Es 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 transcurrido desde sus victorias anteriores en milisegundos. Ten en cuenta que el objeto del anuncio aquí 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 Data-Version de las respuestas del servicio de clave/valor del comprador.

adComponentsLimit

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

Cómo calcular una oferta

Para calcular un valor de oferta, el código en 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,
    // ...
  }
}

Devuelve una oferta

generateBid() devuelve 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 utiliza esta información en su subasta y en su lógica de decisión.
adCost Es un valor numérico que se usa para pasar el costo de la conversión o el clic 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 cualquier redondeo se realiza de forma estocástica.
adComponents Es una lista opcional de hasta 20 componentes para los anuncios compuestos por varias partes, que se toman de la propiedad adComponents del argumento del 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 componente. Si no se especifica, el valor predeterminado es "false".
bid Es una oferta numérica que participará en la subasta. El vendedor debe poder comparar las ofertas de diferentes compradores, por lo que las ofertas deben estar en alguna unidad elegida por el vendedor (como"USD por 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 cualquier regla del anunciante sobre dónde pueden o no aparecer sus anuncios.
bidCurrency Es la moneda de la oferta, que se usa para la verificación de moneda.
render Es un diccionario que describe la creatividad que se debe renderizar si esta oferta gana la subasta. Esto incluye lo siguiente:
  • url: URL de la creatividad.
  • width: Ancho de la creatividad. Este tamaño se comparará con la declaración del grupo de interés y se sustituirá en cualquier macro de tamaño del anuncio que esté presente en la URL de la creatividad del anuncio. Cuando el anuncio se carga en un iframe delimitado, el iframe interno del iframe delimitado (es decir, el tamaño visible para la creatividad del anuncio) se congelará en este tamaño y no podrá ver los cambios en el tamaño del iframe que realice el incorporador.
  • height: Es la altura de la creatividad. Consulta la explicación en width.

modelingSignals

Es un número entero de 0 a 4095 (12 bits) que se pasa a reportWin(), con ruido, como se describe en el esquema de discretización y ruido. Se ignorarán los valores no válidos, como los valores negativos, infinitos y NaN, 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 informes de victorias del comprador y, así, habilitar el entrenamiento del modelo de AA.