- Amazon Marketing Stream Version 2 writes Amazon Ads data as Apache Parquet files to an S3 bucket you own, with an SQS notification for each file, as often as every 15 minutes.
- Version 1 is deprecated and shuts off on June 30, 2027. One v2 dataset, ads-performance-v1, replaces the four v1 performance datasets.
- Two v2 datasets: ads-performance-v1 (hourly) and ads-converted-product-v1 (daily, ASIN level). Both restate for 70 days.
- Each record carries the total for its time window. Keep the row with the highest streamBatch.version per record.
- A v2 subscription is ACTIVE on creation, backfills the restatement period, and can't be resumed once SUSPENDED or ARCHIVED.
Amazon Marketing Stream is Amazon Ads' push-based reporting feed. In Version 2, the current version, you subscribe an advertiser account to a dataset, and Amazon writes Parquet files to an S3 bucket you own, as often as every 15 minutes, with an SQS notification for each file. Amazon charges no fee, and Version 1 shuts off on June 30, 2027.
An agency's analytics lead asked me: "what is Amazon Marketing Stream, what data does it send, and how would our AI use it?" Amazon now documents two versions side by side, and Version 1 is deprecated. Much of what you find about Stream still describes the queue-and-delta design Version 2 replaces.
Stream is only useful once its data sits somewhere you can ask questions of. Our agent created and checked the Version 2 subscriptions through the Amazon Ads MCP, Kuudo landed the data in our own data lake, and the agent queried it there through Amazon Agent Flow. Amazon Agent Atlas held Amazon's Version 2 rules, which is where the traps below come from.
Amazon Marketing Stream v2 writes Amazon Ads data to your S3 bucket instead of waiting for report calls
Amazon calls Stream Version 2 the primary programmatic reporting surface for Amazon Ads. It delivers the metrics and dimensions the reporting API exposes, unified across ad products, as Apache Parquet files in an S3 bucket you own, with an SQS notification as each file lands. Each record carries the total for its time window, and a restated record arrives again with its new total.
| Your need | Amazon's recommendation |
|---|---|
| Intraday bid and budget changes | Stream v2 |
| Real-time dashboards | Stream v2 |
| Many brands or thousands of accounts | Stream v2 |
| AI and predictive modeling | Stream v2 |
| Predefined stakeholder-ready reports | Reporting API |
| Daily, weekly or monthly summaries | Reporting API |
Amazon's reason is scale: the reporting API is built for ad-hoc reports and allows one concurrent report per advertiser and about 100 reports a day. Stream has no fee, though you pay AWS for the S3 storage and SQS notifications. It is available worldwide and delivers global account data. The Region only decides where you call the API and create the bucket and queue, which must sit in the same Region.
Through the Amazon Ads MCP, the subscription request comes from your AI client rather than a script someone has to maintain, using the advertiser access the account already authorized.
Version 1 is deprecated and shuts off on June 30, 2027
Migrate from Version 1 puts Stream v1 on a deprecation path: existing subscriptions keep delivering, some functionality may be limited before the shut-off, and v1 stops on June 30, 2027.
| Version 1 (deprecated) | Version 2 | |
|---|---|---|
| Destination | Firehose stream or SQS queue | S3 bucket plus SQS notification |
| Format | JSON | Apache Parquet |
| Values | Deltas per time window | Totals per time window |
| Deduplication | On idempotency_id | Highest streamBatch.version per record |
| Delivery | Hourly | As often as every 15 minutes |
| New subscription | Provisioning; confirmation for SQS only | ACTIVE on creation |
For v1 SQS destinations, the sequence is PROVISIONING → PENDING_CONFIRMATION → ACTIVE. Firehose destinations skip confirmation: PROVISIONING → ACTIVE.
One v2 dataset, ads-performance-v1, replaces the four v1 performance datasets for Sponsored Products, Sponsored Brands, Sponsored Display and Amazon DSP (demand-side platform): subscribe once and filter on adProduct.value. Amazon's migration order runs both versions side by side:
- Set up the S3 bucket and SQS queue.
- Create the v2 subscription for
ads-performance-v1. - Process the Parquet files, keeping the highest
streamBatch.versionper record. - Build a resilient consumer that accepts non-breaking additions within the current dataset version. Breaking changes get a new dataset version; follow Amazon's consumer rules so additions do not break ingestion.
- Reconcile v2 totals against v1 for the same time windows.
- Archive the v1 subscriptions only after the totals match.
The Amazon Ads MCP carries both sets of subscription operations, so the agent can create the v2 subscription and archive the v1 ones from the same conversation once the totals reconcile.
Two v2 datasets replace Version 1's per-product feeds
Every Version 2 dataset spans Sponsored Products, Sponsored Brands, Sponsored Display, Sponsored TV and Amazon DSP, and follows the reporting API's metric and dimension names. The version is part of the ID, so a breaking change arrives as a new dataset rather than a changed one.
| Dataset | Grain | Restatement window | What it carries |
|---|---|---|---|
ads-performance-v1 | Hourly | 70 days | Traffic, engagement, cost, attributed conversions |
ads-converted-product-v1 | Daily | 70 days | Conversions per ASIN, including halo |
Amazon Agent Atlas holds each dataset's field list, so the agent filters on the right field and computes what the dataset leaves out. Four dataset rules change how you read the data:
Ads performancehas no calculated metrics. Compute return on ad spend (ROAS) or click-through rate from the base metrics after aggregating to your grain.- Time comes with its time zone. Each record carries
date.value,hour.valueandtimeZone.value, the time zone the advertiser uses for reporting. - Small values are grouped. Below Amazon's reporting thresholds, a dimension value reports as
(Other), and totals at every grain stay complete. Ads converted productreplaces the purchased product reports. It covers whatspPurchasedProduct,sbPurchasedProduct,sdPurchasedProductanddspProductreported, split into promoted products and halo.
A v2 subscription is active on creation and cannot be revived
Create a subscription pairs one dataset with one advertiser account and one destination: an S3 bucket ARN and the ARN of its notification queue. The subscription becomes ACTIVE on creation, and the first delivery backfills the dataset's restatement period within about a day.
| Status | Means | Terminal |
|---|---|---|
ACTIVE | Delivering data | No |
SUSPENDED | Stream can't reach your destination | Yes |
ARCHIVED | Deleted by your application | Yes |
Manage subscriptions adds three rules. A suspended or archived subscription never returns to ACTIVE, so resuming takes a new one. The destination is fixed at creation, and the same dataset, destination and account can't be subscribed twice. Each call must name the advertiser account the subscription was created for.
The Amazon Ads MCP carries the Version 2 subscription operations: create, retrieve, query and delete. The agent creates a subscription from a dataset ID, a bucket ARN and a queue ARN, reads the status back, and deletes what is no longer needed. The change goes through our workspace policy before it reaches Amazon.
Version 2 records are totals, so the newest version of each record wins
Data delivery sends only the records that changed since the last delivery, as inserts and updates, not a full snapshot. A record is keyed by its dimension fields. Process your data keeps the row with the highest streamBatch.version for each key in a staging layer, then aggregates from there, because a restated hourly record changes every total above it. A record is final only after its 70-day restatement window has passed.
Each Kuudo layer does one job:
| Job | Kuudo layer | What it does |
|---|---|---|
| Create, check, delete subscriptions | Amazon Ads MCP | Version 2 subscription operations |
| Keep the latest version of each record | Amazon Agent Flow pipelines | Lands the data in your lake |
| Answer questions from the data | Amazon Agent Flow queries | Filtered, scan-budgeted lake queries |
The data stays in storage you own, so the hourly history is as long as you keep it. The agent answers from data already in the lake instead of waiting on a report during the conversation.
What happens next: subscribe the dataset your decision needs
Start from the decision, not the catalog:
- Intraday bidding and budget watching need
ads-performance-v1. - Product-level halo questions need
ads-converted-product-v1. - A team still on Version 1 runs both versions until the totals reconcile, well before June 30, 2027.
- Scheduled, stakeholder-ready reports stay with the reporting API, where the Build the Right Amazon Ads Report Skill turns a report question into a validated request.
Amazon Agent Flow keeps the landed history queryable as subscriptions run. The Selling Partner MCP covers the orders and inventory the ads drive, and the weekly optimization routine is where hourly data earns its place.
Stream v2 is a subscription, a bucket you own, and a lake your AI can query: three layers, each with one job.
Next: Amazon PPC dayparting, built on hourly Stream data.
Put Marketing Stream v2 to work from your AI
We'll connect the Amazon Ads MCP to the AI client your team uses, set up your Stream v2 subscriptions and destination, and land the data in your own lake so your AI can query hourly ads data.
Book a working sessionWhat you need to run Amazon Marketing Stream subscriptions
- MCP
- Amazon Ads MCP for Marketing Stream Version 2 subscriptions: create, retrieve, query and delete. Amazon Agent Flow lands the data in your lake and queries it.
- Atlas collection
- amazon_ads, the Amazon rules behind this guide (playbooks: Amazon Marketing Stream Version 2 overview; Migrate from Version 1; Ads performance; Ads converted product; Create a subscription; Manage subscriptions; Data delivery; Process your data)
- Required subscriptions
- An Amazon Ads account, and an S3 bucket plus an SQS notification queue in the same AWS Region.
Keep exploring Amazon Marketing Stream subscriptions
Use these companion guides to understand the inputs, follow-on analysis, and adjacent workflows behind this playbook.
FAQ
What is Amazon Marketing Stream?
Amazon Marketing Stream is Amazon Ads' push-based reporting feed. In Version 2 you subscribe an advertiser account to a dataset, and Amazon writes Parquet files to an S3 bucket you own, with an SQS notification for each file, as often as every 15 minutes.
What is the difference between Amazon Marketing Stream v1 and v2?
Version 1 sends JSON deltas to a Firehose stream or SQS queue, hourly, deduplicated on idempotency_id. Version 2 writes Parquet files with total values to your S3 bucket, as often as every 15 minutes, deduplicated by keeping the highest streamBatch.version per record.
When does Amazon Marketing Stream v1 shut off?
June 30, 2027. Amazon says v1 is on a deprecation path, existing subscriptions keep delivering until then, and some v1 functionality may be limited before the shut-off.
Is Amazon Marketing Stream free?
Amazon charges no fee for Stream. You pay AWS for the S3 storage of the Parquet files you keep, the SQS notifications, and whatever you use to read the data.
Should I use Marketing Stream or the reporting API?
Amazon recommends Stream v2 for intraday optimization, real-time dashboards, large-scale reporting and AI modeling, and the reporting API for predefined, stakeholder-ready and periodic reports. The reporting API allows one concurrent report per advertiser and about 100 reports a day.
Why does my Stream v2 subscription show SUSPENDED?
Stream could no longer reach your destination: the S3 bucket or SQS queue was deleted, or the permission Stream uses was removed. SUSPENDED is terminal, so fix the destination and create a new subscription.
Can you change a Marketing Stream subscription's destination?
No. A v2 subscription's destination is fixed at creation. Delete the subscription and create a new one that points to the new destination.