Anuncios HTML de AMP en lugar de RTB

En esta página, se describe cómo comenzar a usar anuncios HTML de AMP con RTB. Consulta los recursos que aparecen a continuación para obtener información adicional sobre los anuncios HTML de AMP y las herramientas que te ayudarán a comenzar.

Enfoque de alto nivel

Solicitud de oferta de RTB

La solicitud de oferta de RTB indica si la solicitud proviene de una página de AMP y cuáles son los requisitos para los anuncios HTML de AMP.

OpenRTB

página de AMP

message SiteExt {
  enum AmpPage {
    // This is not an AMP page.
    DIALECT_HTML = 0;

    // This is an Amp page.
    DIALECT_HTML_AMP = 1;
  }

  // Whether this is an AMP page or not. Omitted if unknown.
  optional AmpPage amp = 1;
  enum VisibilityState {
    VISIBILITY_STATE_UNKNOWN = 0;

    // The page is at least partially visible. For example, in the foreground
    // tab of a non-minimized window.
    VISIBILITY_STATE_VISIBLE = 1;

    // The page is not visible to users. For example, when the page is in a
    // background browser tab, or in a minimized window.
    VISIBILITY_STATE_HIDDEN = 2;
  }

  // The visibility state of the web page containing the ad slot.
  // See https://www.w3.org/TR/page-visibility/.
  // [AdX: BidRequest.page_visibility]
  optional VisibilityState page_visibility = 2 [default =
    VISIBILITY_STATE_UNKNOWN];

  // Information about a browser window's user activation state. See
  // https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface.
  message UserActivation {
    // Indicates whether a user has completed an interaction since page load.
    optional bool wasact = 1;

    // Indicates whether a user is currently interacting with the page.
    optional bool isact = 2;
  }

  // User activation information from the browser for the current request, if
  // the request is for a web page.
  optional UserActivation uact = 5;

  // The set of possible web navigation types that predicate a page load. Each
  // of these types may have different performance characteristics. For example,
  // users going back and forth might experience a faster site than users
  // performing navigation for the first time or submitting forms. See
  // https://w3c.github.io/navigation-timing/#dom-performancenavigationtiming-type.
  enum NavigationType {
    NAVIGATION_TYPE_UNKNOWN = 0;

    // Navigation started by clicking a link, entering the URL in the browser's
    // address bar, form submission, or initializing through a script operation
    // other than reload and back_forward.
    NAVIGATION_TYPE_NAVIGATE = 1;

    // Navigation is through the browser's reload operation, location.reload(),
    // or a Refresh pragma directive like
    // <meta http-equiv="refresh" content="300">.
    NAVIGATION_TYPE_RELOAD = 2;

    // Navigation is through the browser's history traversal operation.
    NAVIGATION_TYPE_BACK_FORWARD = 3;

    // Navigation is initiated by a prerender hint (deprecated). See
    // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/prerender.
    NAVIGATION_TYPE_PRERENDER = 4;
  }

  // The type of browser navigation that led to the current page. Unset for
  // non-web ad requests.
  optional NavigationType ntype = 6;

  // Indicates that the request is using semi-transparent branding,
  // which means only a truncated version of the request URL will
  // be provided. This decision is made by the publisher, see
  // https://support.google.com/admanager/answer/4584891#urls for context.
  optional bool is_semi_transparent_request = 3;

  // The domain of the partner (of the site owner) with ownership
  // of some portion of ad inventory on the site. The partner's ads.txt file
  // will be hosted here. More detail at
  // http://iabtechlab.com/wp-content/uploads/2021/03/ctv-app-ads-explainer-guide.pdf
  optional string inventorypartnerdomain = 4;
}

Requisitos de los anuncios HTML de AMP

// Ad Exchange extensions for the Imp object.
message ImpExt {
...
  // Possible requirement types for AMP ads.
  enum AmpAdRequirementType {
    // AMP ad requirements unknown.
    UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 1;
    // AMP ads are not allowed.
    AMP_AD_NOT_ALLOWED = 2;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are not early rendered.
    AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED = 3;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are early rendered.
    AMP_AD_ALLOWED_AND_EARLY_RENDERED = 4;
    // AMP ads are required.
    // Ads that are non-AMP may be rejected by the publisher.
    AMP_AD_REQUIRED = 5;
    // Exchange-specific values above 500.
  }
  optional AmpAdRequirementType ampad = 8
    [default = UNKNOWN_AMP_AD_REQUIREMENT_TYPE];
}

RTB de Authorized Buyers

página de AMP

