The Prebid Analytics API provides a way to get analytics data from
Prebid.js and send it to the analytics provider of your choice, such as Google Analytics. Because it’s an open source API, you can write an adapter to send analytics data to any provider you like. Integrating with the Prebid Analytics API has the following benefits:
Before we jump into looking at code, let’s look at the high-level architecture. As shown in the diagram below,
Prebid.js calls into an analytics adapter. The analytics adapter is the only part of the code that must be stored in the
The analytics adapter listens to events and may call out directly to the analytics backend, or it may call out to an analytics library that integrates with the analytics server.
For instructions on integrating an analytics provider, see the next section.
You can integrate an analytics provider using the steps outlined below. In the example we’ll use Google Analytics for simplicity, but you can integrate any analytics provider you like as long as you have an adapter and any necessary libraries.
If you want to see how to write your own analytics adapters, look in the repo under modules.
Summary of the steps involved:
Some analytics adapters may require the publisher to load a library in the page. If this is the case for your analytics adapter, consider providing an example for users.
For example, to use Google Analytics, publishers must load the Google Analytics library:
(See the Google docs for up-to-date instructions.)
A call to
pbjs.enableAnalytics(analyticsAdapters) is needed to initialize the module(s). It should be called once on the page, after any analytics libraries have been loaded. Note that more than one analytics adapter can be loaded, though this isn’t necessarily recommended.
moduleswith the name of the bidder suffixed with ‘AnalyticsAdapter’, e.g.,
Example markdown file:
Create a JS file under
modules with the name of the bidder suffixed with ‘AnalyticsAdapter’, e.g.,
Create an analytics adapter to listen for Prebid events and call the analytics library or server. See the existing *AnalyticsAdapter.js files in the repo under modules.
There are two types of analytics adapters. The example here focuses on the ‘endpoint’ type. See AnalyticsAdapter.js for more info on the ‘bundle’ type.
In order to get access to the configuration passed in from the page, the analytics adapter needs to specify an enableAnalytics() function, but it should also call the base class function to set up the events.
A basic prototype analytics adapter:
Analytics adapter best practices:
To add the new analyticsAdapter into a prebid package, use a command like this: