Anuncios nativos

Los anuncios nativos son aquellos que tienen un formato que se ajusta al contenido circundante y al diseño visual, lo que aumenta las probabilidades de que los usuarios los vean y hagan clic en ellos. El inventario de anuncios nativos está disponible en apps para dispositivos móviles, así como en sitios web móviles y para computadoras de escritorio. Para obtener más información sobre los anuncios nativos, consulta Descripción general de los anuncios nativos.

Los anuncios nativos son compatibles con Authorized Buyers y Open Bidding.

Este es el flujo de trabajo para los anuncios nativos:

  1. Se realiza una llamada para un anuncio nativo a Google. En la llamada, se especifican una o ambas plantillas de anuncios nativos, y cada una especifica los campos nativos preferidos.
  2. Google envía a los compradores una solicitud de oferta de RTB que contiene una lista de los campos que se solicitan.
  3. Los compradores interesados responden con los campos solicitados.
  4. Google ejecuta una subasta para seleccionar la oferta ganadora y envía los elementos de creatividad que proporcionó el comprador al publicador.
  5. El publicador organiza los elementos en un anuncio nativo y los adapta al diseño del sitio.

Formatos de mensaje

Google admite la especificación de OpenRTB en JSON y Protobuf.

En el caso de los anuncios nativos de OpenRTB Protobuf, los siguientes campos difieren de la especificación:

Especificación de JSON
(PROTOCOL_OPENRTB_2_4)
Tipo JSON Implementación de OpenRTB
(PROTOCOL_OPENRTB_PROTOBUF_2_4)
Tipo de OpenRTB
BidRequest.imp[].native.request string BidRequest.imp[].native.request_native NativeRequest
BidResponse.seatbid[].bid[].adm string BidResponse.seatbid[].bid[].adm_native NativeResponse

Los campos de OpenRTB son mensajes de Protobuf en lugar de cadenas.

Si usas la implementación de OpenRTB Protobuf, no recibirás BidRequest.imp[].native.request y deberás responder con BidResponse.seatbid[].bid[].adm_native. Se filtran las respuestas a la oferta con BidResponse.seatbid[].bid[].adm. No se requieren los IDs de recursos para las respuestas de oferta de OpenRTB Protobuf.

Si usas un SDK del comprador para renderizar anuncios nativos, debes incluir una imagen type en declared_ad cuando envíes creatividades para su revisión.

Plantillas de anuncios nativos

Google admite las dos plantillas de anuncios nativos más comunes para los anuncios que no son de video y los anuncios nativos de video:

Existen otras plantillas que pueden tener un conjunto diferente de requisitos para los campos, las dimensiones y los tamaños.

Plantilla de anuncios de instalación de aplicaciones

En las siguientes tablas, se muestran los campos etiquetados como Obligatorio o Recomendado. Se aplican las siguientes reglas:

  • El ofertante requiere los campos marcados como Obligatorios.
  • El ofertante no requiere los campos marcados como Recomendados y el publicador puede mostrarlos o no si los proporciona (por ejemplo, calificación por estrellas).
  • El llamado a la acción (CTA) siempre está marcado como Recomendado porque se asigna un valor predeterminado si el ofertante no envía ninguno, pero siempre se mostrará si se envía.

En la siguiente tabla, se enumeran los campos de una plantilla de anuncios de instalación de aplicaciones. Las aplicaciones para dispositivos móviles usan estos campos para crear anuncios nativos de instalación de aplicación.

Campo Descripción ¿Obligatorio o recomendado? ¿Se muestra siempre? Tamaño de imagen recomendado/cantidad máxima de caracteres Ejemplo
Título El título de la app Obligatorias 25 caracteres Flood-It!
Imagen Una captura de pantalla de la app o alguna otra imagen relevante Obligatorias No Debe ser de 1,200 px × 627 px o 600 px × 600 px, según la relación de aspecto que requiera el publicador. <Captura de pantalla del juego Flood-It!>
Body Texto principal de la app Obligatorias No 90 caracteres Engañosamente simple y desafiante = encantadoramente adictivo.
Ícono de la app El ícono de la app Obligatorias No 128 × 128 px <Ícono de la app de Flood‐It!>
Llamado a la acción Acción del usuario preferida Recomendado 15 caracteres Instalar
Calificación por estrellas Cantidad de estrellas (0-5) que representan la calificación de la app en la tienda de aplicaciones Recomendado No 0 a 5 4.5
Precio El costo de la app Recomendado No 15 caracteres Gratis

Notas sobre la longitud del texto

