Annunci nativi

Gli annunci nativi sono annunci formattati in modo da adattarsi al design visivo e ai contenuti circostanti, aumentando le probabilità che vengano visualizzati e selezionati dagli utenti. L'inventario di annunci nativi è disponibile nelle app mobile, nonché sui siti web per computer desktop e dispositivi mobili. Per ulteriori informazioni sugli annunci nativi, consulta la Panoramica degli annunci nativi.

Gli annunci nativi sono supportati sia per Authorized Buyers che per Open Bidding.

Ecco il flusso di lavoro per gli annunci nativi:

  1. Viene effettuata una chiamata per un annuncio nativo a Google. La chiamata specifica uno o entrambi i modelli di annunci nativi riportati di seguito, ciascuno specificando i campi nativi preferiti.
  2. Google invia agli acquirenti una richiesta di offerta RTB contenente un elenco dei campi richiesti.
  3. Gli acquirenti interessati rispondono con i campi richiesti.
  4. Google esegue un'asta per selezionare l'offerta vincente e invia gli asset della creatività forniti dall'acquirente al publisher.
  5. Il publisher assembla gli asset in un annuncio nativo e li applica stili per adattarli al design del sito.

Formati dei messaggi

Google supporta la specifica OpenRTB in formato JSON e Protobuf.

Per gli annunci nativi Protobuf OpenRTB, i seguenti campi sono diversi dalla specifica:

Specifica JSON
(PROTOCOL_OPENRTB_2_4)
Tipo JSON Implementazione di OpenRTB
(PROTOCOL_OPENRTB_PROTOBUF_2_4)
Tipo OpenRTB
BidRequest.imp[].native.request string BidRequest.imp[].native.request_native NativeRequest
BidResponse.seatbid[].bid[].adm string BidResponse.seatbid[].bid[].adm_native NativeResponse

I campi OpenRTB sono messaggi Protobuf e non stringhe.

Se utilizzi l'implementazione Protobuf OpenRTB, non riceverai BidRequest.imp[].native.request e dovrai rispondere con BidResponse.seatbid[].bid[].adm_native. Le risposte all'offerta con BidResponse.seatbid[].bid[].adm vengono filtrate. Gli ID asset non sono obbligatori per le risposte alle offerte Protobuf di OpenRTB.

Se utilizzi un SDK acquirente per eseguire il rendering degli annunci nativi, devi includere un'immagine type nella sezione declared_ad quando invii le creatività per la revisione.

Modelli di annunci nativi

Google supporta i due modelli di annunci nativi più comuni per gli annunci nativi non video e video:

Esistono altri modelli che potrebbero avere un insieme diverso di requisiti per campi, dimensioni e dimensioni.

Modello di annuncio per l'installazione di app

Le tabelle riportate di seguito mostrano i campi etichettati come Obbligatorio o Consigliato. Valgono le seguenti regole:

  • I campi contrassegnati con Obbligatorio sono obbligatori per l'offerente.
  • I campi contrassegnati con Consigliati non sono obbligatori per l'offerente e il publisher potrebbe visualizzarli o meno se vengono forniti (ad esempio, valutazione a stelle).
  • L'invito all'azione è sempre contrassegnato come Consigliato perché, se non viene inviato dall'offerente, viene assegnato un valore predefinito, ma viene sempre visualizzato se inviato.

Nella tabella seguente sono elencati i campi di un modello di annuncio per l'installazione di app. Le app mobile utilizzano questi campi per creare annunci nativi per l'installazione di app.

