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:
- 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.
- Google invia agli acquirenti una richiesta di offerta RTB contenente un elenco dei campi richiesti.
- Gli acquirenti interessati rispondono con i campi richiesti.
- Google esegue un'asta per selezionare l'offerta vincente e invia gli asset della creatività forniti dall'acquirente al publisher.
- 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:
- Modello di annuncio per l'installazione di app: promuovi e incrementa le installazioni di app mobile.
- Modello di annuncio della rete di contenuti: una combinazione più generica di testo e immagini per annunci web o correlati al brand.
- Modello di annuncio video per l'installazione di app
- Modello di annuncio di contenuti 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
Campi obbligatori e consigliati
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 | Sì | 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 | Sì | 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 | Sì | 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 | Sì | 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 | Sì | 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
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 | Sì | - | Un URL a VAST XML contenente un oggetto Flood-It! Annuncio video |
Titolo | Intestazione annuncio | Obbligatorie | Sì | 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 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_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. |
Campi obbligatori e consigliati
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 |
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ì |
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
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.