Checked = include in the results. The equivalent of the "Added/Excluded" column in Google Ads
Added: Exists as a keyword
Excluded: Exists as a negative keyword
Have you dined with us before?
In the not-too-distant past, you decided which search terms your ads appeared for. Now Google decides. It's based on the data you provide (landing pages, a shopping feed, keywords, etc.) but we've lost a lot of control.
We've also lost visibility. By some estimates, between 20% and 80% of search terms are hidden so we can't see what we're spending money on.
This script allows you to add a variation on Positive Keywords. You add the words or phrases you want to target. Everything else gets excluded.
Our Frankie when she was a pup
Dynamic Search Ads (DSAs), Shopping Ads, Performance Max and other campaign types are supported.
There was a point when Google nailed keywords.
You could target what you asked for but it would still be clever enough to show ads for mispellings, typos, etc.
That's what I've tried to replicate here. Full control, without throwing the baby out with the bathwater.
It's achieved via an Approx. Match setting. If you want to target "banksy" but the search term contains "banksie", the approx. match won't add the search term as a negative keyword (which is usually what we want!).
The positive keywords helper lets you see the result of your positive keywords without running the script. Just add some examples (good and bad search terms) and you'll see what would be added as a negative keyword.
This functionality is perfect for brand campaigns, or anywhere where you want stricter matching.
Positive keyword functionality, annotated.
Setup custom rules based on search term performance. Use the tool for positive and negative keyword suggestions, or to alert you when things go awry. Some examples include:
Get an email when CPCs exceed a certain threshold. For this, I'd set the lookback window to 0 (which targets today) then run the script hourly. Note you'll get a maximum of one email per day (per rule) so don't worry about inbox overload!
Here's a simple one. For the click amount, I'd say your conversion rate * 200 is a good start for an urgent/semi-urgent alert. Of course, you can setup multiple rules checking multiple lookback windows and click numbers.
That's low ROAS for ecom, or high CPA for lead gen. These could be contenders as negative keywords or, more likely, opportunities to improve landing pages, etc.
High impression, low Ctr search terms can be a sign the advert isn't relevant to the search.
Key search term metrics at account, campaign or ad group level
The results of each rule are written to a Google Sheet along with KPIs such as ROAS and CPA.
Use the tool to setup reports across different lookback windows, with different filters, etc.
Why review each individual search term when AI can do it for you?
Pass each search term into your custom prompt. You can also add variables to your prompt such as {{keywords}} in order to provide greater context. Sound confusing? I've put together an explanation and some example prompts in a Google Doc.
The sky's the limit, but here's a few things you can do:
Positive Keywords (see above) are great for finding and adding exact match negative keywords. However, they can't cover everything.
Ask AI to find broad match words and phrases from your search terms and they'll be added to the output sheet (see the AI Prompt Response column).
Ask AI to determine whether the search term is relevant to the business based on the keywords, campaign and ad group name. Any responses which are not "relevant" can be auto negated and will be added to your report.
LLMs are good at spotting location names in search terms and deciding if its relevant to the location you serve. This is great for finding broad match negatives for location-specific businesses like plumbers.
Ask the AI if the search term is relevant, but perhaps should be in another Ad Group.
ChatGPT, Gemini and Claude are all supported. There's info on grabbing API keys within the template Google Sheet.
Once you have your API key, paste it in the the Google Sheet where it will be secure.
A link to each rule is included in the output sheet, but I'd bookmark the main dashboard too.
The script will pick up where it left off next time. It will start with new rules, then process the oldest first.
However, note that any one rule needs to be able to run within the 30 minute limit. This will only be a problem for larger accounts and can be solved via shorter date ranges and impression or click filters.
There was a bit of a rush to get this ready for a webinar so bear with me on a couple of quirks. If you do notice anything (or have suggestions) please let me know (LinkedIn and Email are good).
I can't see your search terms or any of your account data, and I couldn't if I wanted to. I also can't see your AI/LLM API Key so that's safe too. The script is public on GitHub so feel free to have a developer (or AI these days) confirm this.
Anyone with a link to your dashboard can see and edit your rules. I did that to make collaboration as easy as possible, but don't add any sensitive data (you shouldn't need to).
Look after yourself.
- Charles