Share this:

Google AdWords has notified advertisers that a change had already happened to the way budgets get handled on a daily basis. The overall response from advertisers doesn’t seem to be going down too well. Author Sam Lalonde breaks down what this means and leaves you with some actionable insight to use on your own accounts.

This article has two parts:

  • Part 1 briefly covers the hubbub around the max daily budget cap

  • Part 2 provides you with a script to mitigate the effects of this change


The hubbub

There’s been a lot of commotion lately about the change to how Google handles your AdWords maximum daily spend. According to Google, AdWords can now exceed your daily maximum budget by up to 200% – two times your set maximum.

Understandably, people have been expressing their frustration:


The change took effect on October 4, 2017

You can read the full AdWords help file here: https://support.google.com/adwords/answer/1704443


Breaking This Down

Google’s own support file describes internet traffic as being an ocean where there are small waves and large waves. Presumably, on days with “small waves” (ie few searches), your ads won’t show as often and you won’t meet your maximum daily budget cap. On the other hand, on days where there are “big waves” (ie lots of searches), your ads should show more often and you might be limited by your daily budget cap.

The change Google has implemented addresses the issue of small wave days and big wave days. They are trying to resolve the  issue where daily budget caps may not be met on small wave days but also limited on big wave days in a given month.

Google has said that this should significantly improve our ability to hit good performance metrics in a month-long time frame.

This is important to note: the ability for Google to spend up to 200% of your daily maximum is based the presumption that the majority of advertisers use monthly time frames to set their daily maximum budgets.

The basic math follows that if you have a budget of 1k/month, you will set your daily maximum budget to be ~32/day.

Basically, 30.4 is the average number of days in a month (365 days in a year / 12 months = 30.417). Google multiplies your daily budget by this number so we know what your budget should be over the course of a month.

So with that knowledge in hand, Google will try to make up for “small wave days” by taking advantage of “big wave days” in order to meet your monthly budget as set out by your daily campaign maximums.


This is a modification to an existing policy

Over-delivery on AdWords has existed for a long time with AdWords having the liberty to increase daily budget caps by as much as 20%.

For the average advertiser on Google and not necessarily your hyper-amped-up digital advertising professional, this change should not have any real negative impact on ad delivery and overall performance. Though, the problem is that not every advertiser works on a monthly flight.

This policy change ignores the fact that a lot of advertisers work on flights of 10 days or a flight of 1 quarter or a flight of 3 days. They have not made clear how weekend slow downs are already accounted for in daily maximums. Also, they are leaving a lot of uncertainty when it comes to running a temporary campaign. A great example of this is for event-based marketing where you may have a 3-day ramp-up to the event day in question (based on search traffic) and then an immediate stop once the event starts. The big question that’s left up in the air is how will this 200% risk affect day 2 of 3 if AdWords is trying to average this over about 30 days?


Where’s the Opt-Out?

Google is forcing this policy change on its advertisers and it’s sounding like this is going to stay.

More “advanced” advertisers use various third party tools to monitor budgets, monitor performance, and manage budget allocations. Importantly, not all advertisers base their daily campaign maximums on what they want to spend in a given month or 30-day period.

This would not be so much of a problem if Google, at the very least, adds an opt-out setting for this. Make the 2x daily spend feature a default option but allow people to change this to “off” or at least “not as high”. This will ease the concerns of advertisers who are now worried that they will be overspending on their campaigns that especially do not rely on an average of 30.417 days to set daily maximum budgets.

 


Stable Daily Budgets Script

This script was built by Frederic Harnois who works on paid media campaigns for Ubisoft. The scripts goal is to mitigate AdWords’ recent change in the way daily budgets are handled. It should insure that the actual spend of a campaign on any given day is close to its daily maximum budget cap. If a campaign exceeds its daily maximum cap, it will pause the campaign and re-enable it the next day.

Only one part of the script needs to be modified and it’s the label section.  This will limit the script to make changes to specific campaigns within an account. In this example, we use Active as the label name:

// Define your own label here
.withCondition("LabelNames CONTAINS_ANY ['Active']")

You will need to make sure the campaigns you want monitored are properly labeled. Also, keep in mind that the label is case sensitive.

Set the script to run hourly and it should do its best to keep your daily budget within your desired maximum.

Script Limitation

  • Adwords scripts only run hourly.
    • This means that the actual spend of a campaign can still go over its daily budgets.
    • However, in the vast majority of cases, it should pause the campaign before it spends twice its daily budget.

The code is freely accesible here: https://github.com/fredericharnois/stable-budgets-adwords-script/blob/master/stable-daily-budgets.js

/**
*
* Stable Daily Budget Script
*
* If scheduled hourly, this script will pause campaigns if they have
* spent more than their daily budget and reactivate them the next day.
*
* Version: 1.0
* Google AdWords Script maintained by Frederic Harnois
*
**/

function main() {

	// Selects campaigns with a chosen label
	// Insures only those campaigns are activated or paused
	var campaignSelector = AdWordsApp
		.campaigns()

		// Define your own label here
		// IMPORTANT NOTE: LABEL IS CASE SENSITIVE
		.withCondition("LabelNames CONTAINS_ANY ['Active']")

	// Goes through the selected campaigns
	var campaignIterator = campaignSelector.get();
	while (campaignIterator.hasNext()) {
		var campaign = campaignIterator.next();

		// Gets the campaign's budget
		var budget = campaign.getBudget();

		// Gets the campaign's spend over the current day
		var stats = campaign.getStatsFor("TODAY");
		var cost = stats.getCost()
		Logger.log("Campaign name: " + campaign.getName());
		Logger.log("Daily budget: " + budget.getAmount());
		Logger.log("Today's spend: " + cost);

		// Pauses the campaign if the spend exceeds the budget
		if (cost > budget.getAmount()){
			campaign.pause();
			Logger.log("Today's campaign spend EXCEEDS the daily maximum!");
			Logger.log("Campaign paused");
			Logger.log("================");
			}

			// Activates or leaves the campaign on if the spend spend does not exceed the budget
			else if (cost < budget.getAmount()){
				campaign.enable();
				Logger.log("Today's campaign spend DOES NOT exceed the daily maximum.");
				Logger.log("Campaign remains enabled");
				Logger.log("================");
		}
	}
}

Hope this helps!

Sam Lalonde
Follow Me

Sam Lalonde

Senior Campaign Manager and Strategist at Bloom Search Marketing
Sam is a Senior Campaign Manager and Strategist @ Bloom Search Marketing.

He has managed campaigns in some of the most competitive spaces on the internet, is a trusted advisor to his clients and loves pushing the SEM platforms to their breaking point.
Sam Lalonde
Follow Me