correct course

Last month, I sent you an email with one of my favorite scripts —
the script that detects negative keyword conflicts (*).

Fellow list member Anton Shakhidzhanov responded with an interesting observation.

Our little chat (shared with permission):

Anton: “This script is no longer useful. Because negative conflicts pop up automatically in Google Ads interface (Suggestions section).”

Me: “You’re right, however, in my experience the alerts in the interface miss half of the conflicts. I recommend you try it for yourself.”

Anton: “Damn, you were right! I experienced that alerts missed ~15% of conflicts” 

Here’s the thing: you cannot trust Google’s automation to make perfect decisions/recommendations.

The algorithms make mistakes. It is our job to spot them and correct course.

– Nils

(*): The email was sent on the 15th of June, with the email subject ‘Are you in conflict with your keywords?’ 

Do Less

The biggest insight that made me more productive in life, business, and PPC is this: Do Less.

There is an unconscious obsession with doing more, more, and more. Some examples:

  • Add more keywords.
  • Create new ad variations.
  • Improve quality scores.
  • Negate tens of search terms.
  • Adjust a thousand bids.

Now, I am not saying we shouldn’t do these things. They all have their place and value in our PPC job.

However, we should only do them to the extent that they genuinely make a significant difference.

It can’t just be work for work.

Here’s your challenge for this upcoming week: Do Less.

Start by eliminating the one task that does not really move the needle.

– Nils

“Invalid reporting query: UNSUPPORTED_VERSION”

Yesterday, one of my GAds scripting students ran into a common issue.

She was previewing one of the free scripts on my list and got an error message: “Invalid reporting query: UNSUPPORTED_VERSION ” 

This happens frequently when you copy-paste some of the older scripts that are out there on the web. And it’s easy to fix.

The solution might be of value to some more of you, so I decided to add an article to my list of FAQs that contains the fix.

You can find it here: https://nilsrooijmans.com/google-ads-scripts-faq/invalid-reporting-query-unsupported_version/

Happy scripting!

– Nils

How to truly limit Google Ads spending to the amount you want

Last week, I shared my worst PPC nightmare and asked you to share yours.

Many of you took the time to respond. Thanks for that!

Today, I’ll share one response by Alberto Esteves Correia (shared with permission):

“My worst nightmare is the opposite of an account not serving any ads; spending WAY TOO MUCH in a short time.” 

Alberto described the situation where he was running a Smart Display campaign with a €500/day budget. The campaign had not generated any clicks for almost a week, and then on Dec 24th at 21h… he noticed almost €4000 of spending on that single day! Google reps told him it was “probably due to a system bug.”

You can imagine how Alberto felt that Christmas.

Good news: we can use scripts to ensure you can peacefully enjoy your next Christmas without worrying about Google stealing your money.

To prevent Google from spending over your budget, have a look at these two scripts:

1) Daily Budget Overdelivery Alerts

https://nilsrooijmans.com/daily-budget-overdelivery-alerts-script/

What it does:

The script will compare the anticipated ad spend based on your campaign’s daily budget settings with the actual ad spend. It will check for overdelivery in any of three periods: yesterday, last week, and last month. In case of big differences (e.g., due to overdelivery by Google), it will report an alert, log the alert in the specified Google Sheet, and inform you about the alert via email.

Why you’d care:

Back in 2017, Google introduced a feature that allows it to spend up to two times your daily budget. However, as illustrated by Alberto’s example (and my experience from running this script), Google does not always limit itself to 200% of your set budget…

2) Limit Google Ads Overdelivery to Any Amount You Want

http://www.freeadwordsscripts.com/2017/10/limit-adwords-overdelivery-to-any.html

What it does:

The script fetches every active campaign’s daily budget and accrued cost for the day. If the cost exceeds the daily budget + the allowed percentage of overdelivery, it will label that campaign and pause it.

Why you’d care:

The overdelivery mechanism used by Google makes it harder to limit spend to the amount you want unless you use this script.