Campo Descrizione Obbligatorio o Consigliato? Sempre visualizzato? Dimensioni consigliate per le immagini/numero massimo di caratteri Esempio
Titolo Il titolo dell'app Obbligatorie 25 caratteri Flood-It!
Immagine Uno screenshot dell'app o un'altra immagine pertinente. Obbligatorie No 1200 px x 627 px o 600 x 600 px a seconda delle proporzioni richieste dal publisher. <Uno screenshot del gioco Flood-It!>
Body Testo principale dell'app Obbligatorie No 90 caratteri Ingannevolmente semplice e allettantemente impegnativo = piacevolmente coinvolgente!
Icona dell'app L'icona dell'app Obbligatorie No 128 x 128 px <Icona dell'app Flood-it!>
Call to action Azione dell'utente preferita Recommended 15 caratteri Installa
Star rating Numero di stelle (0-5) che rappresentano la valutazione dell'app nello store Recommended No 0 - 5 4.5
Prezzo Il costo dell'app Recommended No 15 caratteri Senza costi

Note sulla lunghezza del testo

Se un acquirente invia un asset di testo (ad esempio il corpo del testo) più lungo del numero massimo suggerito di caratteri, il testo potrebbe essere troncato e ridimensionato con puntini di sospensione da Google o dal publisher. Tieni presente che i limiti di troncamento sono la metà delle dimensioni in cinese, giapponese e coreano. Ad esempio, il limite dei titoli è 90 per l'inglese e 45 per il cinese.

Note sulle dimensioni delle immagini

I publisher possono:

  • Ritaglia l'immagine principale in modo simmetrico fino al 20% in una dimensione (altezza o larghezza).
  • Ridimensionare l'immagine senza modificare le proporzioni.
  • Le immagini con proporzioni sostanzialmente diverse da quelle implicite per altezza e larghezza possono essere filtrate.

Modello di annuncio della rete di contenuti

La seguente tabella elenca i campi di un modello di annuncio di contenuti. I publisher utilizzano questi campi per creare annunci di contenuti nativi.

Campo Descrizione Obbligatorio o Consigliato? Sempre visualizzato? Dimensioni consigliate per le immagini/numero massimo di caratteri * Esempio
Titolo Intestazione annuncio Obbligatorie 25 caratteri Tassi mutui più bassi
Immagine L'immagine principale dell'annuncio Obbligatorie No 1200 px x 627 px o 600 x 600 px a seconda delle proporzioni richieste dal publisher. <Immagine principale dell'annuncio>
Body Il contenuto dell'annuncio Obbligatorie No 90 caratteri La tua dolce casa di Brooklyn, più economica e prima di quanto pensi!
Logo Il logo dell'inserzionista o un'altra immagine piccola pertinente Recommended No 128 x 128 px <Logo di NY Mortgage Inc.>
Call to action Azione preferita dell'utente Recommended No 15 caratteri Richiedi un preventivo
Advertiser Testo che identifica l'inserzionista o il brand Obbligatorie No 25 caratteri Ipoteca di Roma

Modello di annuncio video per l'installazione di app

Campo Descrizione Obbligatorio o Consigliato? Sempre visualizzato? Dimensioni consigliate per le immagini/numero massimo di caratteri* Esempio
Video La risposta VAST video contenente tutti gli asset necessari per riprodurre un annuncio video. Obbligatorie No - Un URL a VAST XML contenente un oggetto Flood-It! Annuncio video
Titolo Il titolo dell'app Obbligatorie 25 caratteri Flood-It!
Immagine Immagine (miniatura) mostrata nel player prima che l'utente faccia clic sull'annuncio video o durante il caricamento. Obbligatorie No Deve corrispondere alle proporzioni del video (ad esempio: 1280 x 720 per video 16 x 9, 4 x 3 per video 640 x 480). Uno screenshot del gioco Flood-It! O dal video
Body Testo principale dell'app Obbligatorie No 90 caratteri Ingannevolmente semplice e allettantemente impegnativo = piacevolmente coinvolgente!
Icona dell'app L'icona dell'app Obbligatorie No 128 x 128 px Icona dell'app Flood-it!
Call to action Azione dell'utente preferita Obbligatorie 15 caratteri Installa
Star rating Numero di stelle (0-5) che rappresentano la valutazione dell'app nello store Recommended No 0 - 5 4.5
Prezzo Il costo dell'app Recommended No 15 caratteri Senza costi

