Was ist Header Bidding?

Die Entwicklung der Header-Bidding-Technologie begann im Jahr 2015 und hat seitdem vielen Publishern geholfen, ihre Einnahmen um bis zu 40 % (und in einigen Fällen sogar auf 100 % oder mehr) zu steigern.

Was ist Header Bidding?

Header Bidding ist eine hochmoderne Technik, bei der Publisher ihr Anzeigeninventar vielen Ad Exchanges, auch Supply-Side-Plattformen (oder SSPs) genannt, gleichzeitig anbieten, bevor sie ihre Ad-Server aufrufen.

Hier sind die Schritte, die ein Publisher durchlaufen muss, damit diese Technologie seine Monetarisierung vorantreibt.

  • Bewerben Sie sich bei SSP-Partnern und erhalten Sie die Genehmigung.
  • Implementieren Sie Prebid.JS auf der Website.
  • Ad-Server konfigurieren.
  • Wählen Sie ein Consent-Management-System.
  • Testen und debuggen.

Bewerbung bei SSP-Partnern

Es gibt Hunderte von SSP-Partnern in der Liste, um sich zu bewerben, aber ich möchte die meiner Meinung nach beliebtesten erwähnen:

  • TripleLift.
  • Index-Austausch.
  • Amazon UAM/TAM.
  • Xandr (früher AppNexus).
  • Tees.
  • Pubmatisch.
  • Sovrn.
  • Verizon.
  • Magnit (früher Rubikon).
  • OpenX.
  • Sonobi.
  • Kaugummi.
  • Mitbenutzung.
  • Widerspenstig.

Man muss sein Online-Bewerbungsformular finden und den Verifizierungsprozess des Unternehmens durchlaufen. Im Fall von Xandr sieht die Kontaktseite beispielsweise so aus:

Screenshot von Xandr, Dezember 2022

Achten Sie auf die Mindestbestandsgröße, die erforderlich ist, um sich bewerben zu können.

Ja, das ist eine erstaunliche Höhe von 50 Millionen Anzeigenimpressionen pro Monat.

Möglicherweise benötigen Sie eine beeindruckende Website, um sich bei einigen Werbenetzwerken bewerben zu können. Wir nennen sie weitere Bieter, da sie in Echtzeit auf Inventar bieten.

Allerdings haben nicht alle SSPs so hohe Schwellenwerte für die Anwendung. Zum Beispiel erfordert Sharethrough nur 20 Millionen Anzeigenimpressionen.

Außerdem berücksichtigen sie auch die Qualität des Publikums, die Geolokalisierung des Verkehrs, wie viel Zeit die Benutzer auf der Website verbringen usw.

Es dauert in der Regel einige Wochen nach der Bewerbung, bis sie genehmigt und bei ihnen an Bord sind, daher kann es ein ziemlich zeitaufwändiger Prozess sein, der sogar Monate dauern kann, bis er abgeschlossen ist.

Wie funktioniert Prebid.js?

Kurz gesagt, hier ist, wie Prebid.js funktioniert.

Wenn ein Benutzer eine Webseite öffnet, wird eine Anzeigenanforderung an alle Bieter (SSP-Partner) gesendet.

Die Bieter antworten mit ihren CPM-Geboten – sagen wir 1 $ und 1,50 $ – und Prebid.js stellt eine Anfrage an den Anzeigenserver mit dem höchsten CPM-Targeting. In diesem Fall wären das 1,50 $.

Auf dem Ad-Server, in unserem Fall Google Ad Manager, geht die Anfrage ein und weiß, dass jemand 1,50 USD CPM für eine Anzeige bezahlt. Es führt eine weitere Auktion mit Google Adsense oder AdX durch.

Wenn Google einen höheren CPM anbietet, wird die Google-Anzeige geschaltet.

Wenn nicht, gewinnt unsere Anzeige mit 1,50 $ CPM und wird von unserem SSP-Partner geschaltet.

Header-Bidding-ArbeitsschemaScreenshot von Google Ad Manager, Dezember 2022