– Nils

Are you tired of manually setting columns in each and every client account?

Recognize this?

Every time you start with a new client, you spend the first hours setting and rearranging the columns in the different tables. 

  • For campaigns, you click Modify columns, check the columns you want in your table, and re-arrange the order of columns.
  • Then for ad groups, you click Modify columns, check the columns you want in your table, and re-arrange the order of columns.
  • Again for keyword view, you click Modify columns, check the columns you want in your table, and re-arrange the order of columns.
  • Rinse and repeat for each and every table.

Horrible hassle.

Now, imagine you could set all this once at your manager account level (MCC) and be done with it!

Well, you can.

If you use a Google Ads manager account, your viewing preferences are synchronized across the accounts within your manager account. For example, if you update the date range in one account, the same date range will be applied to all accounts within your manager account. Google Ads started saving these preferences at the manager account level since October 2019.

The following account viewing preferences are synchronized across accounts within your manager account:

– Date range
– Page size
– Home page
– Synchronized across accounts by table and campaign type:
  – Columns in the table and their relative order
  – Segments in the table
  – Sort order of the table
  – Metrics selected in Charts

Source: https://support.google.com/google-ads/answer/9758020?hl=en

I like to keep all my sub-account views consistent and this feature has been a major time saver for me.

Here’s where to click to sync your columns:

NOTE: It seems you only get to use this option once — before you make changes to the default columns in a client account. Once you’ve made a change, the sync opt-in does not appear anymore (at least not in my experience).

– Nils

the worst nightmare

The date was July 5th, 2014.

The night had been warm and sweaty, and I just had my first cup of coffee.

The phone rang.

“Nils! We’ve been without any leads last five days. What’s going on?!”

“Uhhh, uhm, I don’t really know Jeff. Let me have a quick look. I’ll get back to you in a bit.”

It turned out the Adwords account had not been serving any ads for five days due to declined credit card payments.

And I hadn’t noticed. For FIVE days.

To me, that was unacceptable. Jeff was paying a fair amount of coins for me to handle his ads. 

For Jeff, it was more than unacceptable. It was a matter of staying alive. He was in the roofing business and just got started.

You can imagine how I felt when I needed to pick up the phone and explain to him what happened.

Jeff took it lightly and finished our second call:

“It’s all good. I can feel you understand the importance of this issue for my business. I am confident you will not make the same mistake again.”

We all need more Jeffs in our lives.

Now, here’s the thing: I’ve always been obsessed with preventing my clients from noticing any issue before I notice them myself.

And no surprise here, scripts are my go-to tools for that.

Check out this great script from our friends at Optmyzr: https://bitbucket.org/snippets/fvallaeys/nLEoj/check-if-account-is-offline

What it does:

It checks whether a Google Ads account has gone offline, possibly due to a declined credit card, accidentally pausing all campaigns, or suspensions, among other things.

Why you’d care:

Accounts go offline for many reasons. Billing issues are a well-known problem in managing Google Ads accounts, especially for advertisers with smaller budgets. When this happens, you want to be alerted straight away so your client does not unnecessarily miss any leads and/or revenue.

– Nils

PS: What’s the worst PPC nightmare you want to prevent from happening at any cost? Hit reply, I’d love to know.

My favorite productivity hack

Want to know what one of my favorite productivity hacks is?

Read on.

Yesterday, you received my “This Email Intentionally Left Blank” message in your inbox. It triggered many reactions. You sent me replies like “WTF!?”, “LOL”, “Uhhh?”, “This made me think…”, and “Dude, there is nothing here!”

The last one was the bull’s eye.

My favorite productivity hack is exactly this. Empty. Blank. Space.

Blank space is the idea of blocking “empty” time in your calendar.

This empty time has no specific purpose and no specific task that needs to be completed.

Creating space within your PPC calendar allows you to slow down and reflect on strategy. 

