Headerbidding
Keywords:
Headerbidding, header bidding, rta
Deutsch Datum:
02.07.2018
verfügbare Sprachen:

Was ist Headerbidding?

Headerbidding ist einfach gesagt eine technisch stark reduzierte Form von RealTime Bidding. Während bei "echtem" RealTime Bidding zwei AdServer miteinander verbunden werden um so Informationen (Anfragen und Gebote) auszutauschen, geschieht beim Headerbidding der Datenaustausch im Browser des Nutzers. Dies hat gewisse Vor- und Nachteile.

Vorteile

  • Einfache Implementierung (JavaScript-Code auf der Seite einbauen anstatt Serverseitige Integration)
  • Auf Publisherseite keine besondere Technik notwendig
  • Zugriff auf die Nutzercookies für alle Partner (kein Usermatching notwendig)

Nachteile

  • Seitenladezeit bzw. Zeitpunkt bis zu dem die Werbung geladen wird wird teils deutlich verlängert (bis zu 1 Sek, während serverseitiges bei rund 120ms liegt)
  • Header Bidding Kampagnen überbieten eigene AdServer-Kampagnen nur indirekt, ein gegenseitiges Überbieten ist nicht möglich.
  • Geringerer Funktionumfang für Bieter
  • Keine Second-Price Auktion möglich
  • In den meisten Fällen werden Gebotspreise nur in Gruppen an den AdServer übermittelt (z.B. 0,10 EUR, 0,20 EUR, 0,50 EUR usw. ohne Preise dazwischen; betrifft nicht AdSpirit)

Umsetzung

Für die Umsetzung von Headerbidding hat sich als quasi-Standard das System von prebid.org bzw das prebid.js Framework (Github: https://github.com/prebid/Prebid.js) etabliert. Die folgenden Beschreibungen beziehen sich daher auf den Einsatz von AdSpirit in Kombination mit diesem System.

Headerbidding im Einkauf

Wenn Sie Traffic von einer Webseite kaufen möchten, die den prebid.js oder einen kompatiblen Code verwendet um Headerbidding durchzuführen, muss die Webseite dazu zunächst den AdSpirit Adapter von prebid.js integrieren. Dies geschieht durch Erzeugen einer neuen prebid.js Datei via node.js bei der der AdSpirit Adapter mit eingebunden ist. Genauere Details zum Erzeugen einer neuen prebid.js finden Sie auf der GitHub Seite des Projekts. Der AdSpirit Adapater befindet sich im prebid.js master Branch unter modules/adspiritBidAdapter.js.

Innerhalb von AdSpirit legen Sie dazu zunächst einen Publisher und Webseite normal an. Erstellen Sie außerdem eine Werbefläche im gewünschten Format. In den Einstellungen der Werbefläche stellen Sie bitte in der Registerkarte "RealTime Bidding" die Einstellung "RTB aktiviert" auf "Ja". Anschließend stellen Sie bitte die "RTB-Preisübermittlung" auf "an (Typ: Klartext, ...)". Die restlichen Einstellungen in dieser Registerkarte sind optional und können beim Standardwert bleiben.

Ist prebid.js korrekt auf der Webseite eingebunden, muss dem Headerbidding System mitgeteilt werden, dass es bei dem AdSpirit AdServer anfragen soll. Hierzu wird dem pbjs-Objekt ein bid-Objekt mitgegeben das so aussieht:


var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function()
{
 var units = [];
 units[units.length] = { code: "myplacement", sizes: [[160,600]], bids:
 [

  { bidder: "criteo", params: { zoneId: "12345" } } ,
  { bidder: "adspirit",  params: { placementId: "6789", host: "meinefirma.adspirit.de" } } ,
  ...
 ]};
 pbjs.addAdUnits(units);
 ...
});

Bitte ersetzen Sie dabei die "PlacementId" (hier 6789) mit der ID der Werbefläche in AdSpirit und den "Host" (hier meinefirma.adspirit.de) mit dem Hostnamen Ihres AdServers.

Headerbidding im Verkauf

Wenn Sie Traffic Ihrer Webseite via Headerbidding an einen Advertiser verkaufen möchten, müssen Sie dazu ebenfalls den Code von prebid.js in Ihre Webseite integrieren und dabei den passenden Adapter (passend zum AdServer des Advertisers) integrieren. Erzeugen Sie im prebid.js Code ein Placement (siehe Beispiel oben) und geben Sie diesem einen Namen (code: "myplacement" im Beispiel oben). Als bids führen sie die abzufragenden Partner auf und hinterlegen die passenden Parameter.

Als zweites erstellen Sie in AdSpirit unter Einstellungen > Pretargeting einen neuen Pretargeting-Eintrag. Der Typ des Eintrags sollte "HTML-Code" sein, die Option "Ausliefern auch ohne Targeting" sollte auf "Nein" stehen, und die Einstellung "nur einmal pro Seite laden" sollte ebenfalls auf "Nein" stehen. Als Codes tragen Sie bitte wie folgt ein:

HTML-Code:

<script type="text/javascript">
 // ADSPIRIT + PREBID.JS - SYNC-CODE
 window["pbjsid%placementid%"] = "myplacement"; //enter slot code here
 //don't change below
 if(window.pbjs && window.pbjs.getHighestCpmBids)
 {
  var bids = window.pbjs.getHighestCpmBids(window["pbjsid%placementid%"]);
  if(bids.length>0 && bids[0].cpm && bids[0].cpm>0)
  {
   window.asm_pretargeting("&bidcpm="+bids[0].cpm+"&bidder="+bids[0].bidder+"&adid="+bids[0].adId+"&w="+bids[0].width+"&h="+bids[0].height);
  }
  else
  {
   window.asm_pretargeting("");
  }
 }
 else
 {
  window.asm_pretargeting("");
 }
