Skip to content

Analyze where shoppers drop off from search to purchase (SQP)

On this page you find which stage of the journey — from a shopper searching on Amazon to making a purchase — is weakest, broken down by product × search term. You can see where you’re losing shoppers across the funnel — searched and shown → clicked → added to cart → purchased — so you can tie the findings back to improving your ads or product pages.

Whereas Analyze high-performing search patterns with N-grams uses ad data to look at efficiency inside your own ads, this page analyzes the search behavior of all Amazon shoppers (the whole market).

ItemDetails
What you can doList, for each product × search term, which stage from search to purchase is the bottleneck, and find the ones with the most room to grow (opportunity score)
Applies toWhole-market search data (SQP data derived from Amazon Brand Analytics). It reveals the search behavior of all Amazon users, not your own ad performance
Data & connection neededProducts that already have SQP data imported (on a connected account, with SQP available for the target products)
ScopeRead-only (analysis only). The prompts on this page only list the state of the funnel; they don’t change or record any ad settings or product pages
  • You want to find, by product × search term, which stage from search to purchase is weakest
  • You want to pinpoint bottlenecks such as being shown but not clicked, or added to cart but not purchased
  • You want to know, as a priority, which search terms have the most room to grow (opportunity score)
  • You want to check how the search funnel moves month to month due to seasonal factors and medium-to-long-term trends
  • You want to confirm, before building the end-of-month report, that the data needed for the contribution slide is already in place
  • Whether SQP data exists … products that don’t have SQP data imported can’t be analyzed. Only products with data already fetched are eligible.
  • How to specify the target product … specify a product by ASIN (e.g. B0XXXXXXXX) or internal ID (the management ID of a product registered in Picaro). Decide in advance which number you’ll use, so you don’t mix them up.
  • The period you can fetch … Amazon’s report finalization has a lag of several days, so the current latest week and latest month aren’t usable yet. The last week / last month in the list of available periods is the finalized period.
  • When data first became available … the SQP data start date differs by product. First check the list of available periods, then pick the target period.
GoalWhat you getChangesPrompt
Find the search-funnel weak spot (bottleneck) for each productA list of opportunity scores and bottleneck classifications by product × search termNo changePrompt 1
Check how the search funnel moves month to monthA list of monthly opportunity scores, bottlenecks, and change vs. the previous monthNo changePrompt 2
Confirm contribution data is ready before building a reportA verdict on whether the data exists, row counts, anonymization rate, and fallback availabilityNo changePrompt 3

Prompt 1: Find the search-funnel weak spot for each product

Section titled “Prompt 1: Find the search-funnel weak spot for each product”

After confirming the SQP-eligible products and their available periods in order, compute the opportunity score and bottleneck for each stage from search to purchase, by product × search term.

When to use — when you want to work out which search term is losing shoppers at which stage (impression / click / cart add / purchase).

What you need — nothing in particular (the AI proposes the target product and period for you to choose from). The number of rows to show (top 30 in the example).

I want to run an SQP analysis. Follow these steps:
1. List the candidate products that have SQP data and pick one target product
- The crawl_status returned in that list does not indicate whether SQP data exists. Treat products as eligible regardless of its value
2. Fetch the available weekly periods for the target product
3. Decide the most recent finalized week
- Take the last week in the list as the candidate, run one other product for the same week, and check that your own impressions have not dropped by an order of magnitude
- If only the target product is extremely small, state explicitly which it is — "a real drop in exposure" or "data not yet finalized" (do not fill the gap with a guess)
4. For that finalized week, run a funnel analysis (impressions → clicks → cart adds → purchases) on the top 30,
and return the opportunity score and bottleneck classification
- Reconcile the total count against the fetched count and state the coverage rate
- Distinguish rows whose own value is 0 as "measured 0", not as "not retrieved"
Exclude from the aggregation:
- Amazon's aggregated placeholder queries (terms that point to no specific product, such as "non-branded goods")
- Queries whose search volume is below {{MIN_SEARCH_VOLUME (e.g. 1000)}} (the base is too small, so the opportunity score is unstable)
Classification criteria (assign every bottleneck category that is returned; if it does not fit into two categories, report it under the returned category name):
- Exposure gap (exposure_gap) → consider bid / budget / placement adjustments
- Click gap (click_gap) → move on to a cause analysis on the search-term / creative side
- Cart gap (cart_gap) → move on to a cause analysis of the product page (price, images, reviews, variations)
- Purchase gap (purchase_gap) → check price competitiveness, inventory, and delivery terms
- Defend (defend) → hold as is. Record it as something to monitor and not to cut bids on
Finally, output these four things.
1. Data premises — the target product, the target week, the total count / fetched count and coverage rate, the number of excluded queries, and the basis for judging the finalized week
2. Recommended actions — for the top 3 opportunity scores after exclusions, the approach (expand exposure / improve CVR / improve the product page / hold as is) together with the target and the reason (which funnel stage is dropping)
3. How to execute — reflect exposure expansion as a bid change only after the user has reviewed and approved the proposal. Hand CVR improvement over to N-gram analysis
4. Measurement — re-run on {{EVALUATION_DATE (e.g. 4 weeks later)}} for the same product under the same conditions, and check whether the bottleneck category improved and how your own impression share changed

