Skip to content
<- Guides
AMC · Measurement

Measure Subscribe & Save Lift in AMC

The repeatSnSOrder signal is where the lift shows up.

Measure Subscribe & Save lift in AMC: compare subscriber and non-subscriber spend in conversions_all with repeatSnSOrder, over at least three months.

Kuudo
Reviewed by Kuudo Engineering
Recurring subscription lift belongs in a scheduled measurement workflow.
TL;DR

Subscribe & Save lift needs three event subtypes: snsSubscription, firstSnSOrder, and repeatSnSOrder. Flexible Shopping Insights began logging repeat SnS purchases on February 5, 2024, and they live in conversions_all, the paid Flexible Shopping Insights table. Amazon recommends at least three months of data so repeat purchases have time to appear.

Subscribe & Save (SnS) lift in Amazon Marketing Cloud (AMC) is the gap in average spend between SnS subscribers and other purchasers. Measure it in the conversions_all table with all three SnS event subtypes, including repeatSnSOrder, over at least three months. Leave the repeat signal out and every scheduled reorder after the first goes uncounted.

The agent runs the query in your Amazon Marketing Cloud instance through the Amazon Ads MCP. It checks each table, column and caveat against Amazon's own instructional queries in Amazon Agent Atlas, and the Amazon Marketing Cloud Skill carries the AMC SQL rules. Only aggregated rows leave AMC.

The question usually sounds like this:

"Is Subscribe & Save actually doing anything for us, or are we just discounting the same customers who would have bought anyway?"

Atlas grounds the query in Amazon's Subscribe & Save instructional query

Subscribe & Save gives customers scheduled deliveries with a discount on the repeat purchases. Answering the question above needs user-level purchase events split by SnS status, which is what AMC holds. The Amazon Ads Reporting API (beta) counts ad-attributed Subscribe & Save subscriptions, but a subscription count is not a spend comparison.

Before writing SQL, the agent searches the amazon_ads collection in Atlas and pulls four Amazon documents:

  • Subscribe and Save repeat purchases. Amazon's use case and its two instructional queries: average spend by subscribers and non-subscribers, and number of SnS purchases by ASIN.
  • Flexible Shopping Insights trial guide. Its SnS penetration query, which measures the share of units and sales sold through SnS.
  • Introduction to Flexible Amazon Shopping Insights. Which table carries the data and what subscribing requires.
  • Paid features overview. Which marketplaces can buy Flexible Shopping Insights.

Any one of these silently changes the lift number. Atlas carries Amazon's text for all four, so the agent works from the source, not from memory.

The Amazon Ads MCP runs the lift query in your AMC instance

The agent adapts Amazon's average-spend query and runs it through the Amazon Ads MCP in the main AMC query editor, not the audience editor: this is measurement, not an audience. Amazon's template buckets each event row, so a subscriber's other purchases, and non-purchase events such as detail page views, land in the non-subscriber bucket. This version classifies each user once and counts only purchase sales:

-- Subscribe & Save lift: average spend per purchasing user, subscribers vs everyone else
-- Adapted from Amazon's instructional query "Introduction to Subscribe & Save (SnS)
-- repeat purchases (Average spend by SnS subscribers and non-SnS subscribers)"
-- Run window: at least 3 months (set the Date range in the query editor)
-- Table: conversions_all (Flexible Shopping Insights paid feature)

WITH user_spend AS (
  SELECT
    user_id,
    MAX(
      CASE
        WHEN event_subtype IN (
          'snsSubscription',   -- initial subscription event
          'firstSnSOrder',     -- first SnS purchase
          'repeatSnSOrder'     -- repeat SnS purchases (logged from 2024-02-05)
        ) THEN 1
        ELSE 0
      END
    ) AS is_subscriber,
    SUM(
      CASE WHEN event_category = 'purchase' THEN total_product_sales ELSE 0 END
    ) AS sales
  FROM conversions_all
  WHERE tracked_item IN (
    'B0XXXXXXX1', 'B0XXXXXXX2', 'B0XXXXXXX3'   -- ASIN filter for performance
  )
  GROUP BY 1
)
SELECT
  CASE WHEN is_subscriber = 1 THEN 'subscriber' ELSE 'non-subscriber' END AS user_type,
  COUNT(DISTINCT user_id)              AS users_that_purchased,
  SUM(sales)                           AS total_sales,
  SUM(sales) / COUNT(DISTINCT user_id) AS average_spend_per_user