It also allows you to simply click through the Google Ads interface or Analytics data and just have a look at what is happening in areas you do not visit frequently.

Blank space creates a sense of joy and gratitude because you can enjoy your time by simply following your curiosity. 

Without any exception, my blank spaces generate at least one new idea to improve either my Google Ads accounts’ performance or my workflow. That’s a productive win!

The best way to create blank space?

Simply add a 30-minute space to your calendar, and schedule to repeat it weekly or even daily.

Seriously, you should give it a try.

– Nils

Finally, we can set a monthly spend limit across all campaigns

Starting last June 1, a limited set of advertisers have become able to set monthly spend limits at the account level.

Finally! Google Ads changed something related to our budgets that is actually useful! 😀

You can find the details here: https://support.google.com/google-ads/answer/10178071

Now, let’s hope that Google does not decide to grant itself the “right to double your monthly spend limit” like they do with daily budgets… 

– Nils

PS: Are you curious as to what extent your daily budgets suffer from ‘overdeliveries’ by Google? If so, check out this script: https://nilsrooijmans.com/daily-budget-overdelivery-alerts-script/

Value your click

You Pay Per Click.

Your click costs $1 on average.

Convert that click into a lead, and it is worth $50.

Make that lead into a sale, and it is worth $500.

Turn the sale into a lifetime customer, and it is worth $5,000.

Here’s the thing: the value of your PPC efforts is determined by what you can make out of that click.

Value your click.

– Nils

PS: Are you already tracking lifetime value? If so, hit reply — I would love to learn how you do it.

The most common mistake when installing a script

Over the years, I’ve received many questions from people who made a mistake when installing one of the scripts from my list.

It is my job to help you avoid the same mistakes they made.

The most common mistake has to do with configuring a spreadsheet URL.

You can read about it here:

https://nilsrooijmans.com/google-ads-scripts-faq/heres-why-you-get-invalid-argument-url-file-code-gs-line-xx-errors/

– Nils

Automatically add RSAs to all your ad groups

Are you tired of manually adding Responsive Search Ads to every one of your ad groups?

If so, this script will save you many hours and headaches: https://adsscripts.com/scripts/google-ads-scripts/create-responsive-search-ads

The script runs through all Search campaign ad groups in your account. You can use labels to select the ad groups you want to be processed. 

For the ad groups that don’t already have an RSA, it adds a Responsive Search Ad based on the headlines and descriptions in your existing ETA ads. 

This way, the new ads will immediately be relevant in all ad groups.

You can put backup headlines and descriptions in the script. These will be included in the new ad only if no 15 headlines or 4 descriptions have been used. 

In addition, you can also label the new ads. This way, you can easily find them later in your account.

Next time you need to add RSAs to tens or even hundreds of ad groups, consider this script.

– Nils

Do you sell 24/7 support?

One of my coaching clients is an agency that is trying to double its number of clients without growing headcount.

A part of their efforts to grow the business was hiring an aggressive salesperson. 

Today, we got on a call to discuss his sales pitch. Here’s what he told me:

“One of the things I tell the prospect is that we keep the campaigns running 24/7 since the ads run 24/7.” 

The way he brought it up sort of implied that the agency employees are running 24/7 as well.

I recommended he not talk to any prospect again until our copy of R2-D2 is finished.

Here’s the thing: you can’t scale your PPC business without setting the right expectations. You can’t scale results without communicating relevant and reasonable targets.

24/7 support isn’t one of them. (Go tell your sales reps!)

If anything, scaling is all about managing the right expectations.

– Nils

Easily build a report to see how your competitors are doing in Google Ads

Want to quickly see how your competitors are doing in your auctions?

Google Ads auction insights offer some amazing data, but the numbers are hard to compare and do not show trends over time. Analysing the data in the tables quickly becomes an excruciating exercise in number crunching.

Imagine having nice little graphs that show trendlines with your ‘impression share’ and ‘top of page rates’ compared to your competitors. A picture says more than a thousand numbers, right?

