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

En una subasta de Protected Audience, usted proporciona 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 envías 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 alojará 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 y seguro que está limitado en la comunicación con el contexto externo. Cuando se ejecuta generateBid(), el navegador pasa indicadores a la función como argumentos. Estos indicadores contienen mucha información de distintas fuentes, como los datos de origen del publicador, los datos del vendedor, los datos en tiempo real, entre otros. Puedes usar estos indicadores para calcular la oferta, y el valor se devuelve a partir de la llamada generateBid(). 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

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

auctionSignals

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

perBuyerSignals

Una propiedad del argumento auction config que pasa el vendedor. Esto puede proporcionar indicadores contextuales sobre la página provenientes del servidor del comprador si el vendedor es una 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 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 para el grupo de interés y cuyos valores se muestran en la solicitud trustedBiddingSignals.

browserSignals

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

directFromSellerSignals

Son indicadores que se garantiza que provienen de un vendedor específico, a diferencia de auctionSignals y sellerSignals, que pueden provenir de cualquier participante presente en el contexto de donde 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 donde se realizó la llamada a runAdAuction().

seller

Indica el vendedor al que se le 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 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 estará disponible para los ofertantes en generateBid(). Los ofertantes de la subasta pueden elegir un tamaño de contenido diferente para el anuncio, y el tamaño resultante se ajustará visualmente para que quepa dentro del tamaño del contenedor del elemento.

joinCount

El campo joinCount es 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ó continuamente (es decir, no hay brechas en el almacenamiento del grupo de interés en el dispositivo debido a que se fue o se 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 el 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 los ganadores anteriores, expresado en milisegundos. Ten en cuenta que este 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 mostrar generateBid()

Calcular una oferta

Para calcular el valor de una 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() muestra un objeto con las siguientes propiedades:

Propiedad Rol
ad Metadatos arbitrarios sobre el anuncio, como la información que el vendedor espera obtener acerca de esta oferta o creatividad del anuncio. El vendedor usa esta información en su lógica de subasta y decisión.
adCost Es un valor numérico que se usa para pasar los informes de clics del anunciante o el costo de conversión de generateBid a reportWin. La precisión de este número se limita a un exponente de 8 bits y mantisa de 8 bits, con cualquier redondeo realizado de manera estocástica.
adComponents Es una lista opcional de hasta 20 componentes para anuncios compuestos por varias partes, tomada de la propiedad adComponents del argumento del grupo de interés que se pasa a navigator.joinAdInterestGroup().
allowComponentAuction Valor booleano que indica si esta oferta se puede utilizar en una subasta de componentes. El valor predeterminado es "false" si no se especifica.
bid Es una oferta numérica que ingresará a la subasta. El vendedor debe estar en una posición que le permita comparar ofertas de distintos compradores; por lo tanto, las ofertas deben expresarse en alguna unidad que elija el vendedor (por ejemplo, "USD por mil"). Si la oferta es cero o negativa, este grupo de interés no participará en absoluto en la subasta del vendedor. Con este mecanismo, el comprador puede implementar cualquier regla para anunciantes sobre dónde pueden aparecer o no sus anuncios.
bidCurrency Es la moneda de la oferta, que se utiliza para la verificación de moneda.
render Es un diccionario que describe la creatividad que se debe renderizar si esta oferta gana la subasta. Estos son algunos ejemplos:
  • url: Es la URL de la creatividad.
  • width: Es el ancho de la creatividad. Este tamaño se comparará con la declaración en el grupo de interés y se sustituirá en cualquier macro de tamaño del anuncio presente en la URL de la creatividad del anuncio. Cuando el anuncio se cargue 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 hizo la incorporación.
  • height: 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 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 los compradores de origen 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 generación de informes de victoria del comprador para habilitar el entrenamiento de modelos de AA.