What is the export service and what is its purpose
The export service provides granular performance data across consumption, impression, sponsorship, and PMP 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 all applicable export files will be sent once your bucket is set up.
How it works
Once the S3 bucket is setup, you will receive export files on an hourly basis through the day. Depending on your org's activity, you may receive up to four file types:
Delivery Export: delivery-v2-day-YYYY-MM-DD.json.gz — All enrolled orgs
Impressions Export: impressions-v2-day-YYYY-MM-DD.json.gz — All enrolled orgs
Creator Sponsorship Export: creator_sponsorship-v2-day-YYYY-MM-DD.json.gz — Only orgs with sponsorship activity
PMP Impressions Export: pmp_impressions-v2-day-YYYY-MM-DD.json.gz — Only orgs with PMP deal activity
The files will be overwritten throughout the day and contain the data for the day (UTC timezone) thus far. By 12pm 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 finalization marker file.
There are four possible marker types:
_finalized_delivery_<partition_date>_<timestamp>
_finalized_impressions_<partition_date>_<timestamp>
_finalized_creator_sponsorship_<partition_date>_<timestamp>
_finalized_pmp_impressions_<partition_date>_<timestamp>
Summary of all export file types
File | Filename | Who gets it | Joinable to Delivery? |
Delivery | delivery-v2-day-YYYY-MM-DD.json.gz | All enrolled orgs | N/A |
Impressions | impressions-v2-day-YYYY-MM-DD.json.gz | All enrolled orgs | Yes — metric_id → delivery.id (DAI only) |
Creator Sponsorship | creator_sponsorship-v2-day-YYYY-MM-DD.json.gz | Orgs with sponsorship activity | No |
PMP Impressions | pmp_impressions-v2-day-YYYY-MM-DD.json.gz | Orgs with PMP deal activity | Yes — metric_id → delivery.id (DAI only) |
Cross-referencing files
You can join certain export files together for richer analysis:
Impressions → Delivery: Join impressions.metric_id to delivery.id (DAI rows only; metric_id is null for SAI).
PMP Impressions → Delivery: Join pmp_impressions.metric_id to delivery.id (DAI rows only).
This join gives partners download-level delivery evidence (bytes_sent, seconds_downloaded, filesize from the Delivery file).
Creator Sponsorship cannot be joined to the Delivery file. Sponsorship impressions are tracked via Spotify playback, not the ad server, so the two files use different identifier systems with no shared join key.
Schema of export files
File One: Impressions Export
Field | Description | SAI or DAI | Example |
show_uri | The unique Spotify identifier of a podcast | Both | "spotify:show:3aB7cD9eF1gH2ij4kL5mN6" |
episode_uri | The unique Spotify identifier of an episode | Both | "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1" |
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) occurred | 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 | Deprecated. Always returns false. | DAI Only | false |
blacklisted_ua | Deprecated. Always returns false. | DAI Only | false |
File Two: Delivery Export
Field | Description | Plays or Downloads | Example |
show_uri | The unique Spotify identifier of a podcast | Both | "spotify:show:3aB7cD9eF1gH2ij4kL5mN6" |
episode_uri | The unique Spotify identifier of an episode | Both | "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1" |
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) occurred | 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 | Deprecated. Always returns "0". | 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 | Deprecated. Always returns false. | Downloads only | false |
blacklisted_ua | Deprecated. Always returns false. | Downloads only | false |
File Three: Creator Sponsorship Export
Filename: creator_sponsorship-v2-day-YYYY-MM-DD.json.gz
Who gets it: Orgs with sponsorship activity only. Not sent if org has no sponsorship data.
Field | Description | Example |
delivery_type | Always "spotify" | "spotify" |
playback_id | Unique playback session ID | "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" |
podcast_id | The unique Megaphone identifier of a podcast | "42c9a7c0-ca68-11ed-94a6-27f47d63ee42" |
episode_id | The unique Megaphone identifier of an episode | "9781f646-9645-11ef-93b9-2b900958dc65" |
sponsorship_uri | The unique Spotify identifier of the sponsorship | "spotify:sponsorship:1e7mrsavX7KSRDv8evxxXp" |
sponsorship_type | Type of sponsorship (e.g. "BAKED_IN") | "BAKED_IN" |
media_type | The episode format type: "audio" or "video" | "audio" |
country | The country where the person was located when they consumed the content | "US" |
region | The first-level administrative division (e.g., state, province, or territory) | "NY" |
city | The city where the person was located when they consumed the content | "New York" |
dma_name | The U.S. Designated Market Area (DMA) (null for non-US) | "New York, NY" |
zip | The U.S. zip code (null for non-US) | "10001" |
age_bucket | Age demographic bucket | "25-34" |
gender | Gender demographic | "female" |
impression_at | The timestamp when the sponsorship impression occurred | "2026-07-25T14:30:29.264+00:00" |
seconds_played | Seconds of sponsorship audio played | "45" |
played_cue_start | Whether playback started from the sponsorship cue start | true / false |
played_cue_end | Whether playback reached the sponsorship cue end | true / false |
is_complete_impression | Whether the full sponsorship was played | true / false |
organization_id | The unique Megaphone identifier of an organization | "b366c92e-6e0e-7ref-ac7d-8xz262bb6d19" |
show_uri | The unique Spotify identifier of a podcast | "spotify:show:3aB7cD9eF1gH2ij4kL5mN6" |
episode_uri | The unique Spotify identifier of an episode | "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1" |
Sample row:
{
"delivery_type": "spotify",
"playback_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"podcast_id": "42c9a7c0-ca68-11ed-94a6-27f47d63ee42",
"episode_id": "9781f646-9645-11ef-93b9-2b900958dc65",
"sponsorship_uri": "spotify:sponsorship:1e7mrsavX7KSRDv8evxxXp",
"sponsorship_type": "BAKED_IN",
"media_type": "audio",
"country": "US",
"region": "NY",
"city": "New York",
"dma_name": "New York, NY",
"zip": "10001",
"age_bucket": "25-34",
"gender": "female",
"impression_at": "2026-07-25T14:30:29.264+00:00",
"seconds_played": "45",
"played_cue_start": true,
"played_cue_end": true,
"is_complete_impression": true,
"organization_id": "b366c92e-6e0e-7ref-ac7d-8xz262bb6d19",
"show_uri": "spotify:show:3aB7cD9eF1gH2ij4kL5mN6",
"episode_uri": "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1"
}
Metric calculations:
Total Sponsorship Impressions: Count all rows
Complete Sponsorship Impressions: Count rows where is_complete_impression is true
File Four: PMP Impressions Export
Filename: pmp_impressions-v2-day-YYYY-MM-DD.json.gz
Who gets it: Orgs with PMP (Private Marketplace) deal activity only. Not sent if org has no PMP deals.
Field | Description | Example |
id | Unique impression identifier | "p468c92e-7d1e-11ef-ac4d-8xz211bb6d14SX-MP-DV-ABC-1234567890midroll1" |
metric_id | The unique Megaphone identifier of the person's listening session. DAI only (null for SAI). Join to the Delivery file: pmp_impressions.metric_id = delivery.id | "p468c92e-7d1e-11ef-ac4d-8xz211bb6d14" |
created_at | The timestamp when the event (row) occurred | "2026-08-30T00:17:38.217Z" |
impression_type | The advertising technology used to deliver the impression: "dai" or "sai" | "dai" |
product_type | Always "SAX_PMP_PUBLISHER_DIRECT" | "SAX_PMP_PUBLISHER_DIRECT" |
deal_id | The PMP deal the impression cleared against (SX-prefixed) | "SX-MP-DV-ABC-1234567890" |
ad_format | "AUDIO" or "VIDEO" | "AUDIO" |
organization_id | The unique Megaphone identifier of an organization | "b366c92e-6e0e-7ref-ac7d-8xz262bb6d19" |
network_id | The unique Megaphone identifier of a network | "dcdbb4fc-1a43-11eb-84ae-67a893070760" |
podcast_id | The unique Megaphone identifier of a podcast | "42c9a7c0-ca68-11ed-94a6-27f47d63ee42" |
episode_id | The unique Megaphone identifier of an episode | "9781f646-9645-11ef-93b9-2b900958dc65" |
show_uri | The unique Spotify identifier of a podcast | "spotify:show:3aB7cD9eF1gH2ij4kL5mN6" |
episode_uri | The unique Spotify identifier of an episode | "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1" |
type | The location of the ad: "pre", "mid", or "post" | "mid" |
position | The position of the individual ad within the overall ad slot | 1 |
country | The country where the person was located when they consumed the ad | "US" |
region | The first-level administrative division (e.g., state, province, or territory) | "TX" |
city | The city where the person was located when they consumed the ad | "Dallas" |
zip | The U.S. zip code where the person was located when they consumed the ad | "75254" |
dma_name | The U.S. Designated Market Area (DMA) where the person was located when they consumed an ad | "Dallas-Ft. Worth, TX" |
normalized_user_agent | The platform or app where the podcast episode was played | "Apple Podcasts" |
Sample row:
{
"id": "p468c92e-7d1e-11ef-ac4d-8xz211bb6d14SX-MP-DV-ABC-1234567890midroll1",
"metric_id": "p468c92e-7d1e-11ef-ac4d-8xz211bb6d14",
"created_at": "2026-08-30T00:17:38.217Z",
"impression_type": "dai",
"product_type": "SAX_PMP_PUBLISHER_DIRECT",
"deal_id": "SX-MP-DV-ABC-1234567890",
"ad_format": "AUDIO",
"organization_id": "b366c92e-6e0e-7ref-ac7d-8xz262bb6d19",
"network_id": "dcdbb4fc-1a43-11eb-84ae-67a893070760",
"podcast_id": "42c9a7c0-ca68-11ed-94a6-27f47d63ee42",
"episode_id": "9781f646-9645-11ef-93b9-2b900958dc65",
"show_uri": "spotify:show:3aB7cD9eF1gH2ij4kL5mN6",
"episode_uri": "spotify:episode:7xI8zN6vU5tS4rQ3pO2nM1",
"type": "mid",
"position": "1",
"country": "US",
"region": "TX",
"city": "Dallas",
"zip": "75254",
"dma_name": "Dallas-Ft. Worth, TX",
"normalized_user_agent": "Apple Podcasts"
}Metric calculations:
Total PMP Impressions: Count all rows
PMP Impressions by deal: Count rows grouped by deal_id
DAI vs SAI: Count rows grouped by impression_type ("dai" or "sai")
PMP Impressions by platform: Count rows grouped by normalized_user_agent
Note on evidence model: PMP impressions are event-counted, not byte-evidenced. The PMP file does not contain byte_offset, bytes_sent, seconds_downloaded, or order_downloaded. Partners who need download-level delivery evidence should join the PMP file to the Delivery file using pmp_impressions.metric_id = delivery.id (DAI rows only). This join provides access to the Delivery file's bytes_sent, seconds_downloaded, and filesize fields for each impression.