Der Trick dabei ist, dass Auktionen in Echtzeit stattfinden, was einen Kaufdruck auf Google AdX erzeugt, um den höchstmöglichen CPM zu zahlen.

Wenn Google AdX keine Konkurrenz hat, bietet es den niedrigstmöglichen CPM an, da es Inventar zum günstigsten Preis kaufen möchte.

Mit Header-Bidding können Bieter konkurrieren und die CPMs (und damit den Umsatz) in die Höhe treiben.

Es gibt zwei Möglichkeiten, Header Bidding zu implementieren:

  • Clientseitig: Wenn die Auktion über JavaScript im Browser läuft.
  • Serverseitig: Wenn die Auktion auf dem Server läuft.

Lassen Sie uns das clientseitige Header Bidding besprechen.

So implementieren Sie clientseitiges Header-Bidding

Um Header Bidding einzurichten, müssen wir Prebid.js auf unserer Website implementieren und unseren Google Ad Manager (oder Ad-Server) konfigurieren.

Implementieren Sie Prebid.js auf Ihrer Website

Prebid.js ist eine Header-Bidding-Plattform, die mehr als 200 Nachfragequellen integriert hat.

Sie müssen die SSP-Partner, mit denen Sie zusammenarbeiten, auf der Seite „Anpassen“ auswählen und die Bibliothek herunterladen, die für Ihre spezifische Konfiguration erstellt wurde.

Vergessen Sie nicht, Consent Management-Module auszuwählen, um die Datenschutzstandards von GDPR und GPP einzuhalten.

Nachfolgend finden Sie den Beispielcode aus der offiziellen Dokumentation.

<html>

    <head>        
        <script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
        <script async src="https://your-customized-prebid.js"></script>
        <script>
            var div_1_sizes = [
                [300, 250],
                [300, 600]
            ];
            var div_2_sizes = [
                [728, 90],
                [970, 250]
            ];
            var PREBID_TIMEOUT = 1000;
            var FAILSAFE_TIMEOUT = 3000;

            var adUnits = [
                
                    code: '/19968336/header-bid-tag-0',
                    mediaTypes: 
                        banner: 
                            sizes: div_1_sizes
                        
                    ,
                    bids: [
                        bidder: 'appnexus',
                        params: 
                            placementId: 13144370
                        
                    ,
                      
                      bidder: "conversant",
                       params: site_id:"122869",secure:1
                     
                   ]
                ,
                
                    code: '/19968336/header-bid-tag-1',
                    mediaTypes: 
                        banner: 
                            sizes: div_2_sizes
                        
                    ,
                    bids: [
                        bidder: 'appnexus',
                        params: 
                            placementId: 13144370
                        
                    ,
                     
                     bidder: "conversant",
                     params: site_id:"122869",secure:1
                    
                     ]
                
            ];
            
            var googletag = googletag || ;
            googletag.cmd = googletag.cmd || [];
            googletag.cmd.push(function() 
                googletag.pubads().disableInitialLoad();
            );

            var pbjs = pbjs || ;
            pbjs.que = pbjs.que || [];

            pbjs.que.push(function() 
                pbjs.addAdUnits(adUnits);
                pbjs.requestBids(
                    bidsBackHandler: initAdserver,
                    timeout: PREBID_TIMEOUT
                );
            );

            function initAdserver() 
                if (pbjs.initAdserverSet) return;
                pbjs.initAdserverSet = true;
                googletag.cmd.push(function() 
                    pbjs.que.push(function() 
                        pbjs.setTargetingForGPTAsync();
                        googletag.pubads().refresh();
                    );
                );
            
            // in case PBJS doesn't load
            setTimeout(function() 
                initAdserver();
            , FAILSAFE_TIMEOUT);

            googletag.cmd.push(function() 
                googletag.defineSlot('/19968336/header-bid-tag-0', div_1_sizes, 'div-1').addService(googletag.pubads());
                googletag.pubads().enableSingleRequest();
                googletag.enableServices();
            );
            googletag.cmd.push(function() 
                googletag.defineSlot('/19968336/header-bid-tag-1', div_2_sizes, 'div-2').addService(googletag.pubads());
                googletag.pubads().enableSingleRequest();
                googletag.enableServices();
            );

        </script>

    </head>

    <body>
        <h2>Basic Prebid.js Example</h2>
        <h5>Div-1</h5>
        <div id='div-1'>
            <script type="text/javascript">
                googletag.cmd.push(function() 
                    googletag.display('div-1');
                );

            </script>
        </div>

        <br>

        <h5>Div-2</h5>
        <div id='div-2'>
            <script type="text/javascript">
                googletag.cmd.push(function() 
                    googletag.display('div-2');
                );

            </script>
        </div>

    </body>