What you can change — the number of rows (e.g. top 30) / the target product / the target week.

What you get back — a table that lists, for each product × search term, the opportunity score × your own purchase share × bottleneck classification (low impressions / low click-through rate / low cart-add rate / low purchase rate).

Changes — analysis only. Does not change ad settings or records.

Next steps — for terms with a high opportunity score, consider raising bids through the approval flow in Adjust bids. If you want to cross-check against the search patterns inside your own ads, use Analyze high-performing search patterns with N-grams.


Prompt 2: Check how the search funnel moves month to month

Section titled “Prompt 2: Check how the search funnel moves month to month”

Over a longer span than weekly, capture how a product’s search funnel moves with seasonal factors and medium-to-long-term trends, on a monthly basis.

When to use — when you want to confirm, from the month-to-month trend, whether a search-funnel weak spot is temporary or an ongoing tendency.

What you need — the target product (ASIN or internal ID). The number of rows to show (top 30 in the example).

For product {{TARGET_PRODUCT (e.g. B0XXXXXXXX)}}, run an SQP trend analysis by month.
Steps:
1. Identify the product_id for the target ASIN from the product candidate list (SQP analysis requires product_id, not the ASIN).
2. Check the available monthly periods. If the latest candidate month is the month that contains the run date (a month in progress), use the one before it as "the latest finalized month". If the monthly candidates are non-contiguous (a month is missing), state that.
3. Fall back to weekly (the most recent 12 weeks) only when there is less than 2 months of monthly data, and state that you did.
4. Fetch two months: the latest finalized month and the month before it. **Fetch the top 100 and show the top 30 in the report** (narrowing the fetch drops the previous month's baseline and increases the number of queries for which no month-over-month change can be computed).
5. For the latest finalized month, return the opportunity score and bottleneck classification.
6. Reconcile the two months query by query and compute the month-over-month change in Impression Share (difference in points) yourself.
How to handle the data (required):
- The ChangeBps fields in the response (ctrChangeBps / atcChangeBps / cvrChangeBps) are the gap of "your own ASIN value − the whole-market value"; they are **not a month-over-month change**. Do not use them as one. Impression Share has no difference field, so compute it yourself from the two months.
- State "cannot be judged" for queries that do not exist in the previous month's data. **Do not treat them as 0 or as "no deterioration".**
- Amazon's aggregated placeholders such as "non-branded goods" are not actionable search terms, so exclude them from the action list (even when their opportunity score is at the top).
- Also include the month-over-month change in whole-market search volume and impressions, so you can distinguish whether a drop in Impression Share is "dilution from market growth" or "an absolute drop in your own exposure".
Classification criteria:
- Bottleneck is "exposure gap" → flag it explicitly as a candidate for bid / budget adjustment
- Impression Share deteriorated month over month by more than {{DEGRADATION_THRESHOLD (e.g. -1pt)}} → "needs action"
Finally, output these three things.
1. Recommended actions — for "needs action" cases, give the target and the reason for expanding exposure (bid / budget adjustment). As a guardrail, also check the month-over-month change in CVR (the CVR of your own ASIN) and, where CVR is deteriorating, state the condition for limiting the targets to the highest priority ones or for holding off on an increase
2. How to execute — reflect the proposal as a bid change only after the user has reviewed and approved it, or hand it over to N-gram analysis if CVR improvement is what is needed (this prompt is analysis only and does not change bids or budgets)
3. Measurement — re-run the same analysis on {{EVALUATION_DATE (e.g. next month)}} and check the change in Impression Share (the primary KPI), CVR (the guardrail KPI), and the bottleneck category

What you can change — the target product (specified by ASIN or internal ID) / the number of rows (e.g. top 30) / the target month.

What you get back — a table that lists, for each monthly search term, the opportunity score × your own purchase share × bottleneck × change vs. the previous month.

Changes — analysis only. Does not change ad settings or records.

Next steps — for terms where you’ve confirmed a trend, consider how to respond through the approval flows in Adjust bids or Add negative keywords.


Prompt 3: Confirm contribution data is ready before building a report

Section titled “Prompt 3: Confirm contribution data is ready before building a report”

Before generating the end-of-month report, run a lightweight check that confirms the SQP and ad data needed for the contribution slide is in place.

When to use — when you want to confirm, before spending time on report generation, that there’s enough data for the target period and that anonymization hasn’t thinned it out.

What you need — the target period and the comparison period (the current and previous month in the example).

Run a contribution data precheck for period {{TARGET_PERIOD (e.g. 2026-04-01 to 2026-04-30)}} and
comparison period {{COMPARISON_PERIOD (e.g. 2026-03-01 to 2026-03-31)}}. The purpose is to judge
"is there enough data" before running the real contribution analysis and report generation, so
always report these three states separately.
A) Data present (analysis possible)
B) No data (measured zero)
C) Could not retrieve (timeout / page cut-off / not imported)
Steps:
1. Check the import state of the target and comparison periods with get_data_ingestion_status.
List, date by date, the dates whose rollup_status is fully_missed / partially_missed / in_progress,
and the dates that are out_of_range. For a period that contains unfinalized days, state that it
"contains unfinalized days", and say so as well if you excluded them.
★ rollup_status can return no_data even when most reports are completed
(one report type with no delivery drops the whole day to no_data).
Do not conclude from rollup_status alone that a day has no data; look at the status of each
report and give "completed reports / total reports" together with the names of the reports
that were not retrieved.
2. Run precheck_contribution_data (specify max_pages explicitly).
★ The rows in the response is "the number of sample rows fetched", not the size of the population.
If rows equals max_pages x 200 it has been cut off, so report it as
"rows = number of sampled rows (cut off)",
and do not judge whether data exists from how large or small rows is.
★ If totalImpressions is 0, judge it as no data (B) no matter how many rows there are.
3. Get the total size of the population from total_results /
search_term_total_pages_available / search_term_fetch_truncated of list_search_term_performance
and from total_items of analyze_search_term_contribution, and always present it in the form
"sample count / population total (coverage %)".
4. Compute the share of anonymized search terms as rowsWithoutSearchTerm / rows, and state that it is
"a sample-based lower-bound estimate of the population"
(because the sample is ordered by descending contribution, the actual anonymization rate of the
population is higher than this). Add that the value moves when you change max_pages.
If this lower-bound estimate exceeds {{THRESHOLD (e.g. 50%)}}, it is certain to be higher still in
the population, so you may judge "insufficient data" at that point. If it does not exceed it, write
"below the threshold (but, being a lower-bound estimate, it may exceed it in the population)", and
do not use being below the threshold as the justification for continuing the analysis.
5. Based on the measured values above, state whether fallback data (aggregation by label, etc.) can
fill the gap.
Verdict and handover:
- For B or C, state "insufficient data" and show, date by date, what is missing, for which period, and
in which state (B or C), then present whether fallback data can substitute for it.
Do not write "there is no data" for case C.
- Only for A, output a handover summary that can be passed to the next prompt
{{NEXT_PROMPT (e.g. the prompt that generates the report)}}, containing the target period,
the comparison period, the coverage rate, the anonymization rate (lower-bound estimate), and the
dates you excluded.

What you can change — the target period / the comparison period.

What you get back — whether the data exists × the row counts for each period × the anonymization rate × whether fallback data can fill any gaps, plus one of the following three verdicts.

  • Ready … the report can be generated as is.
  • Needs confirmation … generation is possible, but you need to watch the anonymization rate or data volume.
  • Blocked … there isn’t enough data to generate the report.

Changes — analysis only. Does not change ad settings or records.

Next steps — if the verdict is “Ready,” proceed to Generate a report. If it’s “Blocked,” widen the target period, or fall back to the alternatives in Prompt 2 to match a period where data is available.