</script>

 

async. HTML-Code:

<script type="text/javascript">
// ADSPIRIT + PREBID.JS - ASYNC-CODE
 window["pbjsid%placementid%"] = "myplacement"; //enter slot code here
 //don't change below
 window["cbYcall%placementid%"] = false;
 window["cbY%placementid%"] = function ()
 {
  if(window["cbYcall%placementid%"]){return;}
  window["cbYcall%placementid%"] = true;
  var bids = window.pbjs.getHighestCpmBids(window["pbjsid%placementid%"]);
  if(bids.length>0 && bids[0].cpm>0)
  {
   window.asm_async_data.addPretargeting("%placementid%","&bidcpm="+bids[0].cpm+"&bidder="+bids[0].bidder+"&adid="+bids[0].adId+"&w="+bids[0].width+"&h="+bids[0].height);
  }
  else
  {
   window.asm_async_data.addPretargeting("%placementid%","");
  }
 }
 if(window.pbjs && window.pbjs.getHighestCpmBids && window.pbjs.getHighestCpmBids(window["pbjsid%placementid%"]).length>0)
 {
  window["cbY%placementid%"]();
 }
 else if(window.pbjs && window.pbjs.onEvent)
 {
  window["cbX%placementid%"] = function ()
  {
   window.pbjs.offEvent('bidWon', window["cbX%placementid%"], window["pbjsid%placementid%"]);
   window.pbjs.offEvent('auctionEnd', window["cbZ%placementid%"]);
   window["cbY%placementid%"]();
  }
  window.pbjs.onEvent("bidWon", window["cbX%placementid%"], window["pbjsid%placementid%"]);
  window.pbjs.onEvent("auctionEnd", window["cbX%placementid%"]);
  window.setTimeout('window["cbX%placementid%"]',500);
 }
 else
 {
  window.asm_async_data.addPretargeting("%placementid%","");
 }
</script>

Ersetzen Sie in beiden Codes bitte den Namen der Platzierung ("myplacement") durch den Namen der im prebid.js Code angegeben ist.

Wichtig: Bitte erzeugen Sie einen Pretargeting Eintrag pro prebid.js Name/Platzierung und verwenden Sie auf einer Webseite mit mehreren (gleichen) Werbeflächen keinen Namen doppelt. Pro Werbeformat/Werbefläche muss insofern also ein Eintrag existieren.

Hinweis: Die besten Ergebnisse erzielen Sie, wenn die AdSpirit Werbeflächen als asynchrones JavaScript eingebunden sind. Die Verwendung der IFrame-Codes ist nicht möglich.

Als nächstes erzeugen Sie einen normalen Advertiser und eine normale Kampagne. Bei der Kampagne stellen Sie bitte Abrechnung > TKP auf "Ja" und tragen als Preis/TKP bitte jeweils 0,00 für Advertiser und Webseite ein. Außerdem wählen Sie bitte unter Targeting das Parameter-Targeting aus und klicken dort auf den Link "Targeting konfigurieren". Im Konfigurationsfenster wählen Sie als Quelle das Pretargeting aus, welches Sie zuvor angelegt haben. Als Parametername geben Sie bitte "bidcpm" und als Wert "größer" - "0" ein. Fügen Sie anschließend eine neue Zeile hinzu, wählen Sie erneut den Pretargetingeintrag aus und geben Sie als Parametername für den zweiten Eintrag nun "bidder" und Wert "gleich" - "criteo" (bzw. Name des Adapters des Advertisers) an. Speichern Sie die Einstellungen und schließen Sie das Parametertargeting-Fenster. Als Targeting-Code wird Ihnen innerhalb der Kampagne in etwa folgender Text angezeigt: "4-1:bidcpm=>0&4-1:bidder==criteo". Speichern Sie die Kampagne.

Als letztes erstellen Sie bitte innerhalb der Kampagne ein HTML-Werbemittel mit passender Größe und hinterlegen als Code folgenden HTML-Code:

<ins id="ins%uniqueid%"></ins>
<script type="text/javascript">
 var pretargeting_adid = "%pretargeting_123_adid%"; //replace 123 with ID of pretargeting
 var pretargeting_w = "%pretargeting_123_w%"; //replace 123 with ID of pretargeting
 var pretargeting_h = "%pretargeting_123_h%"; //replace 123 with ID of pretargeting
 if(window.pbjs)
 {
  var f = document.createElement('iframe');
  f.height = pretargeting_h;
  f.width = pretargeting_w;
  f.border = '0px';
  f.hspace = '0';
  f.vspace = '0';
  f.marginWidth = '0';
  f.marginHeight = '0';
  f.style.border = '0';
  f.scrolling = 'no';
  f.frameBorder = '0';
  f.src = 'about:blank';
  document.getElementById("ins%uniqueid%").appendChild(f);
  window.pbjs.renderAd(f.contentDocument,pretargeting_adid);
 }
</script>

Ersetzen Sie dabei bitte die drei Vorkommen von "123" durch die ID des Pretargeting-Eintrags.

Wiederholen Sie die Schritte für jedes Werbemittel und jede Kampagne (bzw eine Kampagne pro unterschiedlichem Adapter in prebid.js). Dies ermöglicht es Ihnen die Gebotspreise jeder Kampagne im AdServer zu unterscheiden. Benötigen Sie diese detailierten Informationen nicht, reicht es aus, im Parameter-Targeting nur die Zeile "bidcpm größer 0" zu verwerden - die Zeile "bidder gleich xyz" kann dann entfernt werden. Alle Gebote aller Bieter laufen dann in einer Kampagne im AdServer auf und werden nicht nach Bieter unterschieden.