Restrizioni

  • Video: tutti i video devono essere sotto forma di URL VAST o tag VAST. Non è possibile specificare un file video non elaborato, ad esempio WebM, MP4 e così via.

  • Lunghezza del testo: se un acquirente specifica un asset di testo come body nella risposta, questo potrebbe essere troncato e con puntini di sospensione da Google o dal publisher. Tieni presente che i limiti di troncamento sono dimezzati in cinese, giapponese e coreano. Ad esempio, il limite per i titoli è 90 per l'inglese e 45 per il cinese.

  • Dimensioni delle immagini. I publisher possono:

    • Ritaglia l'immagine principale in modo simmetrico fino al 20% in una dimensione (altezza o larghezza.
    • Ridimensionare l'immagine senza modificare le proporzioni.

Esempio di annuncio per l'installazione di app

video nativo

Modello di annuncio di contenuti video

Campo Descrizione Obbligatorio o Consigliato? Sempre visualizzato? Dimensioni consigliate per le immagini/numero massimo di caratteri* Esempio
Video La risposta VAST video contenente tutti gli asset necessari per riprodurre un annuncio video. Obbligatorie - Un URL a VAST XML contenente un oggetto Flood-It! Annuncio video
Titolo Intestazione annuncio Obbligatorie 25 caratteri Tassi mutui più bassi
Immagine Immagine (miniatura) mostrata nel player prima che l'utente faccia clic sull'annuncio video o durante il caricamento. Obbligatorie No Deve corrispondere alle proporzioni del video (ad esempio: 1280 x 720 per video 16 x 9, 4 x 3 per video 640 x 480). Uno screenshot del video
Body Il contenuto dell'annuncio Obbligatorie No 90 caratteri La tua dolce casa di Brooklyn, più economica e prima di quanto pensi!
Logo Il logo dell'inserzionista o un'altra immagine piccola pertinente Recommended No 128 x 128 px Logo di NY Mortgage Inc.
Call to action Azione preferita dell'utente Obbligatorie No 15 caratteri Richiedi un preventivo
Advertiser Testo che identifica l'inserzionista o il brand Obbligatorie No 25 caratteri Ipoteca di Roma

Metacampi

I seguenti metacampi sono condivisi da tutti i modelli di annuncio supportati:

Buffer del protocollo in tempo reale di Authorized Buyers Equivalente di OpenRTB di Authorized Buyers Descrizione
NativeAd.click_link_url Link.url L'URL che verrà chiamato dal browser quando l'utente fa clic sull'annuncio. Può essere il primo passaggio di una catena di reindirizzamento che rimanda alla pagina di destinazione. Per gli annunci nativi, ti consigliamo di utilizzare click_link_url come campo per impostare la destinazione a cui verrà indirizzato l'utente. È obbligatorio utilizzare questo campo nel caso di pagine di destinazione dinamiche.
Ad.click_through_url Bid.adomain

Deve essere impostato se l'offerente intende fare offerte. Si tratta dell'insieme di URL di destinazione per lo snippet, inclusi gli URL a cui l'utente verrà reindirizzato se fa clic sull'annuncio mostrato e gli eventuali URL visibili nell'annuncio sottoposto a rendering. Non includere chiamate intermedie all'ad server non correlate alla pagina di destinazione finale. Una risposta all'offerta che restituisce uno snippet o un annuncio video ma non dichiara click_through_url verrà ignorata. Imposta questo campo solo se sono impostati html_snippet, video_url o native_ad. Questi dati vengono utilizzati come dichiarazione dell'URL di destinazione, ad esempio per il post-filtro degli URL bloccati dal publisher o per la categorizzazione degli annunci. Consulta la sezione NativeAd.click_link_url sopra quando utilizzi gli annunci nativi.

