Weekly
Find keywords spending with no conversions
Each week you get the keywords that cost money for a month without converting, and can have them paused.
- Runs
- Weekly
- Apps
- Google Ads
- AI
- Not needed
- Access
- read (read+write to pause)
Send this to your assistant
Create a ClickRuntime automation: every Monday, find Google Ads keywords that spent over $50 with no conversions in the last 30 days and email me the list.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A B2B software company has 600 keywords across its search campaigns. Over a quarter, about eighty of them spend a few dollars here and a few dollars there and never produce a trial signup. No single keyword looks alarming, so the list keeps growing. Added together the spend is real money, and nobody has time to sort the account by cost and filter for zero conversions each week.
Each week, ClickRuntime queries the keyword view in Google Ads, finds keywords that spent above your threshold with zero conversions over the window, and emails the list. If you want, it can go a step further and set those keywords to paused in the account.
Some people choose the list-only version for the first month, then switch to pausing once they trust the filter.
What you get out of it
Slow leaks get plugged
Many small losers add up to a meaningful monthly sum. Weekly detection means each one is dealt with after a few dollars, not after a full quarter of spend. Catching them early matters most for accounts that add keywords regularly.
Budget moves to keywords that work
Pausing zero-converters frees daily budget for the terms that do produce signups. The same spend buys more conversions, without needing a bigger overall budget. Every dollar saved on dead keywords becomes available for the winners the same week, with no change to the overall budget.
Pausing is reversible
Paused keywords keep their history and can be turned back on. That makes the automatic option low risk compared with deleting, since you can restore a keyword if it turns out to be seasonal.
A consistent standard across accounts
A written rule such as "over $50, no conversions in 30 days" is applied the same way every week. Decisions stop depending on who happened to review the account or how tired they were.
Cleaner data for future decisions
A tighter keyword list makes campaign reports easier to read. Your review time shifts from clearing out noise to testing new ideas, which is where growth comes from. It also makes handoffs to a new account manager much easier.
How it works
What happens, step by step
Every week, ClickRuntime looks at your Google Ads keywords over the last 30 days.
It picks out the ones that cost money but brought no conversions.
If you have turned on pausing, it pauses those keywords in Google Ads for you.
You get an email listing each keyword, its ad group and how much it spent.
Before it runs live
- Connect Google Ads
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Google Ads steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
CUSTOMER_ID = "1234567890"
def gaql(query):
headers = {"Authorization": f"Bearer {credentials.connection('google', 'ads')}",
"developer-token": credentials.secret("GOOGLE_ADS_DEVELOPER_TOKEN")}
batches = http.post(f"https://googleads.googleapis.com/v21/customers/{CUSTOMER_ID}/googleAds:searchStream",
headers=headers, json={"query": query}).json()
return [row for b in batches for row in b.get("results", [])]
MIN_COST = 50
PAUSE = False # set True to pause them automatically
@on_trigger
def run(event):
rows = gaql("SELECT ad_group_criterion.resource_name, ad_group_criterion.keyword.text, campaign.name, "
"metrics.cost_micros, metrics.conversions FROM keyword_view "
"WHERE segments.date DURING LAST_30_DAYS AND ad_group_criterion.status = 'ENABLED'")
waste = [r for r in rows if float(r["metrics"].get("conversions", 0)) == 0
and int(r["metrics"].get("costMicros", 0)) / 1e6 >= MIN_COST]
if not waste:
return {"keywords": 0}
if PAUSE:
http.post(f"https://googleads.googleapis.com/v21/customers/{CUSTOMER_ID}/adGroupCriteria:mutate",
headers={"Authorization": f"Bearer {credentials.connection('google', 'ads')}",
"developer-token": credentials.secret("GOOGLE_ADS_DEVELOPER_TOKEN")},
json={"operations": [{"update": {"resourceName": r["adGroupCriterion"]["resourceName"], "status": "PAUSED"},
"updateMask": "status"} for r in waste]})
lines = [f"{r['adGroupCriterion']['keyword']['text']} ({r['campaign']['name']}): ${int(r['metrics']['costMicros']) / 1e6:,.2f}" for r in waste]
notify.email_me(f"{len(waste)} keywords with no conversions in 30 days" + (" (paused)" if PAUSE else ""), "\n".join(lines))
return {"keywords": len(waste), "paused": PAUSE}FAQ
Common questions
What threshold should I use before a keyword is flagged?
Will it pause brand keywords that rarely convert?
How are conversions with long delays handled?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get last week's results per campaign
Every Monday you see spend, clicks, conversions and cost per conversion for each campaign.
See how it worksCatch campaigns that overspend
You get an email when a campaign spent far more yesterday than it usually does.
See how it worksList search terms that waste budget
A weekly email shows the search terms that spent money and brought no conversions.
See how it worksKeep exploring
Set up “Find keywords spending with no conversions” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.