</html>

Lassen Sie uns den obigen Code aufschlüsseln.

  • Die ersten Zeilen laden alle erforderlichen JS-Dateien und unsere angepasste Prebid.JS-Datei.
  • Anzeigenflächen werden in der Array-Variablen adUnits definiert.
  • In den Adslot-Definitionen können Sie die Namen und IDs der SSP-Partner sehen, die Sie beim Onboarding erhalten, wenn sie diese erhalten.
  • googletag.pubads().disableInitialLoad(); wird aufgerufen, um das Senden von Anzeigenanfragen an Google Ad Manager zu deaktivieren, bis Prebid.js die Auktion beendet.
  • Die Funktion pbjs.requestBids ruft SSP-Partner auf und bestimmt den Gewinner.
  • Die Funktion initAdserver() wird aufgerufen, um eine Anzeigenanfrage an Google Ad Manager mit dem hb_pb-Schlüssel zu senden, der den gewinnenden CPM-Wert enthält, z. B. hb_pb=“1.5″. (Dieser Schritt ist mit der Einrichtung von Google Ad Manager im nächsten Schritt verbunden.)
  • Wenn Google Ad Manager die Anfrage mit dem erfolgreichen Gebot erhält, führt es eine eigene Auktion in Google AdX durch und sendet entweder die AdX-Anzeige mit einem höheren CPM oder die Anzeige der erfolgreichen SSP zurück.

Für Ihren speziellen Fall müssen Sie möglicherweise anders codieren und das Setup ändern, aber das Prinzip bleibt dasselbe.

Abgesehen davon möchte ich kurz darauf eingehen, wie Lazy Loading implementiert wird, da es etwas anders ist.

So implementieren Sie Lazy Loading

Das Google-Tag für Publisher hat ein Lazy-Loading-Framework, das bei Header-Bidding nicht funktioniert.

Dies liegt daran, dass Sie eine Auktion durchführen und Schlüsselwerte bestimmen und festlegen müssen, bevor Sie eine Anfrage an den Anzeigenserver senden.

Aus diesem Grund würde ich empfehlen, die Intersection Observer API zu verwenden, um zu bestimmen, wann die Anzeige im HTML-

-Tag geladen werden soll, wenn sie kurz davor steht, in den Darstellungsbereich einzutreten.

options = 
root: null, // relative to document viewport
rootMargin: '1500px', // margin around root. Values are similar to css property. Unitless values not allowed
threshold: 0 // visible amount of item shown in relation to root
;

your_observer = new IntersectionObserver( observer_handler, options );
your_observer.observe( goog_adslots[i] );

In der call back-Funktion von Observer_handler können Sie die Prebid-Auktion ausführen und den Ad-Server aufrufen.

function observer_handler( entries, observer ) 

dynamicAdUnit =[
code: 'your_html_div_id',
mediaTypes: 
banner: 
sizes: [728,90]

,
bids: [ bidder: 'appnexus', params:  placementId: 13144370  ,  bidder: "conversant", params: site_id:"122869",secure:1  ]
];

pbjs.addAdUnits(dynamicAdUnit);

slot = window.googletag.defineSlot('/1055389/header-bid-tag-0', [728,90], 'your_html_div_id' ).addService(googletag.pubads());

lazySlotPrebid(slot, 'your_html_div_id')



function lazySlotPrebid(slot, div_id) 

