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:
- 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.
- Google envía a los compradores una solicitud de oferta de RTB que contiene una lista de los campos que se solicitan.
- Los compradores interesados responden con los campos solicitados.
- Google ejecuta una subasta para seleccionar la oferta ganadora y envía los elementos de creatividad que proporcionó el comprador al publicador.
- 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:
- Plantilla de anuncio de instalación de aplicación: Promociona y genera instalaciones de aplicaciones para dispositivos móviles.
- Plantilla de anuncio de contenido: Es una combinación más genérica de imágenes y texto para anuncios de marca o web.
- Plantilla de anuncio de instalación de aplicación de video
- Plantilla de anuncio de contenido 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
Campos obligatorios y recomendados
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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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 | Sí | 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
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 | Sí | - | Una URL a XML de VAST que contiene un objeto Flood-It! Anuncio de video |
Título | El encabezado del anuncio | Obligatorias | Sí | 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 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_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. |
Campos obligatorios y recomendados
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 |
Sí |
0 |
STORE |
No |
0 |
PRICE |
No |
0 |
STAR_RATING |
No |
0 |
APP_ICON |
No |
1 |
LOGO |
Sí |
1 |
IMAGE |
Sí |
1 |
ADVERTISER |
Sí |
1 |
CALL_TO_ACTION |
Sí |
0 |
BODY |
No |
1 |
HEADLINE |
Sí |
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
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.