Google Ads Scripts

Auto-Add Negative Keywords (Positive Keywords Script)

Tier: Free! (sign in for access)

🚀 Supercharged pro version available

Try the Pro version for extra time and money saving features

Trial expired? Get in touch and we'll extend it

☞ Take a look
positive keywords
negative keywords

Automatically add negative keywords based on “positive keywords” you define.

Perfect for:

  • Shopping campaigns
  • Dynamic search ads (DSA)
  • Text Ads (combat Google’s “close-match” going awry)

Shopping ads and DSA use data you provide (a feed or the website) to determine which search queries your ads will appear for. Not unlike with broad-match keywords (and increasingly exact and phrase match!), Google Ads doesn’t always get it right.

Irrelevant terms are rife particularly within Shopping Ads & DSA and the problem multiplies as bids increase.

The following free Google Ads Script helps by adding negative keywords automatically based on positive keywords you define.

  • Auto add negative keywords based on "positive" keywords
  • Accepts multiple matches
  • "Pick up where it left off" support

How it Works

You define a list of positive keywords in a Google Spreadsheet, the script then adds negative keywords where the query doesn't match any of the words provided.

Let's imagine you sell rucsacks and holdalls. Based on historical performance, you know queries containing "rucsack", "holdall" or "bag" are all profitable, other queries just waste money.

You would just need to add "ruc", "hold" and "bag" to the Google Spreadsheet and where queries don't contain "ruc", "hold" or "bag" they will be automatically added as a negative keyword.

This can be setup for dozens of words, through dozens of adGroups in dozens of campaigns. Just create a new tab for each campaign. The tab (or sheet) can be named anything.

The negative keywords are added at AdGroup level.

Script timing out? No problem, next time the script runs it will start with any sheets/campaigns it didn't get round to last time.

A Few Tips

This script has been used across thousands of accounts and we also use it ourselves.

It works a charm when setup correctly. Here's some important tips and notes:

  • Set the script to run hourly so it picks up irrelevant search terms as soon as they appear

  • For larger accounts, set an impression minimum to ensure too many negative keywords aren't added (there's a 20k limit ad Ad Group level)

  • A partial match is still a match. If the positive keyword is "ruc" and the term is "rucsac" it will be allowed through (it will not be added as a negative keyword)

  • The script is case insensitive (don't add multiple versions for different cases). In fact, never repeat words especially if the number of matches is more than one. The script will look for multiple instances which could cause problems.

  • Always preview and review the results before running.

Try the pro version for extra features

  • Negative keyword list support
  • Only add new negative keywords
  • Advanced settings checks & logs for peace of mind
  • Email error notifications
  • [exact match] support
  • Advanced query filters
  • Use Ad Group names as keywords
Read less

Install the script

Please login as a Free member to access this script

We're available for hire

Looking for a new script or an upgrade to an existing script?

With a decade of experience and a library of templates, we deliver professional scripts fast.

Prices are quoted on a per-project basis.

Learn more about our services or get in touch for a quote.

You Might Also Be Interested In

Members only

Auto Negative Keywords (Ad Group Level) Pro

This hugely popular script will automatically add negative keywords based on “positive keywords” you define. Pro version. Ad Group Level.

Members only

Rule Based Bid Updater (Keywords & Products)

Setup rules to update keyword and product bids based on cost, conversions, ROAS, CPA, and more. This script also includes pause functionality.

Members only

Search Query nGrams

Create 1 word, 2 word, 3 word and 4 word nGrams from search queries.