AMP Implementierung

Bitte implementieren Sie sowohl den AMP-Sensor für die consentfreie wie auch für die consentpflichtige Messung! Beide AMP-Sensoren müssen parallel verbaut sein!

1 Consentfreie Messung (Zensusmessung)

Sollten Sie die consentpflichtige Messung über den INFOnline Measurement Manager aktivieren, ist es zwingend erforderlich das Standalone-Script in Google AMP eingebunden zu lassen.

1.1 Voraussetzungen

  • Relay-Client-Container (gehostet von der INFOnline oder einem selbst)
  • Registrierter Domain-Service-Name als CNAME (gehostet von der INFOnline), AAA(A) (selbst gehostet) DNS-Eintrag
  • Angebotskennung (von der ÖWA bereitgestellt)

1.2 Vorbereitungen

AMP-optimierte Webinhalte werden über <amp-analytcis />-Tags gemessen. Dieses CustomElement und seine Implementierung müssen zusammen mit anderen AMP-bezogenen Bibliotheken vom AMP CDN heruntergeladen werden, indem diese Integration genutzt wird:

<head>
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <script async custom-element="amp-analytics" src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"></script>
</head>
kopiert!

Beide Skripte sollten im <head> der AMP-optimierten Webseite platziert werden.

Die Service-Plattform (Relay-Client) stellt dem Publisher auch den <iframe> für die Kommunikation zwischen AMP und dem Zensus AMP-Sensor zur Verfügung. Der Publisher kann den Site-spezifischen CNAME oder AAA(A) DNS-Eintrag verwenden, um auf diesen <iframe> zuzugreifen. Das Subdomain-Kriterium, das Google in diesem Fall vorgibt, ist damit erfüllt.

Beispiel:

  • AMP-Webseite -> https://www.example.com/start.html
  • <iframe>-Webseite -> https://data-1a79a4d60d.example.com/iomb/latest/html/amp.html

Es wird dringend empfohlen, den <iframe> von der Serviceplattform zu verwenden, da so durch regelmäßige Updates eine stabile Funktionalität garantiert wird.

1.3 Messung von AMP-Webseiten

Um AMP-Webseiten zu messen, müssen Sie den Tag <amp-analytics /> mit einer entsprechenden Konfiguration implementieren:

<amp-analytics type="infonline_base">
  <script type="application/json">
  {
    "vars": {
      "st": "example",
      "cp": "foo",
      "dn": "data-1a79a4d60d.example.com",
      "cn": "at"
    },
      "requests": {
        "url": "https://data-1a79a4d60d.example.com/iomb/latest/html/amp.html"
    }
  }
  </script>
</amp-analytics>
kopiert!

Bitte stellen Sie sicher, dass Sie den <amp-analytics />-Tag mit dem richtigen <… type=“infonline_base“ />-Typ ausfüllen.

Die folgenden Parameter können über den <amp-analytics />-Tag übergeben werden:

  • stAngebotskennung (sitename)
    • Typ: String
    • Obligatorisch: Ja
    • Die Ihrem Digital-Angebot zugeteilte Angebotskennung; diese wird von der ÖWA erstellt und einmalig vergeben; die Kennung ist maximal 15 Zeichen lang
  • dndomainServiceName
    • Typ: String
    • Muster: INFOnline CNAME convention: /^(data-)([a-f0-9]{10})\.([a-zA-Z0-9][a-zA-Z0-9-_]{0,61})(?:\.([a-z]{2,62}))?\.([a-z]{2,62})$/
    • Obligatorisch: Ja
    • Domain Service Name (CNAME oder AAA(A) Host)
  • cn – Länderkennung
    • Immer „cn“:“at“ für Österreich
  • cp – Kategorienpfad
    • Typ: String
    • Standard: Leercode_nichtzuordnungsfaehig
    • Länge: 256
    • Obligatorisch: Ja
    • Der Kategorienpfad setzt sich folgendermaßen zusammen: [SKTG]/[PAGEID]
      Beispiel: RedCont/Sport/Tennis/USOpen
      [SKTG]:
      Die Seitenkontingente sind laut dem ÖWA Kategoriensystem anzugeben. Diese dürfen nicht verändert oder ergänzt werden.
      Jedes ÖWA Mitglied ist dazu verpflichtet alle drei Ebenen (Seitenkontingent, Subkontingent und Profilingkontingent) zu verwenden.
      Beispiele: „RedCont/Sport/Tennis“, „Community/ForenUndChats/Chat“
      [PAGEID]
      Es besteht die Möglichkeit, an dieser Stelle individuelle Kategorien für erweiterte Auswertungen anzufügen (getrennt durch „/“), aber die maximale Länge von 150 Zeichen für den Kategorienpfad darf dabei nicht überschritten werden.
      Beispiel: RedCont/Nachrichten/LokaleNachrichten/Wien
  • co – Kommentar
    • Typ: String
    • Länge: 256
    • Obligatorisch: Nein
    • Optionaler Kommentar
  • – – Requests
    • Typ: String
    • Muster: [domainServiceName]/iomb/latest/html/amp.html
    • Obligatorisch: Ja
    • Einbinden des notwendigen iFrames (auf der Service Plattform gehostet)