Si un comprador envía un recurso de texto (texto del cuerpo, por ejemplo) que supera la cantidad máxima de caracteres sugerida, Google o el publicador podrían truncar el texto. Ten en cuenta que los límites de truncamiento son la mitad del tamaño en chino, japonés y coreano. Por ejemplo, el límite del título es 90 para inglés y 45 para chino.

Notas sobre el tamaño de la imagen

Los publicadores pueden hacer lo siguiente:

  • Recorta la imagen principal de manera simétrica hasta un 20% en una dimensión (altura o ancho).
  • Escala la imagen sin cambiar su relación de aspecto.
  • Se pueden filtrar las imágenes que tienen relaciones de aspecto sustancialmente diferentes a las implícitas en la altura y el ancho.

Plantilla de anuncios de contenido

La siguiente tabla incluye los campos de una plantilla de anuncio de contenido. Los editores usan estos campos para crear anuncios de contenido nativo.

Campo Descripción ¿Obligatorio o recomendado? ¿Se muestra siempre? Tamaño de imagen recomendado o cantidad máxima de caracteres * Ejemplo
Título El encabezado del anuncio Obligatorias 25 caracteres Tasas hipotecarias más bajas
Imagen La imagen principal del anuncio Obligatorias No Debe ser de 1,200 px × 627 px o 600 px × 600 px, según la relación de aspecto que requiera el publicador. <Imagen principal del anuncio>
Body El contenido del anuncio Obligatorias No 90 caracteres Tu dulce hogar en Brooklyn: más barato y antes de lo que piensas.
Logo Logotipo del anunciante u otra imagen pequeña relevante Recomendado No 128 × 128 px <Logotipo de NY Mortgage Inc.>
Llamado a la acción Acción preferida del usuario Recomendado No 15 caracteres Solicite una cotización
Advertiser Texto que identifica al anunciante o a la marca Obligatorias No 25 caracteres NY Mortgage Inc.

Plantilla de anuncios de instalación de aplicaciones de video

Campo Descripción ¿Obligatorio o recomendado? ¿Se muestra siempre? Tamaño de imagen recomendado/cantidad máxima de caracteres* Ejemplo
Video Es la respuesta de VAST del video que contiene todos los elementos necesarios para reproducir un anuncio de video. Obligatorias No - Una URL a XML de VAST que contiene un objeto Flood-It! Anuncio de video
Título El título de la app Obligatorias 25 caracteres Flood-It!
Imagen Es una imagen (miniatura) que se muestra en el reproductor antes de hacer clic en el anuncio de video o mientras se carga. Obligatorias No Debe coincidir con la relación de aspecto del video (por ejemplo: 1280 × 720 para videos de 16 × 9, 4 × 3 para videos de 640 × 480). Captura de pantalla del juego Flood-It! O desde el video
Body Texto principal de la app Obligatorias No 90 caracteres Engañosamente simple y desafiante = encantadoramente adictivo.
Ícono de la app El ícono de la app Obligatorias No 128 × 128 px Ícono de la app de Flood‐It!
Llamado a la acción Acción del usuario preferida Obligatorias 15 caracteres Instalar
Calificación por estrellas Cantidad de estrellas (0-5) que representan la calificación de la aplicación en la tienda de aplicaciones Recomendado No 0 a 5 4.5
Precio El costo de la app Recomendado No 15 caracteres Gratis