pbjs.que.push(function() 
pbjs.request bids(
timeout: PREBID_TIMEOUT,
adUnitCodes: [div_id],
bidsBackHandler: function() 
pbjs.setTargetingForGPTAsync([div_id]);
googletag.pubads().refresh(slot);

);
);

 
// endd of initDynamicSlotPrebid

Lassen Sie uns nun mit der Einrichtung des Ad-Servers mit Google Ad Manager beginnen.

So richten Sie GAM für Header Bidding ein

Ad-Server müssen über Dutzende von Werbebuchungen mit Preispriorität mit dem Schlüssel hb_pb verfügen, die auf alle möglichen CPM-Werte abzielen, z. B. hb_pb=0,04, hb_pb=0,03 usw.

hb_pb Schlüsselwertehb_pb Schlüsselwert-Targeting

Dies ist der entscheidende Punkt, der die Header Bidding Engine zum Funktionieren bringt.

  • Die Auktion läuft im Browser beim Laden der Seite.
  • Der erfolgreiche SSP-Partner wird mit einem Schlüsselwert, der auf hb_pb = 2,62 abzielt, an GAM gesendet.
  • Da der Auftrag denselben CPM-Wert hat, geht GAM davon aus, dass es ein Gebot von 2,62 $ gibt.
  • GAM führt eine AdX-Auktion durch und muss mehr als 2,62 $ zahlen, um das Gebot zu gewinnen und eine Google-Anzeige zu schalten.

Wie ich oben erwähnt habe, müssten Sie Werbebuchungen in GAM mit einer bestimmten Granularität erstellen, sagen wir 0,01 – und für den CPM-Bereich von 0 bis 20 US-Dollar müssten Sie 2.000 Werbebuchungen erstellen, was manuell nicht möglich ist.

Dazu müssten Sie die GAM-API verwenden.

Leider gibt es keine soliden Lösungen, die Sie einfach herunterladen und mit einem Klick ausführen können.

Es ist eine ziemlich komplexe Aufgabe, aber dank der Mitwirkenden, die API-Tools erstellt haben (auch wenn sie sie nicht aktiv unterstützen), können wir sie immer noch ein wenig modifizieren und zum Laufen bringen.

Lassen Sie uns in die Einrichtung von Google Ad Manager eintauchen und Folgendes verstehen:

Schritt 1: Aktivieren Sie den API-Zugriff

Im Google Anzeigenmanager Global > Allgemein stellen Sie sicher, dass der API-Zugriff aktiviert ist.

Klicke auf das Dienstkonto hinzufügen Schaltfläche und erstellen Sie einen Benutzer mit dem Beispielnamen „GAM API USER“ und der E-Mail-Adresse „[email protected]“ mit Administratorrechten.

Allgemeine GAM-EinstellungenScreenshot von Google Ad Manager, Dezember 2022

Schritt 2: Erstellen Sie ein neues Projekt

Navigieren Sie zur Anmeldeseite der Google API-Konsole.

Wählen Sie in der Projekt-Dropdown-Liste aus Erstellen Sie ein neues Projektgeben Sie einen Namen für das Projekt ein und bearbeiten Sie optional die bereitgestellte Projekt-ID.

Klicken Schaffen.

Auf der Referenzen Seite, auswählen Anmeldeinformationen erstellendann auswählen Dienstkontoschlüssel.

Wählen Neues Dienstkontound wählen Sie aus JSON.

Klicken Schaffen um eine Datei herunterzuladen, die einen privaten Schlüssel enthält.

Anmeldeseite der Google API-KonsoleScreenshot von der Anmeldeseite der Google API-Konsole, Dezember 2022
Details zum DienstkontoScreenshot von der Anmeldeseite der Google API-Konsole, Dezember 2022
Geben Sie die Dienstkontodetails ein, die Sie oben erstellt haben.

Weisen Sie die Rolle „Eigentümer“ zu und erstellen Sie die OAuth2-Anmeldeinformationen für das Dienstkonto.

Klicken Sie dann auf den erstellten Benutzer, erstellen Sie einen JSON-Schlüssel und laden Sie ihn herunter.

JSON-Schlüssel des DienstkontosScreenshot von der Anmeldeseite der Google API-Konsole, Dezember 2022

