Anúncios nativos

Os anúncios nativos são formatados para se ajustar ao conteúdo e ao design visual, aumentando a probabilidade de serem vistos e clicados pelos usuários. O inventário de anúncios nativos está disponível em apps para dispositivos móveis, além de sites para computadores e dispositivos móveis. Para saber mais sobre anúncios nativos, consulte a Visão geral de anúncios nativos.

Os anúncios nativos são compatíveis com o Authorized Buyers e o Open Bidding.

Confira o fluxo de trabalho para anúncios nativos:

  1. É feita uma chamada de anúncio nativo para o Google. A chamada especifica um ou ambos os modelos de anúncios nativos abaixo, cada um especificando os campos nativos preferidos.
  2. O Google envia aos compradores uma solicitação de lance RTB contendo uma lista dos campos que estão sendo solicitados.
  3. Os compradores interessados respondem com os campos solicitados.
  4. O Google realiza um leilão para selecionar o lance vencedor e envia os recursos do criativo fornecidos pelo comprador ao editor.
  5. O editor monta os recursos em um anúncio nativo e os estiliza para se adequar ao design do site.

Formatos de mensagem

O Google é compatível com a especificação OpenRTB em JSON e Protobuf.

Para anúncios nativos do Protobuf do OpenRTB, os seguintes campos serão diferentes da especificação:

Especificação JSON
(PROTOCOL_OPENRTB_2_4)
Tipo de JSON Implementação do 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

Os campos do OpenRTB são mensagens Protobuf em vez de strings.

Se você usar a implementação do Protobuf do OpenRTB, não receberá BidRequest.imp[].native.request e precisará responder com BidResponse.seatbid[].bid[].adm_native. As respostas de lance com BidResponse.seatbid[].bid[].adm são filtradas. Os códigos de recursos não são necessários para respostas de lance do Protobuf do OpenRTB.

Se você usa um SDK do comprador para renderizar anúncios nativos, será necessário incluir uma imagem type no declared_ad ao enviar criativos para revisão.

Modelos de anúncios nativos

O Google é compatível com os dois modelos de anúncios nativos mais comuns para anúncios nativos em vídeo e que não são de vídeo:

Existem outros modelos que podem ter um conjunto diferente de requisitos para campos, dimensões e tamanhos.

Modelo de anúncio de instalação de apps

As tabelas abaixo mostram os campos rotulados como Obrigatório ou Recomendado. Aplicam-se as seguintes regras:

  • Os campos marcados como Obrigatórios são exigidos pelo proponente.
  • Os campos marcados como Recommended não são obrigatórios pelo proponente, e o editor pode ou não exibi-los se fornecidos (por exemplo, avaliação com estrelas).
  • A call-to-action (CTA) é sempre marcada como Recommended porque um padrão é atribuído se não é enviado pelo proponente, mas sempre é exibido se enviado.

A tabela a seguir lista os campos de um modelo de anúncio de instalação de apps. Os aplicativos para dispositivos móveis usam esses campos para criar anúncios nativos de instalação de apps.

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres Exemplo
Título O título do app Obrigatório Sim 25 caracteres Inundação!
Imagem Uma captura de tela do app ou outra imagem relevante Obrigatório Não 1.200 px x 627 px ou 600 px x 600 px,dependendo da proporção exigida pelo editor. <Uma captura de tela do jogo Flood-It!>
Body Texto principal do app Obrigatório Não 90 caracteres Enganosamente simples e desafiador = agradavelmente viciante!
Ícone do app O ícone do app Obrigatório Não 128 x 128 px <Ícone do app Flood-it!>
Call-to-action Ação preferencial do usuário Recomendados Sim 15 caracteres Instalar
Star rating Número de estrelas (0 a 5) que representam a avaliação do app na app store Recomendados Não 0 a 5 4.5
Preço Custo do app Recomendados Não 15 caracteres Sem custo financeiro

Observações sobre o tamanho do texto

Se um comprador enviar um recurso de texto (corpo do texto, por exemplo) maior que o número máximo sugerido de caracteres, o texto poderá ser truncado e reduzido pelo Google ou pelo editor. Os limites de truncamento têm metade do tamanho em chinês, japonês e coreano. Por exemplo, o limite de título é 90 para inglês e 45 para chinês.

Observações sobre o tamanho da imagem

Os editores podem:

  • Corte a imagem principal simétrica em até 20% em uma dimensão (altura ou largura).
  • Dimensione a imagem sem alterar a proporção.
  • Imagens com proporções significativamente diferentes daquelas implícitas pela altura e largura podem ser filtradas.

Modelo de anúncio de conteúdo

