Monitoring and Reporting
This section goes more in depth on internal and external data sources for processing Adhese data.
Measure
What does Adhese record?
Actions and parameters divide the measurement process of Adhese into two categories:
- An action is 'something that happens';
- The parameters are 'all the information that is collected together with the action.'
Actions
Adhese measures actions. Actions are behaviours that a visitor can perform, such as visiting a web page, reading an article, viewing or clicking on a banner ad, watching a video, playing a game, submitting a form, purchasing a product, etc. Each time a user performs a pre-defined action, the client sends a request to the Adhese servers.
The most basic action of the ad-serving process is impressions. This means that a specific format (such as a leaderboard) was loaded onto a particular location (for example, the homepage or an article page) of a publication (for instance, a newspaper's website). It depends on the chosen implementation method when the counting of an impression takes place. Please refer to www.github.com/adhese/sdk for a complete description of the different implementation methods.
User actions: beyond impressions and clicks
Adhese allows for tracking of user actions beyond impressions and clicks. Additionally, Adhese enables tracking of multiple actions simultaneously.
The standard syntax for an action tracking call enables the insertion of three elements:
- A campaign identifier, for example, Volvo2015
- An identifier, like "info request" or "request for demo"
- A free value, such as the value of a purchase
This tracking feature requires a custom setup of your account. Contact Support if you wish to implement this feature.
Let's look at some examples of user actions.
- Within the ad environment If Adhese serves a splash ad or interstitial, it is possible to track the visitor's behaviour. Does the visitor click outside the ad or the close button inside the ad to continue to the underlying webpage?
- Outside the ad environment Adhese can also track events that occur outside the online advertisement environment. For instance, if a user clicks on your ad, Adhese can track their visit and determine if they made a purchase as a result of your advertising. This allows for more accurate attribution models, as many events can contribute to an online purchase or lead.
Viewability
Adhese has a tracker that can measure viewability if (legacy) document.write is used (see Parameters for templates and Advar templates).
If you use JSON, your logic can be implemented to measure viewability and then report it to Adhese via the viewableImpressionCounter parameter, which is available in the JSON response (see List of JSON response structure object fields).
Parameters
A set of parameters accompanies every action or request. Parameters offer a greater insight into who is doing what and where and how these actions occur. The parameters consist of predefined data, such as screen size, browser and operating system, URL and referrer, or custom user data, such as age and geographic location.
Custom parameters can be implemented based on your specific needs and possibilities. Refer to the Request Target Parameters appendix for a list of readily available parameters. The available target parameters and their prefixes are determined by the configuration of your Adhese account. Adhese will use this information to build your inventory and provide insights to match campaigns with your audience and vice versa.
Remember that the unique identification of visitors and the storage of personal and other data are subject to national, European and international legislation. It is the exclusive responsibility of the publisher to comply with the law and adequately inform the user of his rights. Adhese can help and advise publishers here. More on user privacy is available in the GDPR section of the documentation.
Impression measurement
Impression measurement is an essential aspect of ad serving. Understanding how and when Adhese counts an impression is important. There are two scenarios:
- An ad is requested and visualised.
- An ad is requested and could be visualised, depending on rules like minimal screen size, device rotation, viewport, etc. The impression is counted later (i.e., deferred impression).
The second scenario results in two types of requests:
- An ad request
- A track request
An ad request is a request that returns an ad, the first scenario. The second scenario executes a tracking request after the initial ad request. Therefore, it acts as an impression request.
If you are using track requests to measure impressions, these numbers will build up your inventory. The actual inventory is reported and used in forecasting.
The above explanation about impression measurement applies to any tag (See Implementation of the Adhese ad tags).
The Campaign actions report per position reports the number of requests, tracks, and other events.
Third-party discrepancies may arise when the publisher's report does not match the advertiser's report. Adhese counts an impression the moment the ad request is made, while the advertiser may count an impression when the ad is delivered to the user. For more information about third-party discrepancies, refer to Troubleshooting.
Retention period of data
Historical summarised data, such as daily unique visitors, is available anytime and can be archived at the client's request. The data can be accessed through reporting, data mining, our API, or on-demand as a custom report.
However, there are some restrictions that you need to take into account:
- Legislation: certain information cannot be saved or must be deleted after a short period. The unique identification of users and personal and other data storage is subject to national, European and international legislation. Adhese can assist and advise publishers in the matter. However, it is the exclusive responsibility of the publisher to comply with the law and adequately inform users of their rights.
- Common sense: the amount of collected data can be huge for some (combinations of) parameters. You should consider whether storing such a large amount of data is necessary or desirable. The answer to this question will differ from client to client. Where there is a lot of data, it is often recommended that only aggregated data is maintained.
Predictions are usually based on historical data. The type of data saved, the frequency of saving (whether daily, hourly, or otherwise), and the duration of storage depend on the client's needs and strategy.
BigQuery Reporting & Dataset Information
Introduction
Adhese Gateway (GW) logs all actions taken while receiving a request from a device and returning a response milliseconds later. This data is made available to the Gateway users through BigQuery (BQ) tables that contain results per day and are updated at midnight.
The BQ tables are subject to change. Therefore, if you implement against them, you must be prepared to configure changes to the column structure. We will communicate planned changes prior to any deployments. However, we will not wait for every implementer to update.
Access your Adhese data
As a customer, you can access your data in three different ways, each suitable for a specific use case. These are briefly described below.
- Through a predefined Google Data Studio report
Standard Data Studio templates are available to connect to your data source. This gives you immediate insight without any additional development.
- Access to the Data Studio data source(s)
This allows you to create your own custom dashboards, which are useful for reporting on specific cases not covered by the standard dashboards.
- Direct access to the BigQuery table(s)
The more advanced option is to query the dataset(s) or export them directly. This requires some technical knowledge.
If you would like to access your data in any of these ways, please contact Adhese support and provide a (Google) email address with which we can share access.
Through a Google Data Studio template
At Adhese, we offer a variety of predefined dashboards that provide immediate insights into your data. An example is shown below.
Access to the Data Studio data source(s)
Another option is to get direct access to the underlying data sources. This method makes it possible to create any custom report or dashboard. When working with the data, it is important to understand the different columns and how to interpret them.
Direct access to the BigQuery table(s)
This is the more advanced option for your data team. It allows them to query the data sources directly or export the data to their own data solution.
The following steps are required to access the BigQuery source:
- Contact Adhese support and provide a Google email address connected to a Google Cloud account. We'll give the necessary permissions (bigQuery dataViewer, see role details here).
- Once access is provided, you can query the different tables.
Ensure you are within your own Google Cloud project; otherwise, errors will be returned.
Ensure you use the correct data location; by default, this is europe-west2.
The table names are structured as follows: adhese-cloud.${customer}.${table_name}
Where ${customer}
is your Adhese account name, and ${table_name}
is the table you are trying to query. See details about the different tables below.
You can find your Adhese account name in the URL used to log in to the Adhese platform (e.g. https://demo.adhese.org/)
A test query could look as follows:
If this works, you should be able to use any BigQuery functionality to process your data further.
If you still have any questions, please don't hesitate to contact us at Adhese support.
Overview of Collected Data
Two sets of data are collected during the lifetime of a single GW request/response: the Media set and the Market set.
The Media set contains all the information about the request, including which device it came from, what content is associated with it, which user is associated with it (if any), and so on. The exact attributes of the media set are different for each GW account, depending on the available data and the context that an account has configured.
The Market set contains the communication log between GW and the active markets for a given GW account. Market standards determine the attributes available, although some attributes are not available in all markets. The Market set contains all incoming bid responses from all active markets with advertiser and price information.
Table descriptions
slots_extended
adhese-cloud.${customer}.slots_extended
This table contains the Market data set. Each row contains the number of bid responses per day, aggregated in latency buckets of 10ms.
Show table
Field name | Type | Mode | Description |
date | DATE | NULLABLE | The date on which these bid requests were received. |
slot | RECORD | NULLABLE | |
slot. id | INTEGER | NULLABLE | The ID of the slot the bid request was made from. |
slot. code | STRING | NULLABLE | The code of the slot the bid request was made from. |
publication | RECORD | NULLABLE | |
publication. name | STRING | NULLABLE | The publication name in the Adhese dbase. |
publication. url | STRING | NULLABLE | The publication URL in the Adhese dbase. |
format | RECORD | NULLABLE | |
format. name | STRING | NULLABLE | The format name in the Adhese database. |
format. width | INTEGER | NULLABLE | The format width in pixels for this Bid Response. |
format. height | INTEGER | NULLABLE | The format height in pixels for this Bid Response. |
publisher | RECORD | NULLABLE | |
publisher. name | STRING | NULLABLE | The name of this location in the Adhese dbase. |
market | RECORD | NULLABLE | |
market. name | STRING | NULLABLE | The market instance name as known in the Adhese configuration. |
market. currency | STRING | NULLABLE | The currency this market uses for bid responses. |
bid | RECORD | NULLABLE | |
bid. count | INTEGER | NULLABLE | The number of bid responses for this record. |
bid. amount | FLOAT | NULLABLE | The total value of the bid responses for this record in market.currency. |
bid. winning | RECORD | NULLABLE | |
bid.winning. count | INTEGER | NULLABLE | The number of winning bid responses for this record. |
bid.winning. amount | FLOAT | NULLABLE | The total value of the winning bid responses for this record in market.currency. |
bid. tracked | RECORD | NULLABLE | |
bid.tracked. count | INTEGER | NULLABLE | The number of rendered bid responses for this record. (aka paid impressions) |
bid.tracked. amount | FLOAT | NULLABLE | The total value of the rendered bid responses for this record in market.currency. |
seatId | STRING | NULLABLE | The seat ID as known by this market. |
domain | STRING | NULLABLE | The "OpenRTB domain" field, containing the domain of the advertising party or brand for this Bid Response. |
dealId | STRING | NULLABLE | The deal ID as known by this market. |
crId | STRING | NULLABLE | The creative ID as known by this market. |
discountRate | FLOAT | NULLABLE | The value of the multiplier applied to this bid response. |
exchangeRate | FLOAT | NULLABLE | The value of the exchange rate at the moment of the bid between market.currency and EUR. |
latency | INTEGER | NULLABLE | The value of the latency bucket for these bids. |
deviceType | STRING | NULLABLE | The label of the device that generated the bid request (phone, desktop, tablet, tv). |
consent | BOOLEAN | NULLABLE | Indication of consent for the bid requests to this market. |
reduced_access_log
adhese-cloud.${customer}.reduced_access_log
This table contains direct ad server and campaign data. It can be joined with the metadata tables below.
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
creative_id | INTEGER | NULLABLE | |
slot_id | INTEGER | NULLABLE | |
booking_id | INTEGER | NULLABLE | |
campaign_id | INTEGER | NULLABLE | |
impression_count | INTEGER | NULLABLE | Each time an ad is requested, one impression is counted. This does not correspond to an IAB paid impression. |
track_count | INTEGER | NULLABLE | When an ad is rendered on a page, 1 track is counted. This corresponds to an IAB paid impression. |
click_count | INTEGER | NULLABLE | Each time a user clicks on an ad, 1 click is counted |
actions | STRING | REPEATED | A viewable impression is counted when a ‘Adhese_IABview’ or 'mrc_viewable' action is present. |
Metadata tables
Updated daily with metadata for primary keys in the reduced_access_log table.
meta_slots
adhese-cloud.${customer}.meta_slots
Extra information regarding slots (= positions) can be found here
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
id | INTEGER | NULLABLE | |
name | STRING | NULLABLE | |
url | STRING | NULLABLE | |
position_type | STRING | NULLABLE | position type as defined when creating a slot |
template_file | STRING | NULLABLE | |
location_id | INTEGER | NULLABLE | |
location_name | STRING | NULLABLE | |
location_url | STRING | NULLABLE | |
location_code | STRING | NULLABLE | |
publication_id | INTEGER | NULLABLE | |
publication_name | STRING | NULLABLE | |
publication_url | STRING | NULLABLE | |
publisher_id | INTEGER | NULLABLE | |
publisher_name | STRING | NULLABLE |
meta_format
adhese-cloud.${customer}.meta_format
Extra information regarding formats can be found here
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
id | INTEGER | NULLABLE | |
name | STRING | NULLABLE | |
width | INTEGER | NULLABLE | |
height | INTEGER | NULLABLE | |
code_tag | STRING | NULLABLE | Code used to request the format |
code_book | STRING | NULLABLE | Code used to link formats (subformat setup) |
code_import | STRING | NULLABLE |
meta_creatives
adhese-cloud.${customer}.meta_creatives
Extra information regarding creatives can be found here
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
id | INTEGER | NULLABLE | |
name | STRING | NULLABLE | |
type | STRING | NULLABLE | |
format_name | STRING | NULLABLE | |
format_width | INTEGER | NULLABLE | |
format_height | INTEGER | NULLABLE | |
creative_width | INTEGER | NULLABLE | |
creative_height | INTEGER | NULLABLE | |
creative_url | STRING | NULLABLE | |
size_kb | INTEGER | NULLABLE | |
advar_fields | RECORD | REPEATED | advar template fields |
advar_file | STRING | NULLABLE |
meta_booking
adhese-cloud.${customer}.meta_booking
Extra information regarding bookings can be found here
Show table
meta_booking | Description | ||
---|---|---|---|
Field name | Type | Mode | |
date | DAT | NULLABLE | |
id | INTEGER | NULLABLE | |
campaign_id | INTEGER | NULLABLE | |
slot_id | INTEGER | NULLABLE | |
start | TIMESTAMP | NULLABLE | |
end | TIMESTAMP | NULLABLE | |
delivery_method | STRING | NULLABLE | |
to_reach_unit | STRING | NULLABLE | e.g. impressions/clicks |
to_reach_volume | INTEGER | NULLABLE | amount of units to reach |
priority | STRING | NULLABLE | |
capping | STRING | NULLABLE | |
delivery_limit | STRING | NULLABLE | |
pricing_type | STRING | NULLABLE | |
unit_price | FLOAT | NULLABLE | |
external_key | STRING | NULLABLE | |
comment | STRING | NULLABLE | |
daily_start | INTEGER | NULLABLE | |
daily_end | INTEGER | NULLABLE | |
exclusive | BOOLEAN | NULLABLE | |
compete_with_rtb | BOOLEAN | NULLABLE | |
together_with | INTEGER | REPEATED | |
active | RECORD | NULLABLE | |
active.monday | BOOLEAN | NULLABLE | |
active.tuesday | BOOLEAN | NULLABLE | |
active.wednesday | BOOLEAN | NULLABLE | |
active.thursday | BOOLEAN | NULLABLE | |
active.friday | BOOLEAN | NULLABLE | |
active.saturday | BOOLEAN | NULLABLE | |
active.sunday | BOOLEAN | NULLABLE |
meta_campaign
adhese-cloud.${customer}.meta_campaign
Extra information regarding campaigns can be found here
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
id | INTEGER | NULLABLE | |
name | STRING | NULLABLE | |
priority | STRING | NULLABLE | |
created_by | STRING | NULLABLE | |
to_reach_unit | STRING | NULLABLE | e.g. impressions/clicks |
to_reach_volume | INTEGER | NULLABLE | amount of units to reach |
advertiser_company | STRING | NULLABLE | |
invoice_company | STRING | NULLABLE | |
media_company | STRING | NULLABLE | |
intermediary_company | STRING | NULLABLE | |
client_contacts | STRING | NULLABLE | |
internal_id | STRING | NULLABLE | |
external_id | STRING | NULLABLE | |
account_managers | STRING | NULLABLE | |
public_comment | STRING | NULLABLE | |
internal_comment | STRING | NULLABLE |
meta_booking_targets
adhese-cloud.${customer}.meta_booking_targets
Contains for each booking the target group, target label and target code that is used in that booking.
Extra information regarding targeting can be found here
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
booking_id | INTEGER | NULLABLE | |
type | STRING | NULLABLE | |
name | STRING | NULLABLE | |
code | STRING | NULLABLE |
meta_dooh_player
adhese-cloud.${customer}.meta_dooh_player
Show table
Field name | Type | Mode | Description |
---|---|---|---|
id | INTEGER | NULLABLE | |
date | DATE | NULLABLE | The date on which these bid requests were received. |
store_city | STRING | NULLABLE | |
store_id | STRING | NULLABLE | |
store_formula | STRING | NULLABLE | Type of store. |
store_channel | STRING | NULLABLE | |
store_category | STRING | NULLABLE | |
store_latlong | STRING | NULLABLE | Latitudinal and longitudinal coordinates of the store. |
store_adress | STRING | NULLABLE | |
store_postal_code | STRING | NULLABLE |
Other
error_log
adhese-cloud.${customer}.error_log
This is a generic table in which errors are stored. For instance, it can be employed to identify unmatched slot requests.
Show table
Field name | Type | Mode | Description |
---|---|---|---|
date | DATE | NULLABLE | |
error_type | STRING | NULLABLE | |
message | STRING | NULLABLE | |
count | INTEGER | NULLABLE |