Schritt 3: Projekt herunterladen

Laden Sie die ZIP-Datei des Projekts herunter und entpacken Sie sie im Verzeichnis (alternativ können Sie das Repository mit dem Git-Befehlstool klonen).

Installieren Sie Composer für Ihr Betriebssystem, um das Projekt zu erstellen.

Schritt 4: Ändern Sie Ihre PHP.INI

Ändern Sie Ihre php.ini-Datei (zu finden unter /xampp/php/php.ini ) und aktivieren Sie „extension=soap“, indem Sie „;“ entfernen. vor und setze „soap.wsdl_cache_ttl=0“ und starte Apache über das Control Panel von XAMPP neu.

Schritt 5: Erstellen Sie Unterordner und erstellen Sie das Projekt

Sobald Sie alles eingerichtet und entpackt haben, öffnen Sie die Datei composer.json und ändern Sie „googleads/googleads-php-lib“: „^44.0.0“, um die neueste Version „googleads/googleads-php-lib“ zu verwenden: „^59.0 .0″.

Suchen Sie nach der aktuellsten Version in dem Moment, in dem Sie dies durchführen.

Suchen und ersetzen Sie im /app/-Ordner des Projekts „v201911“ durch „v202202“, da dieses Git-Projekt seit 2019 nicht mehr aktualisiert wurde, um den neuesten Versionspfad der Bibliotheken zu verwenden.

Öffnen Sie die Befehlszeile Ihres PCs und wechseln Sie in das Verzeichnis, in dem Sie die Dateien entpackt haben (mit dem Befehl cd oder mit der rechten Maustaste in den Ordner „Git bash here“, wenn Sie Git installiert haben), und führen Sie Composer Update im PC-Terminal aus oder Git-Terminal.

Es erstellt Unterordner und erstellt das Projekt.

Schritt 6: Richten Sie Ihre Google Ad Manager-Anmeldeinformationen ein

Verschieben Sie die heruntergeladene JSON-Schlüsseldatei „gam-api-54545-0c04qd8fcb.json“ in den Stammordner des von Ihnen erstellten Projekts.

Laden Sie als Nächstes die Datei adsapi_php.ini herunter und richten Sie Ihre Google Ad Manager-Anmeldeinformationen darin ein.

networkCode = "899899"
applicationName = "My GAM APP"
jsonKeyFilePath = "D:\xampp\htdocs\dfp-prebid-lineitems\gam-api-54545-0c04qd8fcb.json"
scopes = "https://www.googleapis.com/auth/dfp"
impersonatedEmail = "[email protected]"

jsonKeyFilePath ist der absolute Verzeichnispfad zur JSON-Schlüsseldatei im Ordnerstamm.

Schritt 7: Legen Sie den Inhalt der Datei fest

Navigieren Sie schließlich zur Datei /script/tests/ConnexionTest.php und legen Sie den Inhalt der Datei wie folgt fest:

putenv('HOME='.dirname(__DIR__)."/../");
require __DIR__.'/../../vendor/autoload.php';

$traffickerId = (new \App\AdManager\UserManager())->getUserId();

if (is_numeric($traffickerId)) 
echo "\n====Connexion OK====\n\n";
 else 
echo "\n===Connexion KO====\n\n";

Testen Sie in Ihrem Terminal (oder der Git-Bash-Konsole) die Verbindung, indem Sie den Befehl ausführen (wenn Sie sich im Ordner /script/tests/ befinden).

php ConnexionTest.php

Sie sollten die Meldung „====Verbindung OK====“ sehen.

Schritt 8: Konfigurieren Sie die Parameter

Navigieren Sie in Ihrem Projekt zur Datei /script/tests/ConnexionTest.php und öffnen Sie diese.

Kopieren Sie den folgenden Code, fügen Sie ihn in diese Datei ein und konfigurieren Sie die Parameter in den Arrays $entry und $buckets gemäß Ihren Anforderungen.

putenv('HOME='.dirname(__DIR__)."/../");
require __DIR__.'/../../vendor/autoload.php';

use App\Scripts\HeaderBiddingScript;

