Anúncios HTML para AMP em vez de RTB

Nesta página, descrevemos como começar a usar os anúncios HTML para AMP com o RTB. Confira os Recursos abaixo para mais informações sobre anúncios HTML para AMP e ferramentas que ajudarão você a começar.

Abordagem de alto nível

Solicitação de lance de RTB

A solicitação de lance de RTB indica se ela vem de uma página AMP e indica os requisitos dos anúncios HTML para AMP.

OpenRTB

página AMP

message SiteExt {
  enum AmpPage {
    // This is not an AMP page.
    DIALECT_HTML = 0;

    // This is an Amp page.
    DIALECT_HTML_AMP = 1;
  }

  // Whether this is an AMP page or not. Omitted if unknown.
  optional AmpPage amp = 1;
  enum VisibilityState {
    VISIBILITY_STATE_UNKNOWN = 0;

    // The page is at least partially visible. For example, in the foreground
    // tab of a non-minimized window.
    VISIBILITY_STATE_VISIBLE = 1;

    // The page is not visible to users. For example, when the page is in a
    // background browser tab, or in a minimized window.
    VISIBILITY_STATE_HIDDEN = 2;
  }

  // The visibility state of the web page containing the ad slot.
  // See https://www.w3.org/TR/page-visibility/.
  // [AdX: BidRequest.page_visibility]
  optional VisibilityState page_visibility = 2 [default =
    VISIBILITY_STATE_UNKNOWN];

  // Information about a browser window's user activation state. See
  // https://html.spec.whatwg.org/multipage/interaction.html#the-useractivation-interface.
  message UserActivation {
    // Indicates whether a user has completed an interaction since page load.
    optional bool wasact = 1;

    // Indicates whether a user is currently interacting with the page.
    optional bool isact = 2;
  }

  // User activation information from the browser for the current request, if
  // the request is for a web page.
  optional UserActivation uact = 5;

  // The set of possible web navigation types that predicate a page load. Each
  // of these types may have different performance characteristics. For example,
  // users going back and forth might experience a faster site than users
  // performing navigation for the first time or submitting forms. See
  // https://w3c.github.io/navigation-timing/#dom-performancenavigationtiming-type.
  enum NavigationType {
    NAVIGATION_TYPE_UNKNOWN = 0;

    // Navigation started by clicking a link, entering the URL in the browser's
    // address bar, form submission, or initializing through a script operation
    // other than reload and back_forward.
    NAVIGATION_TYPE_NAVIGATE = 1;

    // Navigation is through the browser's reload operation, location.reload(),
    // or a Refresh pragma directive like
    // <meta http-equiv="refresh" content="300">.
    NAVIGATION_TYPE_RELOAD = 2;

    // Navigation is through the browser's history traversal operation.
    NAVIGATION_TYPE_BACK_FORWARD = 3;

    // Navigation is initiated by a prerender hint (deprecated). See
    // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/prerender.
    NAVIGATION_TYPE_PRERENDER = 4;
  }

  // The type of browser navigation that led to the current page. Unset for
  // non-web ad requests.
  optional NavigationType ntype = 6;

  // Indicates that the request is using semi-transparent branding,
  // which means only a truncated version of the request URL will
  // be provided. This decision is made by the publisher, see
  // https://support.google.com/admanager/answer/4584891#urls for context.
  optional bool is_semi_transparent_request = 3;

  // The domain of the partner (of the site owner) with ownership
  // of some portion of ad inventory on the site. The partner's ads.txt file
  // will be hosted here. More detail at
  // http://iabtechlab.com/wp-content/uploads/2021/03/ctv-app-ads-explainer-guide.pdf
  optional string inventorypartnerdomain = 4;
}

Requisitos dos anúncios HTML para AMP

// Ad Exchange extensions for the Imp object.
message ImpExt {
...
  // Possible requirement types for AMP ads.
  enum AmpAdRequirementType {
    // AMP ad requirements unknown.
    UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 1;
    // AMP ads are not allowed.
    AMP_AD_NOT_ALLOWED = 2;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are not early rendered.
    AMP_AD_ALLOWED_AND_NOT_EARLY_RENDERED = 3;
    // Either AMP ads or non-AMP ads are allowed;
    // AMP ads are early rendered.
    AMP_AD_ALLOWED_AND_EARLY_RENDERED = 4;
    // AMP ads are required.
    // Ads that are non-AMP may be rejected by the publisher.
    AMP_AD_REQUIRED = 5;
    // Exchange-specific values above 500.
  }
  optional AmpAdRequirementType ampad = 8
    [default = UNKNOWN_AMP_AD_REQUIREMENT_TYPE];
}

RTB no Authorized Buyers

página AMP