// Whether this is an AMP page or not.
enum AmpPage {
  // AMP page status unknown.
  UNKNOWN_AMP_PAGE = 0;

Requisitos de los anuncios HTML de AMP

// Possible requirement types for AMP ads.
enum AmpAdRequirementType {
  // AMP ad requirements unknown.
  UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 0;

Respuesta a la oferta de RTB

OpenRTB

En OpenRTB 3.0 y en el Advertising Common Model adjunto, se incluyen varias adiciones para admitir anuncios HTML de AMP en las especificaciones de borrador más recientes de la IAB, incluidas las siguientes:

Oferta Campo Attr Tipo Descripción
Solicitud Site.amp amp integer El campo Site.amp indica si la página se renderiza en AMP y se omite si se desconoce:
0 = la página no es de AMP
1 = la página se creó con HTML de AMP
Solicitud ampformat rend integer La especificación de formato de AMP indica los requisitos y el comportamiento de renderización de los anuncios HTML de AMP:
1 = Los requisitos de los anuncios de AMP son desconocidos
2 = No se permiten los anuncios de AMP
3 = Se permiten los anuncios de AMP o los que no son de AMP; los anuncios de AMP no se renderizan de manera anticipada
4 = Se permiten anuncios de AMP o que no son de AMP, y los anuncios de AMP se renderizan de manera anticipada
5 = Se requieren anuncios de AMP. El publicador podría rechazar los anuncios que no sean de AMP
500+ = Valores específicos del intercambio; deben comunicarse a los ofertantes con prioridad
Respuesta display curl cadena En la respuesta a la oferta, se agregó display.curl para que pueda enviar creatividades a través de una URL, incluida la compatibilidad con anuncios HTML de AMP.
Esta es la URL en la que se encontrará el lenguaje de marcado de la creatividad. Se aplica a tipos de creatividades como anuncios de AMP, VAST, DAAST y nativos. Normalmente, solo uno de adm o curl es válido en un anuncio determinado.

RTB de Authorized Buyers

El campo BidResponse.Ad.amp_ad_url en las respuestas a la oferta de Authorized Buyers acepta una URL que dirija al contenido del anuncio HTML de AMP. El mismo campo existe como una extensión en el objeto Bid en la implementación de OpenRTB de Google.

// The URL to fetch an AMPHTML ad. Only one of the following should be set:
// html_snippet, video_url, amp_ad_url, native_ad.
optional string amp_ad_url = 23;

Verificación de un código HTML de AMP válido

Para que los anuncios HTML de AMP se puedan renderizar anticipadamente, el intercambio debe verificarlos y firmarlos, lo que indica que el anuncio está escrito en el formato de creatividad <html amp4ads> de amp4ads.

Las páginas de AMP permitirán que los anuncios que sean HTML de AMP válidos se puedan renderizar de manera anticipada. Los anuncios que no estén verificados como anuncios HTML de AMP válidos se renderizarán a la misma velocidad que los anuncios que no sean de ese tipo.

Solo se deben mostrar anuncios HTML de AMP en el amp_ad_url.

En el futuro, si un publicador solo requiere anuncios HTML de AMP, no se renderizarán los anuncios que no estén firmados como HTML de AMP.

Con Authorized Buyers, se les cobrará a los ofertantes si devuelven un anuncio que no es de AMP a un espacio publicitario necesario para un anuncio HTML de AMP.

Recuperación del servidor

Para que los anuncios HTML de AMP se rendericen de manera anticipada, el contenido del anuncio HTML de AMP debe renderizarse sin requerir saltos adicionales del cliente. Esto se diseñó para evitar experiencias del usuario deficientes debido a la latencia de anuncios y las llamadas adicionales del cliente.

Después de que un ofertante gana la subasta, el intercambio realizará una solicitud de servidor a servidor para recuperar el contenido del anuncio HTML de AMP ubicado en la URL proporcionada en amp_ad_url. Los servidores de creatividades deben responder y mostrar contenido en un plazo de 300 ms.

El anuncio HTML de AMP que muestra el servidor de creatividades se insertará en el espacio publicitario y, luego, se renderizará. Ten en cuenta que un anuncio HTML de AMP válido no puede contener iframes ni otras etiquetas <amp-ad>. Consulta las especificaciones de anuncios HTML de AMP para obtener más información.

Función solo en versión beta: Si necesitas esta función, comunícate con tu equipo de cuentas

Durante la recuperación de servidor a servidor del anuncio HTML de AMP (especificado en amp_ad_url), es posible que Authorized Buyers pase la dirección IP y el encabezado HTTP del navegador del usuario al servidor de creatividades. Esto garantiza que el servidor de creatividades reciba información similar a la que se envía desde una recuperación estándar del cliente. En algunos casos, la dirección IP puede truncarse solo a los primeros 3 bytes (IPv4) o los primeros 6 bytes (IPv6). Comunícate con tu equipo de cuentas si necesitas esta función. A continuación, se muestra un encabezado HTTP de muestra:

URL de seguimiento de impresiones y macros de clics

Los compradores de RTB suelen incluir el seguimiento de impresiones como un campo estructurado en la respuesta a la oferta (esto es Bid.burl, la "URL de aviso de facturación" en OpenRTB 2.5).

Con Authorized Buyers, estos se activarán del lado del cliente; amp-pixel activa las URLs de seguimiento cuando se renderiza la creatividad. amp-analytics puede manejar casos de uso de seguimiento más avanzados además de la renderización.

Los anuncios HTML de AMP deben contener una macro de clics válida en el código HTML de AMP. Por lo general, tiene la siguiente forma:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2my.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
<a href=”https://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%”></a>

Las creatividades suelen incluir píxeles de coincidencia de cookies en el código de la creatividad. Los anuncios HTML de AMP pueden utilizar los componentes amp-pixel y amp-analytics para este caso de uso. Si no se puede adaptar tu caso de uso mediante amp-analytics o amp-pixel, abre un problema de GitHub para analizar las opciones alternativas. Aceptamos extensiones nuevas que puedan usarse de manera amplia para distintas empresas. Consulta los lineamientos detallados o una guía técnica para compilar una extensión nueva.

Ejemplos de URL de anuncios de AMP para pruebas

Puede usar el siguiente ejemplo de contenido de anuncio HTML de AMP para realizar pruebas:

Recursos

El Proyecto AMP y Google lanzaron una serie de recursos para ayudarte a comenzar:

Cómo crear anuncios en AMP
Propuestas específicas de RTB para IAB o OpenRTB Group