Skip to content
<- Guides
AMC · Measurement

Count New-to-Brand Customers in AMC

Pick the right table once. Run it weekly forever.

Use the conversion-time table to count new-to-brand customers in AMC without confusing users, purchases, or traffic-time attribution drift.

Kuudo
Reviewed by Kuudo Engineering
Pick the source first; the SQL writes itself once the source is right.
TL;DR

New-to-brand (NTB) customer counts come from amazon_attributed_events_by_conversion_time filtered to purchases > 0 and split by the new_to_brand boolean. Use the conversion-time table (not by_traffic_time) for any recurring workflow. NTB lookback is 365 days, Amazon-managed.

What is the NTB customer question?

A Slack from our paid team last Tuesday: "Of all the customers our campaigns reached who actually bought, how many were buying our brand for the first time?"

The honest answer is: nobody at the agency knows, the Amazon Ads console gives a partial number that excludes Amazon's demand-side platform (DSP), and ChatGPT will hand back a SQL query that compiles and counts the wrong table. The right answer lives in three Amazon Marketing Cloud (AMC) instructional queries plus a schema doc, none of which a model has cleanly in its training data. I handed the question to our agent, backed by Amazon Agent Atlas.

The matrix the agent grounded in before writing a line of SQL:

SourceUse it forDon't use it for
amazon_attributed_events_by_conversion_timeRecurring NTB measurement, by promoted Amazon Standard Identification Number (ASIN)Anything time-of-impression
amazon_attributed_events_by_traffic_timeSame-day pacing onlyRecurring workflows
amazon_retail_purchases (NTB gateway IQ)Custom NTB lookback (e.g. 1095 days)Ad-attribution analysis
conversions (custom attribution)Pixel + off-Amazon NTBSponsored Ads NTB counts

The IQ behind the answer is New to brand customers.

What a model without Atlas gets wrong

None of these failures throw an error. The query runs. The number is wrong.

What Atlas retrieves

The agent didn't write SQL from training data. It pulled five chunks from Atlas and grounded the query in them:

  • The New to brand customers instructional query: the canonical AMC IQ for this exact operator question, including the requirement language ("ASINs must be tracked to campaigns") and the policy window ("previous 365 day period").
  • The Amazon Attributed Events Overview schema doc: defines the new_to_brand boolean column and the stability difference between amazon_attributed_events_by_conversion_time and the traffic-time variant. This is the source for the "use conversion_time for recurring workflows" rule. The table is wired through the Amazon Ads MCP, so the agent could resolve the column without resorting to a live web fetch via Amazon Agent Crawl.
  • The New to brand purchases analysis IQ, adjacent to the customer IQ and the one a model would otherwise confuse with this one. Atlas surfaced it so the agent could write Section 8 distinguishing the two.
  • The Understanding New-to-Brand ASINs on Amazon IQ, the natural follow-up. Once the operator knows the portfolio-level NTB%, the question becomes "which ASINs are the front door for NTB acquisition."
  • The Data aggregation thresholds in AMC reference: the privacy-safeguard doc that explains why user_id SELECTs get blocked at a final-output grain.

How the agent's NTB SQL output works

The SQL the agent returned, copy-pasteable into the AMC query editor:

-- New-to-brand customers: count and percentage by campaign.
-- Source IQ: New to brand customers (AMC instructional query).
-- NTB lookback: 365 days (Amazon-managed; not parameterizable in this IQ).
-- Run on the analytics table, NOT the for_audiences variant.
WITH ad_buyers AS (
  SELECT
    advertiser,
    campaign,
    user_id,
    MAX(new_to_brand) AS new_to_brand_flag
  FROM amazon_attributed_events_by_conversion_time
  WHERE purchases > 0
  GROUP BY 1, 2, 3
),
ntb_only AS (
  SELECT user_id, advertiser, campaign
  FROM ad_buyers
  WHERE new_to_brand_flag = TRUE
)
SELECT
  b.advertiser,
  b.campaign,
  COUNT(DISTINCT b.user_id) AS users_that_purchased,
  COUNT(DISTINCT n.user_id) AS ntb_users_that_purchased,
  COUNT(DISTINCT n.user_id) * 1.0
    / NULLIF(COUNT(DISTINCT b.user_id), 0) AS ntb_users_percentage
FROM ad_buyers b
LEFT JOIN ntb_only n
  ON  b.user_id    = n.user_id
  AND b.advertiser = n.advertiser
  AND b.campaign   = n.campaign
GROUP BY 1, 2
ORDER BY ntb_users_percentage DESC

Three decisions in this query would otherwise cost an operator an afternoon. The table choice is amazon_attributed_events_by_conversion_time, not the traffic-time variant. The Atlas chunk for Amazon Attributed Events Overview is explicit: traffic-time will re-extend the conversion window by up to 30 days after the query runs, so a recurring NTB report pinned to it produces a different answer each time. Conversion-time is the only safe table for a recurring measurement workflow.