Luckily for us, our friends at Optmyzr created a nice little tool to help us out — enter the Auction Insights Visualizer:

https://www.optmyzr.com/free-tools/auction-insights-visualizer/

This tool allows you to drag and drop the data from Google and instantly turn it into a series of customizable charts that are suitable for sharing with a client or manager.

Here’s a 5-minute video that shows you how to quickly understand how competitor behavior has changed over time:

https://www.youtube.com/watch?v=SgycHrR5diU

ACTION: Why not take a 10-minute break and try this for last month’s auction data in your top campaign?

– Nils

Are you copy-pasting Negative Keywords all over the place?

Here’s your PPC productivity tip for the day:

You can use the Shared library in your MCC manager account to create, edit, and remove negative keyword lists that can be applied to your client accounts.

If you’ve been laboriously adding the same lists of negative keywords to your client accounts manually, this is for you. I use them to share generic negative keyword lists that are not client-specific, like a list of words that are HR-related (e.g., ‘jobs’, ‘resume’).

Here’s how: https://support.google.com/google-ads/answer/7519927?hl=en

NOTE: When you create negative keyword lists in your manager account, they’re added to the Shared library of all your client accounts by default. Your clients can see all the shared lists in your manager account.

– Nils

PS: if you like this post, be sure to check out my Google Ads Script for Negative Keyword Suggestions.

Are you in conflict with your keywords?

Recognize this?

You inherit an account with thousands and thousands of negative keywords spread all over the place like spaghetti sauce. No clue as to whether or not all these keywords still make sense, or will be blocking your newly-discovered golden growth opportunities.

Here’s the thing: as a GAds account grows, so does the amount of keywords, both positive and negative.

Managing all these negative keywords is boring as dog sh!t, a gear-grinding time sink, and prone to error.

Luckily, the Google developers were sensitive to some of this negative energy and came up with a script to relieve a part of the burden:

https://nilsrooijmans.com/negative-keyword-conflicts-alert-script-update/

This script checks your negative keywords to see if you are blocking any valuable keywords that are relevant to your audience. The script will find and save all conflicts to a Google Sheet, which is then sent to you via an email alert. 

The next step for you is to take action to remove these conflicts — either remove the terms from your negative keyword list or pause the keyword.

If you are not yet running this script in all your accounts, I highly recommend you do. It will only take a couple of minutes and three sips of coffee to set them up.

What are you waiting for?

– Nils

PS: I am looking for new scripting ideas to optimize the management of negative keywords. What tasks would you like to see automated?

The new phrase match versus BMM: want to join me in this experiment?

Google announced that in some countries and languages, the new Phrase Match is already rolled out.

“As of April 2021, the updated phrase match behavior is available in the following languages: English, German, Spanish, French, Italian, Dutch, Portuguese, and Russian” 

…and,

“After July 2021, legacy BMM keywords will continue to serve, they’ll just behave as if they were phrase keywords.” 

Source: https://support.google.com/google-ads/answer/10286719?hl=en

To see how this new phrase-matching behavior differs from BMM, I decided to run some campaign experiments where the only difference is that BMM keywords in the Experiment are replaced by Phrase match versions.

In theory, this should help me predict what will happen to my BMM keywords in July, and anticipate the change in match type behavior.

Who wants to join me in the experiment and share results?

– Nils

Want to improve your Pivot Table skills?

Pivot tables are an essential tool for any PPC specialist.

Luckily, the teachers’ teacher Brad Geddes created a short video explaining the pivot magic.

It covers creating a pivot table, calculating fields, pivot table charts, filtering pivot tables, and refreshing your data.

Here’s the link: https://www.youtube.com/watch?v=CbAeq_rac48

NB: even if you feel you are already familiar with pivot tables, it is probably still worth watching. Play it at 2x the speed.

– Nils 

PS: Are you a fan of pivot tables? If so, what is your favorite use case? I would like to learn about it. Thanks!