Das Folgende gilt für Parameter:
– Nicht gesetzt und der Parameter ist optional -> Standardwert wird verwendet!
– Nicht gesetzt und der Parameter ist obligatorisch -> Verarbeitung wird abgebrochen und eine Meldung auf der Browser-Konsole im Debug-Modus protokolliert!
– Jeder Parameter wird vor der Verarbeitung abgefragt!

1.4 Messung von AMP-Stories

Die Messung von AMP-Stories erfolgt auf die gleiche Weise wie die Messung von AMP-Webseiten, außer dass Sie die entsprechenden AMP-spezifischen Trigger konfigurieren müssen:

<amp-analytics type="infonline_base">
  <script type="application/json">
    {
      "vars": {
        "st": "example",
        "cp": "foo",
        "dn": "data-1a79a4d60d.example.com",
        "cn": "at"
    },
    "requests": {
      "url": "https://data-1a79a4d60d.example.com/iomb/latest/html/amp.html"
    },
    "triggers": {
      "storyPageVisible": {
        "on": "story-page-visible",
        "request": "pageview"
      },
    }
  }
  </script>
</amp-analytics>
kopiert!

2 Consentpflichtige Messung

Sollten Sie die consentpflichtige Messung über den INFOnline Measurement Manager aktivieren, ist es zwingend erforderlich das Standalone-Script in Google AMP eingebunden zu lassen.

2.1 Voraussetzungen

  • Angebotskennung von der Österreichischen Webanalyse bereitgestellt
  • Subdomain für den INFOnline AMP Iframe (Warum?)
  • TCF 2.0 und AMP-konforme CMP von zertifizierten Anbietern

2.2 Vorbereitungen

Laden von AMP-bezogenen Bibliotheken

AMP-optimierte Webinhalte werden über <amp-analytcis />-Tags gemessen. Dieses CustomElement und seine Implementierung müssen zusammen mit anderen AMP-bezogenen Bibliotheken wie der v0-Laufzeitumgebung und dem <amp-consent/>-Element aus dem AMP CDN heruntergeladen werden, indem diese Integration verwendet wird:

<head>
  <script async src="https://cdn.ampproject.org/v0.js"></script>
  <script
    async
    custom-element="amp-analytics"
    src="https://cdn.ampproject.org/v0/amp-analytics-0.1.js"
  ></script>
  <script
    async
    custom-element="amp-consent"
    src="https://cdn.ampproject.org/v0/amp-consent-0.1.js"
  ></script>
</head>
kopiert!

Beide Skripte sollten in den <head> der AMP-optimierten Website eingefügt werden.

Einbindung einer TCF 2.0-konformen CMP

Für die Integration von TCF 2.0 benötigt der Publisher das CustomElement <amp-consent> und muss es nach den Vorgaben des CMP-Herstellers implementieren (hier ein Beispiel mit Consent Manager):

<amp-consent id="ConsentManager" layout="nodisplay" type="ConsentManager">
  <script type="application/json">
    {
      "postPromptUI": "postPromptUI",
      "clientConfig": {
        "id": "...Your CMP-ID...",
        "params": ""
      }
    }
  </script>
  <div id="postPromptUI">
    <button on="tap:ConsentManager.prompt()" role="button">
      Manage privacy settings
    </button>
  </div>
</amp-consent>
kopiert!

Der Publisher kann die Sperrung von <amp-analytics />-Elementen und anderen datenschutzsensiblen Integrationen wie <amp-ad /> über ein Meta-Tag steuern:

<meta name="amp-consent-blocking" content="amp-analytics" />

kopiert!

Der <meta>-Tag sollte im <head> der AMP-optimierten Website platziert werden.

Um Komponenten zu blockieren, muss der Publisher entweder das Attribut data-block-on-consent zur AMP-Komponente hinzufügen oder den Meta-Tag amp-consent-blocking mit der Liste der zu blockierenden Erweiterungen hinzufügen. Wenn der Publisher das type-Attribut für die CMP-Integration verwendet, muss er auch das amp-consent-blocking-Meta-Tag einfügen. Dadurch wird sichergestellt, dass buildCallback der Komponente erst dann aufgerufen wird, wenn die Zustimmung akzeptiert wurde oder wenn die Zustimmung für den Benutzer aufgrund des Wertes consentRequired nicht erforderlich ist. Dies bedeutet, dass alle Verhaltensweisen des Elements (z. B. das Senden von Analytics-Pings für <amp-analytics> oder das Laden einer <amp-ad>) verzögert werden, bis die entsprechende Zustimmungsinstanz akzeptiert wird.

Hosting des INFOnline AMP-iframe

Der INFOnline AMP iframe, der auf einer Subdomain der HTTP-Origin oder eTLD+1 der AMP-Website gehostet werden sollte, hat folgenden Code:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>INFOnline Measurement pseudonymous google amp iframe</title>
  <script
    src="//script.ioam.de/sensor/latest/bootstrap/stub.js"
    type="text/javascript"
  ></script>
  <script
    src="//script.ioam.de/sensor/latest/bootstrap/amp.js"
    type="text/javascript"
  ></script>