Restricciones

  • Video: Todo el video debe tener el formato de una URL de VAST o de una etiqueta de VAST. No se puede especificar un archivo de video sin procesar, como WebM, MP4, etc.

  • Longitud del texto: Si un comprador especifica un recurso de texto como body en la respuesta, Google o el publicador podrían truncarlo y reducirlo. Ten en cuenta que los límites de truncamiento son la mitad del tamaño en chino, japonés y coreano. Por ejemplo, el límite del título es 90 en inglés y 45 para chino.

  • Tamaño de la imagen: Los publicadores pueden hacer lo siguiente:

    • Recorta la imagen principal de manera simétrica hasta un 20% en una dimensión (altura o ancho.
    • Escala la imagen sin cambiar su relación de aspecto.

Ejemplo de anuncio de instalación de aplicación

video nativo

Plantilla de anuncios de contenido de video

Campo Descripción ¿Obligatorio o recomendado? ¿Se muestra siempre? Tamaño de imagen recomendado/cantidad máxima de caracteres* Ejemplo
Video Es la respuesta de VAST del video que contiene todos los elementos necesarios para reproducir un anuncio de video. Obligatorias - Una URL a XML de VAST que contiene un objeto Flood-It! Anuncio de video
Título El encabezado del anuncio Obligatorias 25 caracteres Tasas hipotecarias más bajas
Imagen Es una imagen (miniatura) que se muestra en el reproductor antes de hacer clic en el anuncio de video o mientras se carga. Obligatorias No Debe coincidir con la relación de aspecto del video (por ejemplo: 1280 × 720 para videos de 16 × 9, 4 × 3 para videos de 640 × 480). Una captura de pantalla del video
Body El contenido del anuncio Obligatorias No 90 caracteres Tu dulce hogar en Brooklyn: más barato y antes de lo que piensas.
Logo Logotipo del anunciante u otra imagen pequeña relevante Recomendado No 128 × 128 px Logotipo de NY Mortgage Inc.
Llamado a la acción Acción preferida del usuario Obligatorias No 15 caracteres Solicite una cotización
Advertiser Texto que identifica al anunciante o a la marca Obligatorias No 25 caracteres NY Mortgage Inc.

Campos meta

Los siguientes metacampos se comparten en todas las plantillas de anuncios compatibles:

Búfer de protocolo en tiempo real de Authorized Buyers Equivalente de OpenRTB de Authorized Buyers Descripción
NativeAd.click_link_url Link.url La URL a la que llamará el navegador cuando el usuario haga clic en el anuncio. Puede ser el primer paso de una cadena de redireccionamiento que finalmente dirige a la página de destino. En el caso de los anuncios nativos, recomendamos usar click_link_url como campo para establecer el destino al que finalmente irá el usuario. Es obligatorio usar este campo en el caso de páginas de destino dinámicas.
Ad.click_through_url Bid.adomain

Se debe establecer si el ofertante pretende ofertar. Es el conjunto de URLs de destino para el fragmento, que incluye las URLs a las que el usuario accederá si hace clic en el anuncio que se muestra y las URLs visibles en el anuncio renderizado. No incluyas llamadas intermedias al servidor de anuncios que no estén relacionadas con la página de destino final. Se descartará una BidResponse que muestre un fragmento o un anuncio de video, pero que declare que no haya click_through_url. Solo configura este campo si se configuran html_snippet, video_url o native_ad. Estos datos se utilizan como una declaración de URL de destino, por ejemplo, para el filtrado posterior de las URLs bloqueadas por el publicador o la categorización de anuncios. Consulta NativeAd.click_link_url más arriba cuando uses anuncios nativos.

En el caso de los anuncios no nativos, no se utiliza para el seguimiento de clics ni ninguna otra funcionalidad del anuncio; solo se utiliza como una declaración de URL de destino.

En el caso de los anuncios nativos, si no se configura NativeAd.click_link_url, se usa el primer valor de click_through_url para dirigir al usuario a la página de destino. Además, todos los valores se utilizan como declaraciones de URL de destino (similar al caso no nativo).

NativeAd.click_tracking_urls Link.clicktrackers Opcional. URLs adicionales que permiten a los anunciantes hacer un seguimiento de los clics de los usuarios en el anuncio.
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url Vínculo a una página de inhabilitación o preferencias de anuncios. Si está presente, se agrega un ícono estándar de AdChoices a la creatividad nativa y se vincula a esta URL. Esto es compatible con anuncios nativos, pero no forma parte del mensaje nativo en la respuesta a la oferta.
Ad.impression_tracking_url NativeResponse.imptrackers Se debe hacer un seguimiento de la impresión nativa con impression_tracking_url en el protocolo de ofertas en tiempo real de Authorized Buyers o en el seguimiento de impresiones nativas en OpenRTB.

El editor especifica required_fields y recommended_fields. Te mostramos cómo traducir estos campos de bits para determinar si un campo es obligatorio o se recomienda.

Un campo de bits usa cada bit de un valor binario para almacenar una declaración verdadero o falso, lo que equivale a enviar muchas señales booleanas, como is_logo_required, is_header_required, etc., pero todas juntas.

Ejemplo

Para este ejemplo usaremos un valor required_fields de 1085.

Primero, encuentra el valor binario equivalente: 10000111101

Una vez que tengas el valor binario, puedes comprobar los bits para ver si un campo es obligatorio (1) o no (0).

La siguiente tabla asigna los campos a su lugar en el valor binario. Lee el objeto binario de derecha a izquierda, y el 1 bit corresponde al lugar que se encuentra más a la derecha en el valor binario.

Campo Posición del valor binario (de derecha a izquierda)
HEADLINE 1
BODY 2
CALL_TO_ACTION 4
ADVERTISER 8
IMAGE 16
LOGO 32
APP_ICON 64
STAR_RATING 128
PRICE 256
STORE 512
VIDEO 1024

Si observas el valor binario de ejemplo 10000111101, el de 1 bit (más a la derecha) es 1, lo que significa que es un valor obligatorio. Según la tabla, el 1 bit corresponde a HEADLINE.

El de 2 bits (segundo valor desde la derecha) es 0, lo que significa que no es obligatorio. El de 2 bits corresponde a BODY.

Estos son todos los campos obligatorios interpretados en nuestro ejemplo:

Valor Descripción ¿Obligatorio?
1 VIDEO
0 STORE No
0 PRICE No
0 STAR_RATING No
0 APP_ICON No
1 LOGO
1 IMAGE
1 ADVERTISER
1 CALL_TO_ACTION
0 BODY No
1 HEADLINE

Mensaje androidxTemplate

Cuando recibas una solicitud de oferta que contenga inventario nativo, esta contendrá una BidRequest.adSlot[].native_ad_template propagado. El mensaje NativeAdTemplate proporciona especificaciones para lo siguiente:

  • Campos obligatorios o recomendados
  • Dimensiones de las imágenes, los logotipos y los íconos de la app
  • Son las especificaciones para el estilo en el que se renderiza el anuncio.
message BidRequest {
  //...
  message AdSlot {
    //...

    message NativeAdTemplate {
      // Defines the bits used in required_fields and recommended_fields.
      // There is one bit for each of the fields in BidResponse.Ad.NativeAd
      enum Fields {
        NO_FIELDS = 0x0;
        HEADLINE = 0x1;
        BODY = 0x2;
        CALL_TO_ACTION = 0x4;
        ADVERTISER = 0x8;
        IMAGE = 0x10;
        LOGO = 0x20;
        APP_ICON = 0x40;
        STAR_RATING = 0x80;
        PRICE = 0x100;
        DEPRECATED_STORE = 0x200;
        VIDEO = 0x400;
      }

      // Bitfield describing which fields are required by the publisher. Bid
      // responses with no value for these fields will be rejected. Click
      // and view tracking urls are always implicitly required.
      optional int64 required_fields = 1;

      // Bitfield describing which fields are recommended by the publisher.
      // All recommended field are supported, but not all recommended fields
      // are required.
      optional int64 recommended_fields = 2;

      // max_safe_length indicates the maximum number of Unicode characters that
      // are guaranteed to be shown without truncation. Longer strings may be
      // truncated and ellipsized by Ad Exchange or the publisher during
      // rendering.
      optional int32 headline_max_safe_length = 3;
      optional int32 body_max_safe_length = 4;
      optional int32 call_to_action_max_safe_length = 5;
      optional int32 advertiser_max_safe_length = 6;
      optional int32 price_max_safe_length = 15;

      // The width and height from which to calculate the required aspect ratio.
      // You can provide a larger image in the response. Images that have aspect
      // ratios substantially different than those implied by the height and
      // width may be filtered.
      optional int32 image_width = 7;
      optional int32 image_height = 8;
      optional int32 logo_width = 9;
      optional int32 logo_height = 10;
      optional int32 app_icon_width = 11;
      optional int32 app_icon_height = 12;

      // Globally distinct id for the specific style, HTML, and CSS with which
      // the native ad is rendered.
      optional int32 style_id = 16;

      // Type of style layout for each native ad template.
      enum LayoutType {
        PIXEL = 0;
        FLUID = 1;
      }
      optional LayoutType style_layout_type = 17 [default = PIXEL];

      // If the style_layout_type is Pixel, width and height of the
      // entire native ad after rendering. If the style_layout_type is
      // Fluid, the style_height and style_width may optionally
      // not be populated.
      optional int32 style_height = 18;
      optional int32 style_width = 19;
    }
    repeated NativeAdTemplate native_ad_template = 51;
  }

    // NativePlacementType describes placement of native ad slot with respect to
    // surrounding context.
    enum NativePlacementType {
      PLACEMENT_UNKNOWN = 0;
      // In the feed of content - for example as an item inside the organic
      // feed/grid/listing/carousel.
      PLACEMENT_IN_FEED = 1;
      // In the atomic unit of the content - for example, in the article page or single
      // image page.
      PLACEMENT_ATOMIC_UNIT = 2;
      // Outside the core content - for example in the ads section on the right
      // rail, as a banner-style placement near the content, etc.
      PLACEMENT_OUTSIDE = 3;
      // Recommendation widget, most commonly presented below the article
      // content.
      PLACEMENT_RECOMMENDATION = 4;
    }

    optional NativePlacementType native_placement_type = 45;

  // ...
}

Mensaje de funcionalidades

Cuando un comprador oferta por inventario nativo, debe propagar BidResponse.ad[].native_ad con los campos obligatorios declarados en las BidRequest.adSlot[].native_ad_template correspondientes.

message BidResponse {
  //...
  message Ad {
    //...

    message NativeAd {
      // A short title for the ad.
      optional string headline = 1;

      // A long description of the ad.
      optional string body = 2;

      // A label for the button that the user is supposed to click.
      optional string call_to_action = 3;

      // The name of the advertiser or sponsor, to be displayed in the ad
      // creative.
      optional string advertiser = 4;

      // Next tag to use: 4
      message Image {
        optional string url = 1;

        // Image width and height are specified in pixels. You may provide a
        // larger image than was requested, so long as the aspect ratio is
        // preserved.
        optional int32 width = 2;
        optional int32 height = 3;
      }

      // A large image.
      optional Image image = 5;

      // A smaller image, for the advertiser's logo.
      optional Image logo = 6;

      // The app icon, for app download ads.
      optional Image app_icon = 7;

      // The video file. Only set this field if the video field is requested.
      oneof video {
        // The URL to fetch a video ad. The URL should return an XML response
        // that conforms to VAST standards.
        string video_url = 13;

        // The VAST document to be returned.
        string video_vast_xml = 16;
      }

      // The app rating in the app store. Must be in the range [0-5].
      optional double star_rating = 8;

      // The URL that the browser/SDK will load when the user clicks the ad.
      // This can be the landing page directly, or the first step of a redirect
      // chain that eventually leads to it. For backward compatibility, if this
      // is not set, the first Ad.click_through_url is used.
      optional string click_link_url = 14;

      // The URL to use for click tracking. The SDK pings click tracking url on
      // a background thread. When resolving the url, HTTP 30x redirects are
      // followed. The SDK ignores the contents of the response; this URL
      // has no effect on the landing page for the user.
      // This field is planned to be deprecated and we are moving to the
      // repeated click_tracking_urls field.
      optional string click_tracking_url = 11;

      // The URLs to use for click tracking. This will be used throughout the
      // serving stack and will incorporate any URL in click_tracking_urls.
      repeated string click_tracking_urls = 15;

      // The price of the promoted app including the currency info.
      optional string price = 10;

    };
    optional NativeAd native_ad = 18;

    // The set of destination URLs for the snippet. This includes the URLs that
    // the user will go to if they click on the displayed ad, and any URLs that
    // are visible in the rendered ad. Do not include intermediate calls to the
    // adserver that are unrelated to the final landing page. A BidResponse that
    // returns a snippet or video ad but declares no click_through_url will be
    // discarded. Only set this field if html_snippet or video_url or native_ad
    // are set. This data is used as a destination URL declaration, for example
    // for post-filtering of publisher-blocked URLs or ad categorization.
    //
    // For non-native ads, it is not used for click tracking or any
    // other ad functionality; it is only used as a destination URL
    // declaration.
    //
    // For native ads, if NativeAd.click_link_url is not set, the first
    // value of click_through_url is used to direct the user to the landing
    // page. In addition, all values are used as destination
    // URL declarations (similar to the non-native case).
    repeated string click_through_url = 4;

    //...

    // The URLs to call when the impression is rendered. The SDK pings
    // impression urls on a background thread and ignores the contents
    // of the response.
    repeated string impression_tracking_url = 19;

    // Link to ad preferences page. This is only supported for native ads.
    // If present, a standard AdChoices icon is added to the native ad creative and
    // linked to this URL.
    optional string ad_choices_destination_url = 21;
    // ...
  }
}

Ejemplos de solicitudes de oferta

Solicitudes de oferta que no son de video

Google

JSON de OpenRTB

OpenRTB Protobuf

Solicitudes de oferta de video

Ejemplos de respuestas a ofertas

Ten en cuenta que los valores en estas respuestas no deben coincidir con las solicitudes correspondientes anteriores. Sin embargo, si la plantilla de la solicitud sugiere campos opcionales o obligatorios, las respuestas aquí cumplen con esos requisitos.

Respuestas a ofertas que no son de video

Google

JSON de OpenRTB

OpenRTB Protobuf

Respuestas a ofertas de video