Skip to content
<- Guides
AMC · Audiences

Re-Engage Lapsed AMC Loyalists

The 180-day lookback only works when EXTEND_TIME_WINDOW opens the audience editor.

Build a lapsed-loyalist AMC audience with EXTEND_TIME_WINDOW, non-ad-exposed filters, and the activation-size checks DSP needs before launch.

Kuudo
Reviewed by Kuudo Engineering
Reactivation audiences need the lookback, the organic filter, and the floor check together.
TL;DR

A lapsed-loyalist audience should use conversions_all_for_audiences, EXTEND_TIME_WINDOW(..., 'P180D', 'P0D'), and exposure_type = 'non-ad-exposed' to find organic repeat buyers who went quiet. Size the seed before activation because this workflow has a 2,000-user floor. If the audience is undersized, relax the purchase count before extending the lookback.

The Slack message landed during a retention review: "We have customers who bought from us three or more times last year, and we haven't heard from them in 90 days. Can we get them into a demand-side platform (DSP) campaign before they churn for good?"

It sounds like a five-minute audience build. In practice the trap is in the tables, the lookback, and the size floor. Amazon Marketing Cloud (AMC) Audiences uses a different set of tables than the main query editor. The lookback you actually want is a 180-day rolling window, not a calendar quarter. The audience won't activate at all if it resolves to fewer than 2,000 distinct users, and you find that out only after pushing it. So I asked our agent, which has Amazon Agent Atlas behind it. Here is what came back.

What a model without Atlas gets wrong

I ran the same prompt through a frontier model with no retrieval. The response looked workable. It wasn't.

Every one of these would have produced a query that runs without complaint and an audience that never activates. The combination would have eaten a week of debugging.

What Atlas retrieves

When the agent gets the question, it does a semantic search across the amazon_ads collection and pulls a handful of chunks before writing any SQL:

  • The Flexible Shopping Insights Trial Guide, section 4.2 "Engage lapsed customers": the canonical AMC template for exactly this workflow, complete with the EXTEND_TIME_WINDOW lookback, the conv_cnt > 2 filter on repeat purchases, and the BUILT_IN_PARAMETER('TIME_WINDOW_START') exclusion that defines "haven't bought recently."
  • The AMC Audiences table-variant rule, indexed from "Creating an Audience for Wishlist or Registry Additions": why conversions_all_for_audiences is the only table that permits SELECT user_id, and the suffix pattern that distinguishes Audiences-editor tables from main-editor tables.
  • The Engage non-ad-exposed audience section of the same FSI Trial Guide: the sister query in section 4.1 that establishes the count(user_id) sizing trick, run in the main editor against the un-suffixed table, before any audience is pushed.
  • The Introduction to AMC Lookalike Audiences playbook: the downstream activation path if the seed turns out to be too small to use directly, with the 500-to-500,000 lookalike seed constraint and the model-expansion behavior.

Atlas doesn't generate the SQL. It surfaces the playbook with its constraints intact, and the agent adapts the template to the operator's hero ASINs and window.

The agent's output

Here is the audience query the agent produced. It pastes directly into the AMC Audiences query editor, uses the 180-day extended window, and filters to customers with three or more organic purchases who have gone silent inside the current analysis window:

-- Audience Instructional Query: Re-engage lapsed three-time buyers
-- Source: AMC FSI Trial Guide, section 4.2 "Engage lapsed customers"
-- Run in: AMC Audiences query editor (not the main editor)
-- Table:  conversions_all_for_audiences (_for_audiences variant required)

WITH purchase AS (
  -- Count distinct organic conversions per user over the trailing 180 days,
  -- and capture each user's most recent purchase date.
  SELECT
    user_id,
    COUNT(DISTINCT conversion_id) AS conv_cnt,
    MAX(event_date_utc)           AS event_max
  FROM TABLE(EXTEND_TIME_WINDOW('conversions_all_for_audiences', 'P180D', 'P0D'))
  WHERE event_subtype = 'order'
    AND exposure_type = 'non-ad-exposed'
    AND user_id IS NOT NULL
  GROUP BY user_id
),
multiple_purchase AS (
  -- Keep only the customers with three or more organic orders in the lookback.
  SELECT user_id, event_max
  FROM purchase
  WHERE conv_cnt > 2
)
-- Final seed: three-plus buyers whose most recent order predates the analysis
-- window. With a 90-day window, that means no purchase in the last 90 days.
SELECT user_id
FROM multiple_purchase
WHERE user_id NOT IN (
  SELECT user_id
  FROM multiple_purchase
  WHERE event_max > BUILT_IN_PARAMETER('TIME_WINDOW_START')
)

Three things to notice about what the agent chose to do. First, the lookback uses EXTEND_TIME_WINDOW('conversions_all_for_audiences', 'P180D', 'P0D'), not a hand-rolled date filter. Inside the AMC Audiences editor, the default analysis window is shorter than the 180 days this audience needs, and EXTEND_TIME_WINDOW is the only mechanism that opens it. The P180D is an ISO-8601 duration; P0D means the window ends at the current analysis-window boundary. The agent inherited this directly from the FSI playbook.