</head>
<body>
<script
  src="//script.ioam.de/sensor/latest/standalone/amp/es5/bundle.js"
  type="text/javascript"
></script>
</body>
</html>
kopiert!

Der Publisher kann die Site-spezifische Subdomain verwenden, um auf diesen <iframe> zuzugreifen. Das Subdomain-Kriterium, das Google in diesem Fall vorgibt, ist somit erfüllt.

Beispiel:

  • AMP web page -> https://www.example.com/start.html
  • <iframe> web page ->https://iframe.example.com/amp.html

Um Probleme mit der URL-Whitelist (Localliste) der digitalen Seite zu vermeiden, ist es wichtig, dass die kanonische URL oder ihre entsprechend optimierte Version (z. B. mit Wildcard-Notation) Teil der URL-Whitelist sein muss.

2.3 Messung von AMP-Webseiten

Um AMP-Webseiten zu messen, müssen Sie das <amp-analytics /> Tag mit einer entsprechenden Konfiguration implementieren:

<amp-analytics data-block-on-consent type="infonline">
  <script type="application/json">
    {
      "vars": {
        "st": "example",
        "cp": "foo",
        "co": "bar",
        "cn": "at"
      },
      "requests": {
        "url": "https://iframe.example.com/amp.html"
      }
    }
  </script>
</amp-analytics>
kopiert!

Bitte stellen Sie sicher, dass Sie den <amp-analytics />-Tag mit dem richtigen <… type=“infonline“ />-Typ ausfüllen.

AMP unterstützt (noch) nicht die Sperrung bestimmter Anbieter durch Verwendung des IAB-Zustimmungsstrings. Dies bedeutet, dass der Publisher (derzeit) nur die allgemeine Sperrung/Freigabe für AMP verwenden kann und nicht die spezifische Sperrung nach Anbieter. Um die  consentpflichtige ÖWA Messung auf der AMP-Website des Publishers zu blockieren, wenn der Nutzer nicht zugestimmt hat, muss er das Attribut data-block-on-consent zum amp-analytics-Element hinzufügen (siehe oben).
kopiert!

Die folgenden Parameter können über den <amp-analytics />-Tag übergeben werden:

  • stAngebotskennung (sitename)
    • Typ: String
    • Obligatorisch: Ja
    • Die Ihrem Digital-Angebot zugeteilte Angebotskennung; diese wird von der ÖWA erstellt und einmalig vergeben; die Kennung ist maximal 15 Zeichen lang
  • cn – Länderkennung
    • Immer „cn“:“at“ für Österreich
  • cp – Kategorienpfad
    • Typ: String
    • Standard: Leercode_nichtzuordnungsfaehig
    • Länge: 256
    • Obligatorisch: Ja
    • Der Kategorienpfad setzt sich folgendermaßen zusammen: [SKTG]/[PAGEID]
      Beispiel: RedCont/Sport/Tennis/USOpen
      [SKTG]:
      Die Seitenkontingente sind laut dem ÖWA Kategoriensystem anzugeben. Diese dürfen nicht verändert oder ergänzt werden.
      Jedes ÖWA Mitglied ist dazu verpflichtet alle drei Ebenen (Seitenkontingent, Subkontingent und Profilingkontingent) zu verwenden.
      Beispiele: „RedCont/Sport/Tennis“, „Community/ForenUndChats/Chat“
      [PAGEID]
      Es besteht die Möglichkeit, an dieser Stelle individuelle Kategorien für erweiterte Auswertungen anzufügen (getrennt durch „/“), aber die maximale Länge von 150 Zeichen für den Kategorienpfad darf dabei nicht überschritten werden.
      Beispiel: RedCont/Nachrichten/LokaleNachrichten/Wien
  • co – Kommentar
    • Typ: String
    • Länge: 256
    • Obligatorisch: Nein
    • Optionaler Kommentar

Das Folgende gilt für die Parameter:

  • Nicht gesetzt und der Parameter ist optional -> Standardwert wird verwendet!
  • Nicht gesetzt und der Parameter ist obligatorisch -> Verarbeitung wird abgebrochen und eine Meldung auf der Browser-Konsole im Debug-Modus protokolliert!
  • Jeder Parameter wird vor der Verarbeitung abgefragt!

2.4 Messung von AMP-Stories

Die Messung von AMP-Stories erfolgt auf die gleiche Weise wie die Messung von AMP-Webseiten (Page View), nur dass Sie die entsprechenden AMP-spezifischen Trigger konfigurieren müssen:

<amp-analytics data-block-on-consent type="infonline">
  <script type="application/json">
    {
      "vars": {
        "st": "example",
        "cp": "foo",
        "co": "bar",
        "cn": "at"
      },
      "requests": {
        "url": "https://iframe.example.com/amp.html"
      }
      "triggers": {
        "storyPageVisible": {
          "on": "story-page-visible",
          "request": "pageview"
        },
      }
    }
  </script>
</amp-analytics>
kopiert!