FROM user_spend
WHERE sales > 0
GROUP BY 1

Three choices to notice:

  • The three subtypes sit in one IN list. Any of them puts the user in the subscriber bucket, as in Amazon's template. MAX keeps one flag per user, however many events that user has.
  • The ASIN filter sits in the WHERE clause. Amazon's instructions recommend an ASIN filter to improve performance. Only certain categories, such as Beauty and Grocery, are eligible for SnS, so scope the list to your enrolled ASINs.
  • There is no ORDER BY. AMC does not support it outside a window function, so sort the downloaded result instead.

The Amazon Ads MCP runs a companion query for SnS share by ASIN

The lift number is the headline. The next question is which Amazon Standard Identification Numbers (ASINs) carry Subscribe & Save. Amazon answers it two ways. The Subscribe and Save use case counts SnS purchases per subscription by ASIN, which shows how many repeat purchases happen before drop-off. The Flexible Shopping Insights trial guide measures SnS penetration, the share of units and sales sold through SnS.

The agent adapts the penetration query to the same ASIN list:

-- SnS share of purchases by ASIN
-- Adapted from the Flexible Shopping Insights trial guide "SnS penetration" query
-- Same Date range and ASIN list as the lift query

WITH total AS (
  SELECT
    tracked_item AS asin,
    SUM(total_units_sold)    AS total_units_sold,
    SUM(total_product_sales) AS total_product_sales
  FROM conversions_all
  WHERE event_category = 'purchase'
    AND tracked_item IN ('B0XXXXXXX1', 'B0XXXXXXX2', 'B0XXXXXXX3')
  GROUP BY 1
),
sns AS (
  SELECT
    tracked_item AS asin,
    SUM(total_units_sold)    AS sns_units_sold,
    SUM(total_product_sales) AS sns_sales
  FROM conversions_all
  WHERE event_subtype IN ('firstSnSOrder', 'repeatSnSOrder')
    AND tracked_item IN ('B0XXXXXXX1', 'B0XXXXXXX2', 'B0XXXXXXX3')
  GROUP BY 1
)
SELECT
  total.asin,
  sns.sns_units_sold,
  total.total_units_sold,
  ROUND(100.0 * sns.sns_units_sold / NULLIF(total.total_units_sold, 0), 1) AS sns_unit_share_pct,
  ROUND(100.0 * sns.sns_sales / NULLIF(total.total_product_sales, 0), 1) AS sns_sales_share_pct
FROM total
LEFT JOIN sns ON sns.asin = total.asin

The total counts every purchase, SnS or not. In conversions_all, SnS purchases are logged as firstSnSOrder and repeatSnSOrder rather than order, so dividing by order rows alone would leave SnS out of the denominator. NULLIF guards against a zero total. The query uses tracked_item because it carries the ASIN on every ASIN conversion.

The agent reads the ratio as a spend gap, not proof of cause

The lift query returns two rows. The agent divides the subscriber average_spend_per_user by the non-subscriber figure to get the lift ratio. In Amazon's example results, non-subscribers spend 27% less on average than subscribers. Your numbers will differ.

The agent reports the ratio as a spend gap, not proof that SnS caused it: customers who subscribe may already buy more. To see the part that follows advertising, it adds exposure_type to the companion query. Amazon's trial guide suggests that breakout, and conversions_all marks a conversion ad-exposed when the user was served an ad in the 28 days before it.

The decision behind the question is whether to push SnS harder. Two readings from the companion query point different ways:

What the companion query showsWhere the upside is
Your top-selling ASINs already sell a large share through SnSPromoting similar products in SnS, and planning inventory for the SnS best sellers
Your top-selling ASINs sell a small share through SnSMoving existing buyers of those ASINs into SnS, for example with an audience and a campaign

Atlas surfaces the caveats that decide whether the read is valid

The agent adds these without being asked, because Amazon's documents in Atlas carry them next to the queries:

What happens next: rerun it every quarter, then build an audience with approval