The exposure_type = 'non-ad-exposed' filter is the entire point of the audience. The retention lead wanted organic loyalists, the customers who came back without seeing ads, because those are the ones whose silence is a churn signal rather than ad fatigue. Without the filter, the seed is contaminated with customers you've already retargeted, and the DSP campaign you build from it overlaps with campaigns you're already running.

Finally, the lapsed condition is expressed as a NOT IN against the same multiple_purchase CTE, gated on BUILT_IN_PARAMETER('TIME_WINDOW_START'). That parameter resolves to the start of the analysis window the operator sets in the editor, so a 90-day analysis window automatically defines "lapsed" as "no order in the last 90 days." Change the window in the editor, and the lapsed definition shifts with it. No code edits required.

The footnotes the agent surfaced unprompted

This is the part that separates a retrieval-grounded response from a fluent guess. Without being asked, the agent attached a short list of things the retention lead needed to know but didn't think to ask about:

Any one of these would have cost the operator a half-day to discover. The compounding effect is why this kind of audience normally takes a week to ship and not an afternoon.

What happens next

Once the seed sizes above 2,000 users, the agent flips into activation mode and routes the audience through the standard AMC Audiences-to-DSP path: paste the query into the Audiences editor, push it to a named audience, wait for the activation window to close, and verify the audience appears as targetable in Amazon DSP. If the seed comes back undersized even after both relaxations, the agent recommends pivoting to AMC Lookalike Audiences, using the lapsed loyalists as a seed (even a small one) and letting the lookalike model expand it. That path uses the same workflow we walked through for cart abandoners, but with the loyalist seed in place of the cart-abandoner seed and a 500-to-500,000 lookalike size band instead of the 2,000-user activation floor. Either way, the agent doesn't stop at SQL: it carries the audience to the activation handoff and tells you which path it took and why.

The full workflow runs through the Amazon Agent Data layer: Amazon Ads MCP brings AMC and DSP signals, the Selling Partner MCP can add catalog context, Atlas grounds the lapsed-loyalist rules, and Skills keep the reengagement audience on a reviewed refresh cadence.

Why this matters

The lapsed-loyalist workflow is the kind of audience build that is easy to ask for, hard to ship, and impossible to debug after the fact. The query has to use the right table variant, the right time-window construct, the right exposure filter, and the right size floor; miss any one of them and the audience either fails to compile, fails to activate, or activates against the wrong population. None of this is exotic knowledge, but it lives in four different sections of two different playbooks, and a model without retrieval has to guess at all of it.

If your retention agents are guessing at AMC Audiences, they don't have to be.


Part of an ongoing series on how agents grounded in Amazon Agent Atlas approach real AMC workflows. Next: turning a too-small loyalist seed into an activated audience through AMC Lookalike Audiences, and the rules the lookalike model uses to expand a seed without diluting it.

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
conversions_all_for_audiences, conversions_all
subscriptions
Amazon Marketing Cloud instance access, AMC Audiences access, Flexible Shopping Insights for exposure_type
Lookback window
180 days extended lookback; current analysis window defines lapsed period
API compatibility
AMC Audiences SQL and Amazon DSP activation
Schema version
FSI lapsed-customer playbook current to 2026-05
Last verified
"2026-05-11T00:00:00.000Z"

What success and failure look like

resultinterpretation
Seed under 2,000 usersAudience can compile but will not activate to DSP.
No rows with non-ad-exposedFlexible Shopping Insights may not be enabled.
180-day lookback matches only current windowThe query used a date filter instead of EXTEND_TIME_WINDOW.

Supporting payloads

Lapsed loyalist activation

Guardrails for routing a repeat-buyer seed to DSP.

{"workflow":"amc_lapsed_loyalist_reengagement","min_seed_size":2000,"primary_relaxation":"conv_cnt_greater_than_1","secondary_relaxation":"extend_lookback_to_270_days"}
Related reading

Keep exploring this topic

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

FAQ

Which table should a lapsed loyalist AMC audience use?

Use `conversions_all_for_audiences` in the AMC Audiences editor because the final output returns `user_id`.

Why does my 180-day lookback not reach 180 days?

A hand-written date filter can be truncated by the Audiences editor window. Use `EXTEND_TIME_WINDOW('conversions_all_for_audiences', 'P180D', 'P0D')`.

Why did my lapsed loyalist audience fail to activate?

The common causes are a seed below 2,000 users, a query ending on a comment line, or missing Flexible Shopping Insights data for the `non-ad-exposed` filter.

Why filter for non-ad-exposed customers?

The workflow is trying to find organic loyalists who went quiet, not customers already being retargeted by current ads.

How should I relax an undersized lapsed audience?

First change the repeat-purchase filter from more than two orders to more than one order. If it is still undersized, extend the lookback from 180 to 270 days.

When should I switch to a lookalike audience?

If the direct lapsed-loyalist seed remains too small after documented relaxations, use it as a lookalike seed instead of forcing direct activation.

Sources