The WITH CTE exists because user_id carries an aggregation threshold. AMC will block any final SELECT that tries to expose user_id directly. The CTE collapses each user into a single row tagged with their NTB flag, and the outer SELECT operates only on COUNT DISTINCT. That is legal; it is also why the IQ template uses a CTE rather than a single-pass SELECT.

The grouping is by campaign, not by advertiser alone. A portfolio-level NTB% hides the campaigns doing the actual acquisition work. If three campaigns are running and one is a loyalty-retargeting campaign with deliberately low NTB%, the aggregate percentage drops and looks like a problem. Grouping by campaign separates the loyalty workload from the acquisition workload so each campaign gets judged on its own goal.

What NTB footnotes the agent surfaced

What happens next

The single-run query is the first step. The repeatable workflow is what the operator actually wanted.

Activate this query as a recurring Skill on a weekly cadence. Push the per-campaign NTB% to a BI dashboard so brand managers can read the trend without re-running SQL. Wire the underlying retrieval through the Amazon Ads MCP so the agent surfaces the same context to a human reviewer mid-month that it had at compose time.

The full workflow runs through the Amazon Agent Data layer: Amazon Ads MCP brings campaign and AMC signals, the Selling Partner MCP can add catalog context, Atlas grounds the table choice, and Skills turn the query into a reviewed recurring automation.

The rule that fires off this measurement: campaigns below the brand's target NTB% get re-allocated toward upper-funnel placements (DSP awareness inventory, Sponsored Display NTB audiences). Campaigns above target hold steady. Campaigns dramatically below target with no upper-funnel exposure are the strongest signal that the budget is being spent on existing customers who would have purchased anyway.

The natural follow-on is the per-ASIN NTB breakdown. The portfolio number tells you whether acquisition is happening. The ASIN-level number tells you which products are doing the work.

Why this NTB count matters

If your acquisition number is just "total buyers," you are not measuring acquisition.

Next up: the per-ASIN NTB gateway analysis, which ASINs are the front door for new-customer purchases, and how to find them in the path-to-conversion data.

Private beta

Run this workflow 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 this

tables
amazon_attributed_events_by_conversion_time
subscriptions
Amazon Marketing Cloud (AMC) instance access, Promoted ASIN ad-attributed purchase history
Lookback window
365 days (Amazon-managed)
API compatibility
AMC SQL (PrestoSQL-compatible subset)
Schema version
AMC schema effective 2026-05
Last verified
"2026-05-17T00:00:00.000Z"

What success and failure look like

resultinterpretation
NTB customers exceed total purchasersThe query is counting purchases instead of distinct users.
Weekly rerun changes old periodsThe workflow used traffic-time data instead of conversion-time data.
Final SELECT exposes user_idAMC privacy thresholds will block the output column.

Supporting payloads

Recurring NTB measurement run

Guardrails for a weekly Skill that runs the validated AMC query after the reporting window closes.

{"workflow":"amc_ntb_customer_count","table":"amazon_attributed_events_by_conversion_time","grain":"campaign","output":{"metrics":["users_that_purchased","ntb_users_that_purchased","ntb_users_percentage"]}}
Related reading

Keep exploring this topic

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

Start here
Path-to-conversion sankey

Upstream context — which campaigns contribute exposure before the NTB purchase.

Also useful
AMC custom attribution model selection

Adjacent topic — the four data sources and how attribution windows differ.

FAQ

Why does the NTB count from this AMC query differ from the Amazon Ads console NTB number?

The Ads console reports NTB for sponsored ads only. The AMC IQ reports NTB across every ad source in the AMC instance, including DSP. The two are not reconcilable line by line; they answer different questions.

What is the difference between new-to-brand customers and new-to-brand purchases?

Customers are distinct users; purchases are distinct orders. A single NTB customer with three orders counts as one NTB customer and three NTB purchases. The `New to brand customers` IQ uses the customer count; the adjacent `New to brand purchases` IQ uses the order count.

Why does AMC block user_id in my final SELECT?

`user_id` carries an aggregation threshold under AMC privacy safeguards. It is legal inside a CTE that aggregates it away (`COUNT(DISTINCT user_id)`) but cannot appear as a column in the query's final output.

Can I use amazon_attributed_events_by_traffic_time instead?

The query will run, but the traffic-time table extends the conversion window by up to 30 days after the query date range, so a recurring NTB report pinned to it produces a different number each run. Use conversion-time for any workflow you intend to run more than once.

What is the NTB lookback period in this IQ?

365 days. The lookback is Amazon-managed and not a parameter you can pass in. For a custom lookback (e.g. 1095 days), switch to the `amazon_retail_purchases` NTB gateway IQ, which requires retail-purchase data rather than ad-attributed data.

How do I count NTB customers if I only have pixel conversions?

This IQ requires promoted ASINs that resulted in ad-attributed purchases. Pixel-only advertisers should switch to the `amazon_retail_purchases` NTB gateway IQ or to the custom-attribution `conversions` data source.

Should NTB% be near 100% on a new product launch?

Usually yes. A brand-new product with no existing customer base will produce close to 100% NTB in the first month. A launch returning 30% NTB typically means existing brand customers are browsing the new ASIN — the brand-halo effect, not a failure.

Sources