A tabela a seguir lista os campos de um modelo de anúncio de conteúdo. Os editores usam esses campos para criar anúncios nativos de conteúdo.

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres * Exemplo
Título O cabeçalho do anúncio Obrigatório Sim 25 caracteres As menores taxas de hipoteca
Imagem A imagem principal do anúncio Obrigatório Não 1.200 px x 627 px ou 600 px x 600 px,dependendo da proporção exigida pelo editor. <Imagem principal do anúncio>
Body O conteúdo do anúncio Obrigatório Não 90 caracteres Seu lar doce lar no Brooklyn. Mais barato e antes do que você imagina!
Logo Logotipo do anunciante ou outra imagem pequena relevante Recomendados Não 128 x 128 px <logotipo da NY Mortgage Inc.>
Call-to-action Ação preferida do usuário Recomendados Não 15 caracteres Receba uma cotação
Advertiser Texto que identifica o anunciante ou a marca Obrigatório Não 25 caracteres NY Mortgage Inc.

Modelo de anúncio em vídeo de instalação de apps

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres * Exemplo
Video É a resposta VAST de vídeo com todos os recursos necessários para reproduzir um anúncio em vídeo. Obrigatório Não - Um URL para XML VAST contendo um URL do Flood-It! anúncio em vídeo
Título O título do app Obrigatório Sim 25 caracteres Inundação!
Imagem É uma imagem (miniatura) exibida no player antes do clique no anúncio em vídeo ou enquanto ele está carregando. Obrigatório Não Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9 e 4 x 3 para vídeos de 640 x 480). Uma captura de tela do jogo Flood-It! ou pelo vídeo
Body Texto principal do app Obrigatório Não 90 caracteres Enganosamente simples e desafiador = agradavelmente viciante!
Ícone do app O ícone do app Obrigatório Não 128 x 128 px Ícone do app Flood-it!
Call-to-action Ação preferencial do usuário Obrigatório Sim 15 caracteres Instalar
Star rating Número de estrelas (0 a 5) que representam a avaliação do app na app store Recomendados Não 0 a 5 4.5
Preço Custo do app Recomendados Não 15 caracteres Sem custo financeiro

Restrições

  • Vídeo: todos os vídeos precisam estar na forma de um URL VAST ou uma tag VAST. Um arquivo de vídeo bruto, como WebM, MP4 etc. não pode ser especificado.

  • Comprimento do texto: se um comprador especificar um recurso de texto, como o body na resposta, ele poderá ser truncado e cortado pelo Google ou pelo editor. Os limites de truncamento têm metade do tamanho em chinês, japonês e coreano. Por exemplo, o limite de título é 90 em inglês e 45 para chinês.

  • Tamanho da imagem: os editores podem:

    • Corte a imagem principal de maneira simétrica em até 20% em uma dimensão (altura ou largura).
    • Dimensione a imagem sem alterar a proporção.

Exemplo de anúncio de instalação de apps

vídeo nativo

Modelo de anúncio de conteúdo em vídeo

Campo Descrição Obrigatório ou recomendado? Sempre exibido? Tamanho de imagem recomendado/número máximo de caracteres * Exemplo
Video É a resposta VAST de vídeo com todos os recursos necessários para reproduzir um anúncio em vídeo. Obrigatório Sim - Um URL para XML VAST contendo um URL do Flood-It! anúncio em vídeo
Título O cabeçalho do anúncio Obrigatório Sim 25 caracteres As menores taxas de hipoteca
Imagem É uma imagem (miniatura) exibida no player antes do clique no anúncio em vídeo ou enquanto ele está carregando. Obrigatório Não Precisa corresponder à proporção do vídeo (por exemplo, 1.280 x 720 para vídeos de 16 x 9 e 4 x 3 para vídeos de 640 x 480). Uma captura de tela do vídeo
Body O conteúdo do anúncio Obrigatório Não 90 caracteres Seu lar doce lar no Brooklyn. Mais barato e antes do que você imagina!
Logo Logotipo do anunciante ou outra imagem pequena relevante Recomendados Não 128 x 128 px Logotipo da NY Mortgage Inc.
Call-to-action Ação preferida do usuário Obrigatório Não 15 caracteres Receba uma cotação
Advertiser Texto que identifica o anunciante ou a marca Obrigatório Não 25 caracteres NY Mortgage Inc.

Campos meta

Os seguintes metacampos são compartilhados por todos os modelos de anúncios suportados:

Buffer de protocolo em tempo real do Authorized Buyers Equivalente do OpenRTB do Authorized Buyers Descrição
NativeAd.click_link_url Link.url O URL que será chamado pelo navegador quando o usuário clicar no anúncio. Pode ser a primeira etapa de uma cadeia de redirecionamento que leva à página de destino. Para anúncios nativos, recomendamos usar click_link_url como campo para definir o destino a que o usuário vai ir. É obrigatório usar esse campo no caso de páginas de destino dinâmicas.
Ad.click_through_url Bid.adomain