The lift ratio is the input to the next decisions, not the end of the analysis. From here:

  • Rerun it the same way. The Amazon Ads MCP can save the query as an AMC workflow and schedule it, or run it on demand over an explicit window, as in the request body above. The Amazon Marketing Cloud Skill keeps the AMC SQL rules the same on every run: the right table, the three subtypes, and no ORDER BY.
  • Build an audience of non-subscribed buyers. Audience queries select user_id from a _for_audiences table, here conversions_all_for_audiences, and the audience is activated in Amazon demand-side platform (DSP) campaigns. For eligible advertisers, Amazon allows that table for audience creation without a paid feature subscription. The cart-abandoner audience guide walks through the same pattern on conversions_for_audiences.
  • Create it with approval. The Amazon Ads MCP includes the AMC audience creation operation, so the agent can prepare the audience. Depending on your workspace policy, it may require approval before it reaches Amazon DSP.

The AMC run itself stays inside AMC. For the questions around it, the Amazon Agent Data layer, built on Amazon Agent Flow, lands your Amazon Ads and Selling Partner data in a lake you own. An agent can then set SnS lift beside the catalog and inventory the Amazon Selling Partner MCP reads.

If a Subscribe & Save number leaves out repeatSnSOrder, it counts the first delivery and misses every one after it.

Next in the series: where an ad impression sits in the full conversion path, mapped in the path-to-conversion Sankey.

Private beta

Run Subscribe & Save lift on your own Amazon data

Bring us the Amazon workflow you want your agent to run. In a private-beta working session, we'll map the fit, setup, and next step with you.

Run this workflow in beta

What you need to run Subscribe & Save lift

tables
conversions_all
subscriptions
Amazon Marketing Cloud instance access, Flexible Shopping Insights paid feature
Lookback window
At least three months, per Amazon's Subscribe & Save instructional query
API compatibility
AMC SQL
Schema version
Flexible Shopping Insights repeat SnS purchases logged from 2024-02-05
Last verified
"2026-09-29T00:00:00.000Z"

What success and failure look like for Subscribe & Save lift

resultinterpretation
No repeatSnSOrder rowsThe query is running in Sandbox, where repeat SnS signals are not available, or the ASINs have no repeat SnS purchases in the window.
Window under three monthsRepeat purchases are undercounted. Amazon recommends at least three months of data.
Query uses conversions instead of conversions_allThe conversions table logs the first SnS purchase as a plain order and has no repeatSnSOrder rows.
Query fails on ORDER BYAMC does not support ORDER BY outside a window function. Remove it and sort the downloaded result.

Supporting payloads

Run the saved lift query over an explicit window

The body of POST /workflowExecutions, sent by AMCWorkflow_createWorkflowExecution in the Amazon Ads MCP. Field names from Amazon's AMC workflow execution guide.

{"workflowId":"sns-lift-average-spend","timeWindowType":"EXPLICIT","timeWindowStart":"2026-06-01T00:00:00","timeWindowEnd":"2026-09-01T00:00:00","timeWindowTimeZone":"UTC"}
Related reading

Keep exploring Subscribe & Save lift

Use these companion guides to understand the inputs, follow-on analysis, and adjacent workflows behind this playbook.

FAQ

Which AMC table has Subscribe & Save signals?

`conversions_all`, the Flexible Shopping Insights table, carries all three SnS event subtypes. The standard `conversions` table logs the subscription and the first SnS purchase (as `order`) but has no repeat SnS purchases.

What event_subtypes define Subscribe & Save lift?

Use `snsSubscription`, `firstSnSOrder`, and `repeatSnSOrder` together. The repeat signal captures every SnS purchase after the first one.

Why does my SnS query return no repeat orders?

Repeat SnS signals, including `sns_subscription_id`, are not available in AMC Sandbox. In production, check that the instance subscribes to Flexible Shopping Insights, that the ASINs are enrolled in Subscribe & Save, and that the window covers at least three months.

How long should the Subscribe & Save measurement window be?

Amazon's Subscribe & Save instructional query recommends at least three months of data to capture SnS purchase patterns. Set it in the query editor's Date range, or with an explicit time window when the run goes through the API.

Can I compare subscribers to opt-out customers?

Amazon's instructional query compares subscribers with non-subscribers: purchasers with none of the three SnS event subtypes. None of those three subtypes records an opt-out, so the comparison group is everyone else who bought.

Is the spend gap the same as incremental lift?

No. It compares two groups of buyers, and people who subscribe may already be heavier buyers. For the part that follows advertising, split the SnS purchases by `exposure_type`, which marks a conversion as ad-exposed when the user was served an ad in the 28 days before it.

Sources