$bucket_range = array();
$Your_Advertiser_Name="Sample_Advertiser";
$buckets =
["buckets" =>[
['precision' => 2, 'min' => 0, 'max' => 4.00, 'increment' => 0.01],
['precision' => 2, 'min' => 4.01, 'max' => 8.00, 'increment' => 0.05],
]
];

foreach ( $buckets["buckets"] as $k => $bucket )

$request_bucket = array( 'buckets' => array( $bucket ) );

$order_name="Your_Order_name ".$bucket['min'].'-'.$bucket['max'];
// echo $order_name.'<br/><br/>';


$entry = [
'priceGranularity' => $request_bucket, // can be 'low', 'med', 'high', 'auto','dense', 'test'
'currency' => 'USD',
//'sizes' => [ [1,1] ,[160, 600], [250, 250], [300, 250], [300, 600], [320, 50], [320, 100], [300, 100], [336, 280], [728, 90], [970, 90], [970, 250]],
'sizes' => [ [250, 250] ],
'orderPrefix' => $Your_Advertiser_Name, //prebid advertiserName
'orderName' => $order_name
];
$script = new HeaderBiddingScript();
$script->createGlobalAdUnits($entry);


Optional können Sie auch ‘geoTargetingList’ => “dz, pk, ke, pt” oder benutzerdefiniertes Schlüsselwert-Targeting customTargeting’ => angeben [‘amp_pages’ => yes’] wenn Sie möchten, dass Ihre Header-Gebote nur funktionieren, wenn der benutzerdefinierte Schlüsselwert festgelegt ist.

Führen Sie den folgenden Befehl aus und es beginnt mit der Erstellung von Werbebuchungen gemäß den von Ihnen angegebenen Bucket-Einstellungen.

php Verbindungstest.php

Es gibt ein Tool mit Python, das ähnlich verwendet wird; Sie können es auch versuchen.

Debuggen

Zum Debuggen gibt es ein paar Browser-Add-Ons, mit denen Sie sehen können, ob die Auktion fehlerfrei läuft.

Öffnen Sie alternativ Ihre Webseiten-URL mit dem Parameter „/?pbjs_debug=true“ am Ende der URL und sehen Sie sich die Meldungen der Konsolenprotokolle an.

Sie müssen sicherstellen, dass hb_pb-Schlüsselwerte an Google Ad Manager übergeben werden. Verwenden Sie „/?google_console=1“ am Ende der URL, um die GAM-Konsole zu öffnen, und klicken Sie bei jedem Anzeigenblock auf „Auslieferungsdiagnose“.

Sie sollten sehen, dass hb_pb-Werte festgelegt und an den Ad-Server übergeben werden.

GAM liefert DiagnosenScreenshot von der Anmeldeseite der Google API-Konsole, Dezember 2022

Wählen Sie ein Consent Management System

Die Privatsphäre der Benutzer ist einer der wichtigsten Faktoren, und Sie möchten sicherstellen, dass Sie sowohl GDPR als auch GPP einhalten.

Die detaillierten Anweisungen zum Einrichten eines Einwilligungsverwaltungssystems in Ihrem Wrapper finden Sie hier.

Es gibt viele Anbieter, die den neuesten Standards des IAB entsprechen, und hier sind einige der beliebtesten:

Fazit

Es mag Sie überraschen, dass das Einrichten von Header-Bidding so viele Schritte umfasst, aber die Implementierung lohnt sich wirklich. Es kann Ihren Umsatz leicht um +30 % oder mehr steigern, indem es Verkaufsdruck auf Google Ads erzeugt.

Dieser Leitfaden richtet sich an technisch versierte Benutzer – aber wenn Sie Fragen und Probleme haben, gibt es einen Adops-Slack-Kanal, den Sie abonnieren und Fragen an die Community stellen können.

Ich hoffe, dass es Ihnen nach dem Lesen dieses Artikels leichter fallen wird, Header Bidding einzurichten und die Monetarisierung Ihrer Website zu verbessern.

Mehr Ressourcen:


Ausgewähltes Bild: Suchmaschinenjournal


source site

Leave a Reply