The impressions export service delivers impression data in JSON format to an organization's S3 bucket.
Please read this article in it's entirety as it contains important information related to schema and queries at the end. Click here for information about the metrics export service.
Setup
Please reach out to our support team via Live Chat or by emailing support-megaphone@spotify.com to setup this service (typically takes 1-2 weeks). Data will only be pushed from the date of setup forward and does not include backfill. We recommend setting this up prior to going live on Megaphone.
Note that the metrics export service is included with the impressions export setup.
File delivery
Once per hour, Megaphone will write a file using the following naming convention to the target S3 bucket, for the current day:
impression-day-2019-01-22.json.gz
The file will be overwritten throughout the day.
The file contains the impressions for the day (Zulu time zone) thus far.
From 0:00Z to 04:30Z, both the previous day's and current day's files will be written once per hour. By 04:30Z each day, the previous day's file is final and will not be overwritten again.
Data changes throughout the day
As the day proceeds and the impression file is overwritten:
Impressions will not be removed
Impressions will be added
Fields within existing impressions may change, with their IDs remaining constant
Schema
Note that the following fields are specific to the impressions export only and are not seen in the metrics export:
order_id, bytes_sent, byte_offset, byte_position, byte_type.
Full schema is as follows:
{ "properties": {
"metric_id": {
"type": "string"
},
"network_id": {
"type": "string"
},
"episode_id": {
"type": "string"
},
"normalized_user_agent": {
"type": "string"
},
"organization_id": {
"type": "string"
},
"created_at": {
"type": "string"
},
"byte_offset": {
"type": "number"
},
"podcast_id": {
"type": "string"
},
"position": {
"type": "number"
},
"type": {
"type": "string"
},
"bytes_sent": {
"type": "number"
},
"seconds_downloaded": {
"type": "number"
},
"order_id": {
"type": "string"
},
"order_downloaded": {
"type": "boolean"
},
"blacklisted_ip": {
"type": "boolean"
},
"blacklisted_ua": {
"type": "boolean"
},
"advertisement_id": {
"type": "string"
Calculating Impressions
For an impression to be reflected in Megaphone reporting, it must have:
(order_downloaded IS TRUE OR (order_downloaded IS NULL AND bytes_sent >= byte_offset))
AND blacklisted_ip IS NOT TRUE
AND blacklisted_ua IS NOT TRUE
Therefore, if you have dashboards that utilize exports that you want to match Megaphone reporting, you will need to add that constraint to your queries (order_downloaded = 'true' OR order_downloaded = '' AND bytes_sent >= byte_offset and blacklisted_ip = false and blacklisted_ua = false)
For any questions related to this service or to get your org setup, please reach out via Megaphone's Live Chat.