Search-term mining that pays for itself (the 30-minute routine)
Published September 6, 2026
The 60-second version
- The query gap is where money leaks: what users typed versus what you bid on, widened by broad match and close variants.
- Sort by spend, negate by significance: junk dies instantly, adjacent terms only past ~2x target CPA with zero conversions.
- The fix: weekly harvest-negate-promote plus a monthly n-gram pass for systemic words like βjobsβ.
Your keyword says "running shoes". The customer typed "running shoes for flat feet under 3000", "best marathon shoes exhange offer", "nike running shoes first copy". One of those is your exact customer speaking their budget aloud; one is a bargain hunter; one wants counterfeits. All three clicked the same keyword, and only the search terms report tells you which.
The search terms report is customers describing their intent in their own words β free voice-of-customer data that also happens to control 10β30% of wasted Search spend. customers writing your brief for free The discipline is a 30-minute weekly routine: harvest, negate, promote. This post is that routine.
Every query gets a verdict
The Weekly Mining Loop
Data JourneyHarvest
Last 7β14 days of search terms with spend, conversions and value. Sort by spend descending β waste hides at the top.
Negate
Irrelevant, unprofitable and junk queries become negative keywords at the right level (ad group vs campaign vs list).
Promote
High-intent queries with conversions graduate to exact-match keywords with their own bids and landing pages.
A search term is what the user actually typed; the keyword is what you bid on. The gap between them β widened by broad match and close variants β is where money leaks and insight lives. Mining is the weekly reconciliation of the two.
Sort by spend, not by clicks. A term with 2 clicks that cost βΉ900 and converted zero outranks a 200-click curiosity that cost βΉ40. Waste is measured in rupees, and the top of the spend-sorted report is always embarrassing β that is how you know the routine is working.
Four buckets for every term
| Bucket | Signature | Action | Example |
|---|---|---|---|
| Junk | Zero intent overlap: jobs, free, DIY, competitor careers | Negative, campaign level | "nike showroom jobs", "running shoes free download" |
| Price-mismatch | Intent adjacent, economics impossible | Negative exact, or separate low-bid test | "first copy", "under 500" on a βΉ4,000 AOV store |
| Relevant but unproven | Good intent, spend below significance | Watchlist β revisit at 2x target CPA spend | "marathon shoes exchange offer" (βΉ300 spent, CPA βΉ600 target) |
| Proven winners | Conversions at or below target CPA | Promote to exact match with dedicated bid | "running shoes flat feet" (6 orders, βΉ410 CPA vs βΉ600 target) |
Two judgement rules:
- Significance before negation on intent-adjacent terms. Killing a term at βΉ150 spend against a βΉ600 CPA target destroys learning. Negate junk instantly (intent is certain); negate adjacent terms only past ~2x target CPA with zero conversions.
- Negative at the lowest effective level. Query wrong for one ad group β ad-group negative. Wrong for the product line β campaign negative. Universally wrong (jobs, free, porn-adjacent) β shared negative list applied everywhere. Level discipline prevents a good query starved in one place from being banned everywhere.
Negate junk
Zero intent overlap β jobs, free, DIY. Kill instantly at campaign level or a shared list. No significance test needed.
Hold adjacent
Intent-adjacent but unproven. Watchlist until ~2x target CPA with zero conversions β killing early destroys learning.
Promote winners
Conversions at or below target CPA graduate to exact match with their own bid and landing page.
The n-gram view
Row-by-row triage catches big waste; n-gram aggregation catches systemic waste β the word "free" appearing across 300 tiny terms that each look innocent:
One n-gram, βΉ38,000/month
From query to keyword
Negatives stop bleeding; promotions create growth. A proven query graduates when it clears ~3 conversions at target CPA:
- Add it as an exact-match keyword in the best-fit ad group (or a dedicated single-theme group for volume queries).
- Give it its own bid at observed CPA minus headroom β inherited ad-group bids misprice proven intent.
- Match the landing page to the query's specificity ("flat feet" winners deserve the stability-shoe collection, not the homepage).
- Add the query as an exact negative to the originating broad group so the new exact keyword β not the broad net β catches future matches.
The 30-Minute Weekly Routine
Process FlowPull spend-sorted terms, 14-day window
Matured enough to include lagged conversions, fresh enough to act on. Ten minutes, top of the spend column first.
Triage into four buckets
Junk negated instantly, adjacent held to the 2x-CPA significance rule, winners flagged for promotion.
Run the n-gram pass monthly
Systemic words the row review misses. Shared-list the universals, campaign-negate the vertical-specifics.
Promote and re-anchor
Exact-match graduates with own bids and landing pages. Review promotion performance the following week.
The 30-minute weekly routine do these in order β
- Pull spend-sorted terms first β 14-day window, top of the spend column; waste hides at the top.
- Negate junk instantly, hold the adjacent β significance gate at ~2x target CPA before killing intent-adjacent terms.
- Run the n-gram pass monthly β shared-list the universals like βjobsβ and βfreeβ.
- Promote winners with own bids β exact match, matched landing page, and an exact negative in the broad group.
Broad match without mining is a donation. The broader the match type, the wider the query gap, the more the account depends on this routine. Automating bidding while neglecting mining optimises efficiently toward the wrong queries β Smart Bidding learns from conversions, but it cannot negate "jobs".
Quick gut-check
One question on the judgement call that saves learning. significance before scissors!
A query with good intent spent βΉ300 against a βΉ600 CPA target, zero conversions. Negate it now?
Frequently Asked Questions
How is this different from just adding obvious negatives once?
Once is a snapshot; queries drift perpetually β new slang, new competitor names, new irrelevant trends attach to your keywords monthly. The weekly cadence exists because the query stream regenerates. One-time negation decays to zero value within a quarter.
Should Performance Max / AI campaigns get the same treatment?
The insight half, yes; the control half, partially. PMax search-term visibility is limited and negatives work through account-level lists β mine what is visible for the n-gram and landing-page insights, and push exclusions through the available controls rather than mourning keyword-level ones.
When does a query deserve its own campaign, not just a keyword?
When its economics or intent diverge enough to need different budgets, geos or creative: a high-volume winner that would be throttled inside a shared budget, or a distinct use-case ("wedding" vs "daily wear") that converts on different pages. Promotion is a ladder β keyword, then group, then campaign β climbed on evidence.
Summary & Next Steps
Search terms are customers narrating their intent; mining converts the narration into negatives (stop waste), n-gram lists (stop systemic waste) and exact-match promotions (scale proven intent) β weekly, spend-sorted, significance-gated.
- Use search terms triage as the highest-ROI recurring routine in Search.
- Use CPA significance rules so learning survives the negation pen.
- Use channel CAC to confirm mined savings compound into real acquisition cost.
Takeaways for your next report
- Search terms are customers narrating intent β mine the gap between typed queries and bid keywords weekly.
- Sort by spend, negate junk instantly, and hold intent-adjacent terms to the 2x-CPA significance rule.
- N-gram aggregation catches systemic waste that row-by-row triage can never surface.
- Promote proven queries to exact match with their own bids β and block them in the broad group.
Chinmay Raibagkar
About author βFounder of DataLens AI. He helps non-technical teams read their ad and database numbers with confidence β which number to trust, what to do next, and what to ignore.