Skip to main content

Delivery & Impressions Export V2

This article provides background and instructions for how to use the updated impressions and delivery export launched July 2025.

K
Written by Kara Burns
Updated over 2 weeks ago

What is the export service and what is its purpose

The export service provides granular performance data across both consumption and impression data that delivers reporting in a JSON format to an organization’s S3 bucket.

You may only use and share this data in accordance with your agreement with Spotify for use of the Megaphone platform (including the applicable DPA). To the extent you share it with your measurement partner, you will ensure that such measurement partner: (a) uses such data for the sole purpose of providing measurement and attribution reporting to you; and (b) does not, directly or indirectly, sell, share, or process for purposes of targeted advertising, any such data (the terms "sell", "share" and "targeted advertising" shall have the meaning set forth in applicable privacy laws, such as the CCPA).

How to setup the export service

Please reach out to our support team via Live Chat to set up 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 both the delivery and impressions export files will be sent once your bucket is set up.

How it works

Once the S3 bucket is setup, you will receive two files on an hourly basis through the day:

The files will be overwritten throughout the day and contain the impressions/delivery for the day (UTC timezone) thus far. By 11am UTC (7AM EST) each day, the previous day's file is final and will not be overwritten again. To confirm whether a specific day’s file has been completely finalized, check for the existence of a file with this name convention: “_finalized_<metric_type>_<partition_date>_<timestamp>”

Schema of Both Files

File One: Impressions Export

Field

Description

SAI or DAI

Example

impression_type

The advertising technology used to deliver the impression

Both

"sai” / “dai"

impression_status

The status of an impression that is either delivered or available

Both

"delivered" / "available"

metric_id

The unique Megaphone identifier of the person’s listening session for the DAI impression

DAI Only

"p468c92e-7d1e-11ef-ac4d-8xz211bb6d14”

organization_id

The unique Megaphone identifier of an organization

Both

"b366c92e-6e0e-7ref-ac7d-8xz262bb6d19”"

network_id

The unique Megaphone identifier of a network

Both

"dcdbb4fc-1a43-11eb-84ae-67a893070760"

podcast_id

The unique Megaphone identifier of a podcast

Both

"42c9a7c0-ca68-11ed-94a6-27f47d63ee42"

episode_id

The unique Megaphone identifier of an episode

Both

"9781f646-9645-11ef-93b9-2b900958dc65"

advertisement_id

The unique Megaphone identifier for the advertisement

DAI Only

"a566c92e-7d0e-11ef-ac7d-8xz262bb6d19"

order_id

The unique Megaphone identifier for a specific order.

Both

"f266c92e-7d0e-11ef-ac7d-8fd262bb6d34"

created_at

The timestamp when the event (row) occured

Both

"2024-10-02T14:00:10.000Z"

country

The country where the person was located when they consumed the ad

Both

"US"

region

The first-level administrative division (e.g., state, province, or territory) where the person was located when they consumed the ad.

Both

“TX”

city

The city where the person was located when they consumed the ad

Both

"Dallas"

zip

The U.S. zip code where the person was located when they consumed the ad

Both

"75254"

dma_name

The U.S. Designated Market Area (DMA) where the person was located when they consumed an ad.

Both

"Los Angeles, CA"

normalized_user_agent

The platform or app where the podcast episode was played (e.g., Spotify, Apple Podcasts, etc).

Both

"Spotify"

byte_offset

The point in the audio file (measured in bytes) where an ad slot begins

DAI Only

0

position

The position of the individual ad within the overall ad slot

Both

1

type

The location of the ad. Ads are either pre-roll, mid-roll, or post-roll.

Both

"pre" / "mid"/”post”

bytes_sent

The number of bytes sent to the person’s device

DAI Only

71095069

seconds_downloaded

The number of seconds downloaded to the device of the person consuming content

DAI Only

1559

ad_source

The logic by which the ad was placed

DAI Only

“auto”

order_downloaded

Whether or not the ad file was completely downloaded by the listener

DAI Only

true / false

blacklisted_ip

Whether the IP is one we associate with not real listeners - bots or employees. Note, this will always be false, planned deprecation.

DAI Only

false

blacklisted_ua

Whether the user agent is one we associate with not real listeners - bots or employees. Note, this will always be false, planned deprecation.

DAI Only

false

File Two: Delivery Export

Field

Description

Plays or Downloads

Example

id

The unique identifier of the event

Both

"1306432511362ad2e76697597f4b8992691fadcdd75a8716d7bf389671e0af11"

delivery_type

The type of consumption, with “plays” representing only Spotify consumption, and downloads representing all platforms

Both

"play" / “download”

media_type

The episode format type; either video or audio.

Both