Precisa ser definido se o bidder pretende dar lances. Esse é o conjunto de URLs de destino para o snippet, incluindo os URLs que o usuário acessará se clicar no anúncio exibido, além dos URLs visíveis no anúncio renderizado. Não inclua chamadas intermediárias para o servidor de anúncios que não estejam relacionadas à página de destino final. Um BidResponse que retorna um snippet ou anúncio em vídeo, mas declara que não há click_through_url, será descartado. Só defina este campo se html_snippet, video_url ou native_ad estiverem definidos. Esses dados são usados como uma declaração de URL de destino, por exemplo, para a filtragem pós-filtragem de URLs bloqueados pelo editor ou a categorização de anúncios. Consulte NativeAd.click_link_url acima ao usar anúncios nativos.

Para anúncios não nativos, ele não é usado para rastreamento de cliques ou qualquer outra funcionalidade de anúncio. Ele é usado apenas como uma declaração de URL de destino.

Para anúncios nativos, se NativeAd.click_link_url não estiver definido, o primeiro valor de click_through_url será usado para direcionar o usuário à página de destino. Além disso, todos os valores são usados como declarações de URL de destino (semelhante ao caso não nativo).

NativeAd.click_tracking_urls Link.clicktrackers Opcional. URLs adicionais que permitem aos anunciantes rastrear os cliques do usuário no anúncio.
Ad.ad_choices_destination_url BidExt.ad_choices_destination_url Link para uma página de preferências ou desativação de anúncios. Se presente, um ícone padrão das Opções de anúncios é adicionado ao criativo nativo e vinculado a esse URL. Isso é compatível com anúncios nativos, mas não faz parte da mensagem nativa na resposta do lance.
Ad.impression_tracking_url NativeResponse.imptrackers A impressão nativa precisa ser rastreada com impression_tracking_url no protótipo de lances em tempo real do Authorized Buyers ou nos imptrackers nativos no OpenRTB.

required_fields e recommended_fields são especificados pelo editor. Mostramos como converter esses campos de bits para determinar se um campo é obrigatório ou recomendado.

Um campo de bit usa cada bit de um valor binário para armazenar uma instrução verdadeiro ou falso, equivalente ao envio de muitos indicadores booleanos, como is_logo_required, is_header_required etc., mas todos empacotados juntos.

Exemplo

Para este exemplo, usaremos um valor required_fields de 1085.

Primeiro, encontre o valor binário equivalente: 10000111101

Depois de ter o valor binário, é possível verificar os bits para ver se um campo é obrigatório (1) ou não é obrigatório (0).

A tabela abaixo mapeia os campos para seu local no valor binário. Leia o binário da direita para a esquerda, com o 1 bit correspondente ao local mais à direita do valor binário.

Campo Posicionamento de valores binários (da direita para a esquerda)
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

Analisando o valor binário de exemplo 10000111101, o 1 bit (mais à direita) é 1, significando um valor obrigatório. De acordo com a tabela, o 1 bit corresponde a HEADLINE.

O de 2 bits (segundo valor da direita) é 0, o que significa que não é obrigatório. Os 2 bits correspondem a BODY.

Veja todos os campos obrigatórios interpretados no nosso exemplo:

Valor Descrição Obrigatório?
1 VIDEO Sim
0 STORE Não
0 PRICE Não
0 STAR_RATING Não
0 APP_ICON Não
1 LOGO Sim
1 IMAGE Sim
1 ADVERTISER Sim
1 CALL_TO_ACTION Sim
0 BODY Não
1 HEADLINE Sim

Mensagem do NativeAdTemplate

Ao receber uma solicitação de lance com inventário nativo, ela conterá um BidRequest.adSlot[].native_ad_template preenchido. A mensagem NativeAdTemplate fornece especificações para:

  • Campos obrigatórios ou recomendados.
  • dimensões de imagens, logotipos e ícones de apps.
  • Especificações do estilo em que o anúncio é renderizado.
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;

  // ...
}

Mensagem da versão nativa

Ao dar lances em inventário nativo, um comprador precisa preencher BidResponse.ad[].native_ad com os campos obrigatórios declarados no BidRequest.adSlot[].native_ad_template correspondente.

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

Exemplos de solicitações de lance

Solicitações de lance que não são de vídeo

Google

JSON do OpenRTB

Protobuf do OpenRTB

Solicitações de lance de vídeo

Exemplos de respostas do lance

Os valores nessa resposta não correspondem às solicitações correspondentes acima. No entanto, se o modelo na solicitação sugerir campos obrigatórios/opcionais, as respostas seguirão esses requisitos.

Respostas de lances que não são de vídeo

Google

JSON do OpenRTB

Protobuf do OpenRTB

Respostas de lances de vídeo