// Whether this is an AMP page or not.
enum AmpPage {
  // AMP page status unknown.
  UNKNOWN_AMP_PAGE = 0;

Requisitos dos anúncios HTML para AMP

// Possible requirement types for AMP ads.
enum AmpAdRequirementType {
  // AMP ad requirements unknown.
  UNKNOWN_AMP_AD_REQUIREMENT_TYPE = 0;

Resposta do lance RTB

OpenRTB

No OpenRTB 3.0 e no modelo comum de publicidade complementar, várias adições para oferecer compatibilidade com anúncios HTML para AMP foram incluídas nas especificações de rascunho mais recentes do IAB, incluindo as seguintes.

Lance Campo Attr Tipo Descrição
Solicitação Site.amp amp número inteiro O campo Site.amp indica se a página foi renderizada em AMP, omitido se for desconhecido:
0 = a página não é AMP
1 = a página foi criada com HTML para AMP
Solicitação ampformat rend número inteiro A especificação de formato AMP indica os requisitos e o comportamento de renderização dos anúncios HTML para AMP:
1 = os requisitos dos anúncios AMP são desconhecidos
2 = os anúncios AMP não são permitidos
3 = anúncios AMP ou não AMP são permitidos. Os anúncios AMP não são renderizados antecipadamente
4 = os anúncios AMP ou não AMP são permitidos, e os anúncios AMP são obrigatórios.
5 = os anúncios AMP são obrigatórios. Anúncios que não são AMP podem ser rejeitados pelo editor
500+ = valores específicos de troca. Eles precisam ser comunicados aos bidders com antecedência
Resposta display curl string Na resposta do lance, foi adicionado display.curl para enviar criativos por meio de um URL, incluindo a compatibilidade com anúncios HTML para AMP.
Esse é o URL em que a marcação de criativo será encontrada. Aplicável a tipos de criativos como: anúncios AMP, VAST, DAAST e nativos. Normalmente, apenas um adm ou curl é válido em um determinado anúncio.

RTB no Authorized Buyers

O campo BidResponse.Ad.amp_ad_url nas respostas de lance do Authorized Buyers aceita um URL que aponta para o conteúdo do anúncio HTML para AMP. O mesmo campo existe como uma extensão no objeto Bid na implementação do OpenRTB do Google.

// The URL to fetch an AMPHTML ad. Only one of the following should be set:
// html_snippet, video_url, amp_ad_url, native_ad.
optional string amp_ad_url = 23;

Verificação de HTML para AMP válido

Para que os anúncios HTML para AMP sejam renderizados antecipadamente, a troca precisa verificá-los e assiná-los, indicando que o anúncio foi escrito no formato do criativo <html amp4ads> amp4ads.

Os anúncios HTML para AMP válidos poderão ser renderizados antes pelas páginas AMP. Os anúncios não verificados como HTML para AMP válidos são renderizados na mesma velocidade que os outros tipos de HTML.

Somente anúncios HTML para AMP precisam ser retornados no amp_ad_url.

No futuro, se um editor exigir apenas anúncios HTML para AMP, os anúncios não assinados dessa forma não serão renderizados.

Com o Authorized Buyers, os bidders ainda vão ser cobrados se retornarem um anúncio que não seja HTML para AMP para um espaço de anúncio obrigatório para anúncios HTML para AMP.

Busca do lado do servidor

Para que os anúncios HTML para AMP sejam renderizados antecipadamente, o conteúdo do anúncio HTML para AMP precisa ser renderizado sem a necessidade de saltos adicionais do cliente. Isso foi projetado para evitar experiências do usuário ruins devido à latência do anúncio e a chamadas extras do lado do cliente.

Depois que um bidder vence o leilão, a troca faz uma solicitação de servidor para servidor para recuperar o conteúdo do anúncio HTML para AMP localizado no URL fornecido em amp_ad_url. Os servidores de criativos precisam responder e retornar conteúdo em até 300 ms.

O anúncio HTML para AMP retornado do servidor de criativos será injetado no adslot e, em seguida, renderizado. Um anúncio HTML para AMP válido não pode conter iframes ou outras tags <amp-ad>. Consulte as especificações de anúncios HTML para AMP para mais detalhes.

Somente recurso Beta: entre em contato com sua equipe de conta se precisar disso

Durante a recuperação de servidor para servidor do anúncio HTML para AMP (especificado em amp_ad_url), o Authorized Buyers pode transmitir o cabeçalho HTTP e o IP do navegador do usuário para o servidor de criativos. Isso garante que o servidor de criativos receba informações semelhantes às enviadas de uma busca padrão do lado do cliente. Em alguns casos, o endereço IP pode ser truncado para apenas os primeiros 3 bytes (IPv4) ou os primeiros 6 bytes (IPv6). Entre em contato com sua equipe de conta se precisar desse recurso. Veja um exemplo de cabeçalho HTTP:

URLs de rastreamento de impressões e macros de cliques

Os compradores de RTB geralmente incluem rastreadores de impressões como um campo estruturado na resposta do lance. Esse é Bid.burl, o "URL de aviso de faturamento" no OpenRTB 2.5.

Com o Authorized Buyers, isso é feito no lado do cliente. O amp-pixel aciona URLs de rastreamento quando o criativo é renderizado. O amp-analytics pode lidar com casos de uso de rastreamento mais avançados além da renderização.

Os anúncios HTML para AMP precisam ter uma macro de clique válida nesse HTML. Isso geralmente assume a forma de algo assim:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2my.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>
<a href=”https://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%”></a>

Os criativos geralmente incluem pixels de correspondência de cookie no código. Os anúncios HTML para AMP podem usar os componentes amp-pixel e amp-analytics para esse caso de uso. Se o caso de uso não puder ser acomodado usando amp-analytics ou amp-pixel, abra um problema do GitHub para discutir opções alternativas. Aceitamos novas extensões que podem ser usadas por várias empresas diferentes. Consulte as diretrizes detalhadas ou um guia técnico para criar uma nova extensão.

Exemplos de URLs de anúncios AMP para testes

Você pode usar a seguinte amostra de conteúdo do anúncio HTML para AMP nos testes:

Recursos

O Projeto AMP e o Google lançaram vários recursos para ajudar você a começar:

Como criar anúncios em AMP
Propostas específicas de RTB para o grupo do IAB / OpenRTB