A Search Term Report is the only place in Sponsored Products where you see what shoppers actually typed. Every other report β campaign, ad group, even "keyword performance" β aggregates spend under the keyword you bid on, not the query that triggered the ad. An agent that never opens the Search Term Report is optimizing blind: it can raise or lower a keyword's bid, but it can't see which specific queries under that keyword are burning budget with zero return.
What a Search Term Report actually contains
Each row has two distinct identity columns, and confusing them is the single most common mistake an agent makes when auditing PPC:
| Column | What it means |
|---|---|
Targeting (the keyword) | The keyword you bid on. E.g. broad match dog nail clippers. |
Customer Search Term | The literal query the shopper typed, which Amazon's matching engine mapped to your keyword. E.g. cat nail clippers, dog grooming kit, nail clippers for large dogs. |
Under exact match the two columns are nearly identical. Under broad and phrase match they diverge β sometimes wildly. One broad-match keyword can pull in dozens of distinct search terms, each with its own clicks, spend, and conversion rate, all rolled up into that keyword's aggregate numbers everywhere else in Sponsored Products.
Business β why the gap matters. The keyword is what you control (bid, match type, on/off). The search term is what actually costs money. A keyword can show an acceptable blended ACOS while quietly containing one search term that converts well and three that never convert β the winners subsidize the losers, and nothing above the Search Term Report shows that split. Auditing at the keyword level tells you which knob to turn; auditing at the search-term level tells you which specific queries to cut off.
Technical β pull the report at the right grain. Request it via Amazon Ads reporting (the sp-search-term report type, or the CSV export under Sponsored Products β Search term). Pull it at the search-term grain, not pre-aggregated by keyword β you need one row per (campaign, ad group, keyword, search term) with its own Clicks, Spend, Sales, and Orders. Anything coarser throws away the signal you're looking for.
ACOS per search term, not per account
ACOS (Advertising Cost of Sales) is:
ACOS = ad spend / ad-attributed sales
A 30% ACOS means $30 in ad spend produced $100 in ad-attributed sales. The breakeven ACOS for a product is roughly its gross margin percentage β spend more than that on ads relative to sales and the ad is destroying the unit's profit (ignoring organic halo effects).
Business β why aggregate ACOS lies. A campaign or even a single keyword can report a healthy 25% ACOS while masking one search term running at 140% underneath it, because high-converting terms pull the average down. Optimizing off the aggregate leaves loss-making terms untouched indefinitely β they're invisible until disaggregated.
Technical β compute it per row.
term_acos = spend / attributed_sales // undefined ("infinite waste") when attributed_sales == 0
Sort by spend descending, then flag any row where term_acos is undefined or exceeds the product's breakeven ACOS by a wide margin (a common starting threshold is 1.5β2x breakeven). Those flagged rows are the audit queue β search terms, not keywords.
The negative-exact-match rule of thumb
Add a search term as a negative exact match once it has accumulated at least N clicks with zero orders, where N is high enough that "no conversions yet" isn't just noise. Most accounts use a flat threshold like 10β15 zero-conversion clicks, scaled down for expensive-click categories and up for cheap-click ones.
A second, independent trigger: ACOS far above breakeven even with a conversion β e.g. one order at 4x the product's breakeven ACOS on meaningful spend. Zero-conversion terms are the clean case; converting-but-expensive terms need the bid-vs-kill judgment call below.
Add negatives at the ad group level by default (blocks only that ad group). Reserve campaign-level negatives for terms you never want associated with the product under any keyword β a competitor's brand name, for example.
Kill vs. lower the bid vs. leave it alone
Not every flagged term should become a negative. Route each into one of three buckets:
| Decision | When to apply it | Mechanism |
|---|---|---|
| Kill (negative exact) | Zero conversions past the click threshold, and not a branded or high-intent variant. No path to profitability. | Negative exact match, ad group level (default) or campaign level. |
| Lower the bid | Converts, but ACOS is above breakeven only because the CPC is too high for its conversion rate β demand is real. | Lower the bid, or split the term into its own exact-match keyword with its own bid. |
| Leave it β branded defense | Contains your own brand name or a near-exact variant; ACOS looks bad only because you're defending a search you'd otherwise lose to a competitor's ad. | No action, or accept a higher ACOS ceiling for branded terms specifically. |
Business β why the split matters. Treating every high-ACOS term as a kill candidate throws away recoverable spend and can strip branded defense that exists precisely to keep competitors off your own listing. Treating every high-ACOS term as a bid problem lets true dead weight bleed budget indefinitely β zero conversions after enough clicks isn't underpriced, it's simply not converting, and no bid cut fixes that.
Technical β separating branded programmatically. Match the search term against known brand names and common variants/misspellings (a substring or fuzzy match is usually enough). Anything matching routes to branded-defense regardless of ACOS. Everything else goes through the zero-conversion-click check first (β kill), then the above-breakeven-with-conversions check (β lower bid or split out).
Worked example
Assume a product with a 35% breakeven ACOS. Pulling the report for one ad group with one broad-match keyword, dog nail clippers:
| Search Term | Clicks | Spend | Orders | Sales | ACOS | Decision |
|---|---|---|---|---|---|---|
| dog nail clippers | 84 | $46.20 | 9 | $224.10 | 21% | Leave β profitable |
| nail clippers for dogs | 51 | $28.05 | 4 | $99.60 | 28% | Leave β within breakeven |
| cat nail clippers | 22 | $12.10 | 0 | $0.00 | β | Kill β 22 clicks, zero orders |
| AcmeGear nail clippers | 15 | $8.25 | 3 | $89.97 | 9% | Leave β branded defense |
| dog grooming kit | 19 | $10.45 | 0 | $0.00 | β | Kill β past zero-conversion threshold |
| large breed nail clippers | 12 | $18.00 | 1 | $24.99 | 72% | Lower bid / split out β real demand, CPC too high |
The ad group's blended ACOS across all six rows is ~30% β inside breakeven, so an agent looking only at that number would leave everything alone. Disaggregated, two dead terms (cat nail clippers, dog grooming kit) together spent $22.55 for zero sales; one term is real but mispriced (large breed nail clippers at 72% against a 35% target); one branded term exists to defend the listing, not to hit a raw ACOS target.
Action: add cat nail clippers and dog grooming kit as ad-group-level negative exact matches. Break large breed nail clippers out into its own exact-match keyword with a bid low enough to hit 35% ACOS at its current conversion rate β you can't set a per-search-term bid while it rides under a broad match. Leave the other three rows untouched.
Common pitfalls
- Auditing at the keyword level only. A keyword's aggregate ACOS can look fine while individual search terms underneath are pure waste β disaggregate before deciding.
- Killing a term after too few clicks. Two or three zero-order clicks is noise, not signal. Wait for the threshold.
- Applying the same ACOS bar to branded terms. Branded terms serve a defensive purpose separate from ad-driven profit; judging them like any other term pulls defense right when a competitor is most likely to take the click.
- Defaulting to campaign-level negatives. This blocks the term for every ad group in the campaign, including ones where it might convert. Default to ad-group level.
- Conflating "lower the bid" with "add as negative." A converting-but-overpriced term needs a lower bid or its own keyword; a zero-conversion term needs to be shut off entirely. Swapping them either wastes more spend or throws away recoverable demand.