Annonces AMP HTML via RTB

Cette page explique comment commencer à utiliser les annonces AMP HTML avec le système d'enchères en temps réel. Si vous souhaitez en savoir plus sur les annonces et les outils AMP HTML pour commencer, consultez les ressources ci-dessous.

Approche générale

Demande d'enchère RTB

La demande d'enchère RTB indique si elle provient d'une page AMP, ainsi que les exigences concernant les annonces AMP HTML.

OpenRTB

page 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;
}

Exigences relatives aux annonces AMP HTML

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

Authorized Buyers RTB

page AMP

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

Exigences relatives aux annonces AMP HTML

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

Réponse à l'enchère RTB

OpenRTB

Dans OpenRTB 3.0 et le modèle commun publicitaire qui l'accompagne, plusieurs ajouts pour assurer la compatibilité avec les annonces AMP HTML sont inclus dans les spécifications de version préliminaire les plus récentes de l'IAB, y compris les suivantes.

Enchère Champ Attr Type Description
Requête Site.amp amp integer Le champ Site.amp indique si la page s'affiche au format AMP (il est omis si la page est inconnue) :
0 = la page n'est pas une page AMP
1 = la page est conçue au format AMP HTML
Requête ampformat rend integer La spécification du format AMP indique les exigences et le comportement d'affichage des annonces AMP HTML:
1 = Les exigences relatives aux annonces AMP ne sont pas connues
2 = Les annonces AMP ne sont pas autorisées
3 = Les annonces AMP ou non-AMP sont autorisées ; les annonces AMP ne sont pas diffusées en mode anticipé
4 = Les annonces AMP ou non AMP sont autorisées, et les annonces AMP sont diffusées de manière anticipée
5 = Les annonces AMP sont obligatoires. Les annonces standards peuvent être refusées par l'éditeur.
500+ = valeurs spécifiques aux places de marché ; doivent être communiquées aux enchérisseurs a priori
Réponse display curl chaîne Dans la réponse à l'enchère, display.curl a été ajouté pour pouvoir envoyer des créations via une URL, et est compatible avec les annonces AMP HTML.
Il s'agit de l'URL correspondant au balisage de la création. Applicable aux types de créations tels que "Annonces AMP", "VAST", "DAAST" et "Native". Généralement, une seule des propriétés adm ou curl est valide dans une annonce donnée.

Authorized Buyers RTB

Le champ BidResponse.Ad.amp_ad_url des réponses aux enchères Authorized Buyers accepte une URL pointant vers du contenu d'annonce AMP HTML. Le même champ existe en tant qu'extension dans l'objet Bid dans l'implémentation OpenRTB de 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;

Validation d'une page AMP HTML valide

Pour que les annonces AMP HTML s'affichent de manière anticipée, la place de marché doit les valider et les signer, indiquant qu'elles sont écrites au format de création amp4ads <html amp4ads>.

Les annonces AMP HTML valides seront autorisées à s'afficher tôt par les pages AMP. Les annonces dont la validité n'est pas validée au format AMP HTML s'affichent au même rythme que les annonces qui ne sont pas de type AMP HTML.

Seules les annonces AMP HTML doivent être renvoyées dans le amp_ad_url.

À l'avenir, si un éditeur n'exige que des annonces AMP HTML, les annonces qui ne sont pas signées AMP HTML ne seront pas affichées.

Avec Authorized Buyers, les enchérisseurs continuent d'être facturés s'ils renvoient une annonce autre que AMP HTML dans un espace publicitaire requis par une annonce AMP HTML.

Récupération côté serveur

Pour que les annonces AMP HTML s'affichent de manière anticipée, le contenu des annonces AMP HTML doit être affiché sans nécessiter de sauts supplémentaires de la part du client. Elle est conçue pour éviter les mauvaises expériences utilisateur en raison de la latence des annonces et d'appels supplémentaires côté client.

Lorsqu'un enchérisseur remporte l'enchère, la place de marché envoie une requête de serveur à serveur pour récupérer le contenu de l'annonce AMP HTML situé à l'URL fournie dans amp_ad_url. Les serveurs de créations doivent répondre et renvoyer du contenu dans un délai de 300 ms.

L'annonce AMP HTML renvoyée par le serveur de créations est injectée dans l'espace publicitaire, puis affichée. Notez qu'une annonce AMP HTML valide ne peut pas contenir d'iFrames ni d'autres tags <amp-ad>. Pour en savoir plus, consultez les spécifications relatives aux annonces AMP HTML.

Fonctionnalité bêta uniquement: contactez l'équipe chargée de votre compte si vous en avez besoin.

Lors de la récupération de serveur à serveur de l'annonce AMP HTML (spécifiée dans amp_ad_url), Authorized Buyers peut transmettre l'en-tête HTTP et l'adresse IP du navigateur de l'utilisateur au serveur de créations. Cela garantit que le serveur de créations reçoit des informations semblables à celles envoyées par une récupération côté client standard. Dans certains cas, l'adresse IP peut être tronquée aux trois premiers octets (IPv4) ou aux six premiers octets (IPv6). Si vous avez besoin de cette fonctionnalité, contactez l'équipe chargée de votre compte. Voici un exemple d'en-tête HTTP:

URL de suivi des impressions et macros de clic

Les acheteurs RTB incluent souvent des outils de suivi des impressions sous forme de champ structuré dans la réponse à l'enchère (il s'agit de Bid.burl, l'URL de l'avis de facturation dans OpenRTB 2.5).

Avec Authorized Buyers, celles-ci sont déclenchées côté client. amp-pixel déclenche les URL de suivi lors de l'affichage de la création. amp-analytics peut gérer des cas d'utilisation de suivi plus avancés que l'affichage.

Les annonces AMP HTML doivent contenir une macro de clic valide dans le code AMP HTML. Elle se présente généralement sous la forme suivante :

<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>

Les créations incluent souvent des pixels de mise en correspondance des cookies dans leur code. Les annonces AMP HTML peuvent utiliser les composants amp-pixel et amp-analytics pour ce cas d'utilisation. Si amp-analytics ou amp-pixel ne permet pas de gérer votre cas d'utilisation, signalez un problème GitHub pour discuter des autres options possibles. Nous accueillons les nouvelles extensions à grande échelle par un certain nombre d'entreprises. Consultez les consignes détaillées ou un guide technique pour créer une extension.

Exemples d'URL d'annonces AMP à tester

Vous pouvez utiliser l'exemple de contenu d'annonce AMP HTML suivant à des fins de test:

Ressources

Le projet AMP et Google ont publié un certain nombre de ressources pour vous aider à démarrer:

Créer des annonces sur des pages AMP
Propositions spécifiques aux enchères en temps réel pour l'IAB / le groupe OpenRTB