Per gli annunci non nativi, non viene utilizzato per il monitoraggio dei clic o altre funzionalità pubblicitarie; viene utilizzato solo come dichiarazione dell'URL di destinazione.

Per gli annunci nativi, se il criterio NativeAd.click_link_url non è impostato, il primo valore di click_through_url viene utilizzato per indirizzare l'utente alla pagina di destinazione. Inoltre, tutti i valori vengono utilizzati come dichiarazioni dell'URL di destinazione (in modo simile al caso non nativo).

NativeAd.click_tracking_urls Link.clicktrackers Campo facoltativo. URL aggiuntivi che consentono agli inserzionisti di monitorare i clic degli utenti sull'annuncio.
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url Link a una pagina delle preferenze annunci o di disattivazione. Se presente, un'icona Scegli Tu! standard viene aggiunta alla creatività nativa e collegata a questo URL. Questa funzionalità è supportata per gli annunci nativi, ma non fa parte del messaggio nativo nella risposta all'offerta.
Ad.impression_tracking_url NativeResponse.imptrackers L'impressione nativa deve essere monitorata con impression_tracking_url nel protocollo per le offerte in tempo reale di Authorized Buyers o con gli imptracker nativi in OpenRTB.

required_fields e recommended_fields sono specificati dal publisher. Mostriamo come tradurre questi campi di bit per determinare se un campo è obbligatorio o consigliato.

Un campo bit utilizza ogni bit di un valore binario per archiviare un'istruzione vera o falsa, equivalente all'invio di molti segnali booleani come is_logo_required, is_header_required e così via, ma tutti inclusi insieme.

Esempio

Per questo esempio utilizzeremo un valore required_fields pari a 1085.

Innanzitutto, trova il valore binario equivalente: 10000111101

Una volta ottenuto il valore binario, puoi controllare i bit per vedere se un campo è obbligatorio (1) o non obbligatorio (0).

La tabella seguente mappa i campi alla loro posizione nel valore binario. Leggi il file binario da destra a sinistra, con il bit 1 corrispondente alla posizione più a destra nel valore binario.

Campo Posizionamento valore binario (da destra a sinistra)
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

Osservando il valore binario di esempio 10000111101, il bit a 1 bit (più a destra) è 1, a indicare un valore obbligatorio. In base alla tabella, a 1 bit corrisponde a HEADLINE.

Il valore a 2 bit (secondo valore da destra) è 0 e significa non obbligatorio. Il formato a 2 bit corrisponde a BODY.

Ecco tutti i campi obbligatori interpretati nel nostro esempio:

Valore Descrizione Campo obbligatorio?
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

Messaggio NativeAdTemplate

Quando ricevi una richiesta di offerta contenente inventario nativo, questa conterrà un elemento BidRequest.adSlot[].native_ad_template compilato. Il messaggio NativeAdTemplate fornisce specifiche per:

  • Campi obbligatori o consigliati.
  • Dimensioni di immagini, loghi e icone di app.
  • Specifiche per lo stile in cui viene visualizzato l'annuncio.
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;

  // ...
}

Messaggio NativeAd

Quando fa offerte su un inventario nativo, un acquirente deve compilare BidResponse.ad[].native_ad con i campi obbligatori dichiarati nel corrispondente BidRequest.adSlot[].native_ad_template.

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;
    // ...
  }
}

Esempi di richieste di offerta

Richieste di offerta non video

Google

JSON OpenRTB

Protobuf OpenRTB

Richieste di offerta video

Esempi di risposte alle offerte

Tieni presente che i valori in questa risposta non sono destinati a corrispondere alle richieste corrispondenti sopra. Tuttavia, se il modello nella richiesta suggerisce campi obbligatori/facoltativi, le risposte qui rispettano questi requisiti.

Risposte alle offerte non video

Google

JSON OpenRTB

Protobuf OpenRTB

Risposte alle offerte video