Expanded phrase match negatives: A script for misspellings
As paid search specialists, our strength lies in our ability to exert control over our keyword targeting. Every month or so, there are new threats to this control. We must be strong in battling this pay-per-click (PPC) kryptonite. We must build super automation to help save the world from bad PPC!
That is why we at Brainlabs (my company) have created another Google Ads script, this time to help you control the impact of negative keywords. The challenge with negative keywords is getting the balance right. Too little control, and you’ll include budget-draining mismatches. Too much, and you risk losing out on potential customers. To filter traffic for high- and low-value searches, you need just the right touch.
Getting the hang of it takes a bit of trial and error, but using a script to help you along doesn’t hurt. Today, I’m sharing an awesome script that will boost your phrase negative keyword matching by finding the ones you’re failing to catch due to misspellings.
Using negative keywords
We all know that without the right keyword, your ads won’t be triggered when a user enters a search term. Unlike preplanned keywords, search terms are liable to all sorts of inconsistencies.
Advertising platforms like Google Ads offer different ways to match keywords to search terms: broad, broad match modifier, phrase, and exact. Whichever you prefer to work with, you’ll know that planning ahead for human error can be difficult. Luckily, these match types can deal with close variants like misspellings, plurals, broad match, synonyms and related searches.
The difficulty lies in the use of negative keyword matching. Don’t get me wrong — negative keywords are great! They stop ads from showing for searches containing a specific term, in order to exclude irrelevant searches and filter traffic through appropriate match types. They can also be set at a campaign or ad group level.
Unfortunately, they don’t use close variant or synonym matching. This means even with a well-well-thought-out negative keyword list, your ads might still show on searches that contain close variations of your terms.
If you’re using phrase negative keyword matching, which prevents any search term containing the exact uninterrupted phrase from prompting your ads, you’ll need to be prepared for all eventualities.
One common mistake people make when typing searches: they forget to add a space between words. Not a big deal, right? But when that single character is left out, the searches won’t be blocked by your phrase match negatives!
To help, I have the script you need. It looks at queries that contain a phrase negative but weren’t excluded for this trivial reason. It will then suggest new negative keywords that will exclude those search queries.
How the script works
You enter a phrase which is already a phrase match negative. For example, “free” or “second-hand.”
The script will look through your search query report and find queries which contain that phrase and where the keywords are attached to other words. Using the word “Lego” as an example:
“Lego freesample”
“buysecond-hand Lego toys”.
The script will trim down the queries to make newly suggested negatives like “freesample” or “buysecond-hand.”
The script will then report the performance of queries containing the suggested negatives into a Google sheet, so you can review them and add them as negatives if necessary.
This is shown at both the campaign and account level, so you can decide if you want them as campaign negatives or add them to your shared negative lists.
How to use it
In Google Ads, go to Tools, and in Bulk Actions, choose Scripts.
On the Scripts page, click on the big “+” button and paste in the script (link below). You’ll need to create a Google Spreadsheet for the report to go into and manually edit the following options:
- phraseMatchNegative is the negative keyword you want to expand on.
- startDate and endDate determine the date range of the data. Enter them in yyyy-mm-dd format.
- currencySymbol is used when formatting cost data in the report.
- campaignNameContains and campaignNameDoesNotContain filter which campaigns the script gets data from. For example, if campaignNameContains is [“Brand”, “Generic”] then only campaigns with names containing “brand” or “generic” are included. If campaignNameDoesNotContain is [“Display”, “Competitor”] then any campaigns with names containing “display” or “competitor” are ignored.
- This is not case-sensitive.
- Leave blank, [ ], to include all campaigns.
- If you need to put a double quote into campaignNameContains or campaignNameDoesNotContain, put a backslash before it.
- ignorePausedCampaigns should be set to true if you only want to look at currently active campaigns, or false if you want to include them.
- Similarly, ignorePausedAdGroups should be true to only look at currently active ad groups, and false to include paused ones.
- spreadsheetUrl is the URL of a Google Spreadsheet, which the results will be copied into. Create a blank spreadsheet and put the URL in here.
- If clearSpreadsheet is true, any data already in the spreadsheet will be overwritten. If it’s false, then the script’s results will be added at the end of the sheets.
You can also pick impression, click, cost and conversion thresholds. Possible negatives will only be shown if they have metrics over these thresholds. This means you can concentrate just on the most common or expensive typos.