“audio” / “video”

is_stream

Indicates if the row represents a stream on Spotify

Plays only

true / false

network_id

The unique Megaphone identifier of a network

Both

"dcdbb4fc-1a43-11eb-84ae-67a893070760"

podcast_id

The unique Megaphone identifier of a podcast

Both

"2751f55e-8e15-11ed-ae35-43ee3a490d7d"

episode_id

The unique Megaphone identifier of an episode

Both

"2764369c-8e15-11ed-ae35-9fc331636995"

created_at

The timestamp when the event (row) occured

Both

"2023-01-06T23:52:35.000Z"

duration

The length of an episode in seconds

Both

"104.33"

country

The country where the person was located when they consumed the content

Both

"US"

region

The first-level administrative division (e.g., state, province, or territory) where the person was located when they consumed the content

Both

"NY"

dma_name

The U.S. Designated Market Area (DMA) where the person was located when they consumed the content.

Both

"Los Angeles, CA"

city

The city where the person was located when they consumed the content

Both

"New York"

source

Distinguish between embedded players and browser user agent. Note, this will always be “0” and planned for eventual deprecation.

Downloads only

0

filesize

Size in bytes of the audio file

Downloads only

2998176

bytes_sent

Audio bytes delivered to the user

Downloads only

2998611

seconds_downloaded

The number of seconds downloaded to the device of the user consuming content

Downloads only

104

normalized_user_agent

The platform or app where the podcast episode was played (e.g., Spotify, Apple Podcasts, etc)

Both

"Spotify"

user_agent

Identifies the app and device making a request

Both

"Podcasts/1611.1.1 CFNetwork/1325.0.1 Darwin/21.1.0"

ip

The hashed IP address associated with the person consuming the content

Both

"595a01d976316e1be1bed8646da0dbb2"

blacklisted_ip

Whether the IP is one we associate with not real listeners - bots or employees. Note, this will always be false, planned deprecation.

Downloads only

false

blacklisted_ua

Where the user agent is one we associate with not real listeners - bots or employees. Note, this will always be false, planned deprecation.

Downloads only

false

What’s new about these files?

We’ve added new fields to each file and made some updates to the structural delivery of export files that should make it easier for you to use these services and provide a more complete picture of your performance.

New Fields:

  • Impression File:

    • impression_type: Distinguish between the technology used to deliver the ad (SAI vs DAI)

    • impression_status: Whether impressions that were delivered OR available

    • Country, Region, Zip, DMA: More granular geographic information based on impressions

      • Note, if impression_type= “SAI” and impression_status=”available” you will only see country level geolocation rows.

  • Delivery File

    • delivery_type: Used for understanding specific Spotify consumption and off platform consumption (plays and downloads)

    • media_type: Performance insight based on video vs audio episode formats

    • Is_stream: Whether the consumption event resulted in a Spotify stream

    • network_id: The network associated with relevant delivery rows

Structural Changes:

  • Filtering: We are now filtering out blacklisted IP/user agents so you do not need to handle this custom logic on your end.

  • Finalized Files: Easier understanding of when data is finalized. We will now be adding a new file to indicate that the date is finalized that will be following this naming convention: “_finalized_<metric_type>_<partition_date>_<timestamp>” this should inculcate to you that all the previous files within that day are now finalized.

Actions to take with new files

We will be sending the legacy and new files together for a period of roughly three months, with an eventual legacy depression in Q4’2025 (November estimate). We recommend testing and moving to the new files using some of the below tips prior to the legacy deprecation date.

How to calculate core metrics with these new files:

  • Within the delivery file:

    • Downloads: Count all rows where “delivery_type” = “download”

    • Plays: Count all rows where “delivery_type” = “play”

    • Streams: Count all rows where “is_stream” is true

  • Within the impression file:

    • Delivered Impressions: Count all rows where “impression_type” = “delivered”

Filtering Logic: You no longer need to apply previously recommended filtering logic, as we are now handling this on our end for blacklisted_ua and blacklisted_ip events. You will see fewer rows compared to the previous file, which is due to this filtering, but the counts in the export will match the Megaphone UI.

Future Deprecations and Field Changes

With the updated files (July 2025) we are including new fields. In order to not disrupt any existing workflows, we will still be sending the legacy files for at least three months. We eventually plan to deprecate the legacy files in Q4’2025 and will provide ample warning prior to only sending the new files. In addition, there are a few fields we will also plan to deprecate over time:

Planned fields to be deprecated by the end of 2025:

  • Blacklisted_ip: Due to new filtering always returns false

  • Blacklisted_ua: Due to new filtering always returns false

  • Source: This field is no longer supported, and always returns “0”

Did this answer your question?