Bid To Position In “Real Time” With This Open-Sourced AdWords Script

google-adwords-yellow2-1920

Back in 2011, Search Engine Land’s Pamela Parker brought us the news that Google had shut down Position Preference for AdWords Bidding. There was a logical justification for this, and many PPC experts since have correctly argued that bidding to position is probably not the best strategy for most advertisers.

However, four years later, I still keep hearing demand for the ability to bid to position. Despite all the caveats listed later, there are a few ways to do this if you insist: I’ve seen people using Automated Rules to increase and decrease bids, and Google has open-sourced its own Bid to Position script. But it only works on the last seven days of data and runs weekly, which isn’t very dynamic, given that AdWords data updates every three minutes.

So the PPC scientists at Brainlabs (my employer) built a more sophisticated script that can account for up-to-the-minute information and use that to tweak your bids constantly throughout the day in order to achieve a target average position. We’ve moved on to using a more advanced version using the API, but we’ve open-sourced an AdWords Scripts version that anyone can use:

AdWords Script: Real-Time Position Bidding

How Does It Work?

When the script runs, it downloads the stats for today so far, and compares this to the stats it downloaded the last time it ran. From this, it deduces the performance for the most recent period (usually an hour).

(On keyword reports, you can’t segment position data by hour, so this is the only way to get up-to-date data about current average positions.)

The script only looks at desktop and tablet traffic, not mobile — the mobile landscape is very different because there are far fewer positions available. It also ignores Search Partners, as this can skew the data.

Then, if the average position is less than the target by more than 0.3, the bid is increased — the further the position is from the target, the more the bid is increased, by up to 20% of the original bid. Similarly, if the average position is over the target by more than 0.3, then the bid is decreased by up to 20%. You can see the formula in the image below (click to enlarge).

Bid Change equation

The script tries to avoid dropping the keyword off the page; if a bid starts above the estimated first page bid, it is not lowered beneath it. But if you think the estimated first page bids are too high for some of your keywords, there’s a variable called firstPageMaxBid that’s used to override it.

If the calculated bid is less than the firstPageMaxBid and the estimated first page bid, and the firstPageMaxBid is less than the estimated first page bid, the firstPageMaxBid will be used for the bid. If the estimated first page bid is less than the firstPageMaxBid, the estimated first page bid is used.

Also, you get a choice of what to do with keywords that haven’t had any impressions since the last time the script was run. If you’re worried about bids being too low, you can set the script to increase bids on impressionless keywords to the estimated first page bid (or firstPageMaxBid if the first page bid estimate is too high). If you don’t expect keywords to get traffic every hour or don’t want this, you can just ignore impressionless keywords.

How does the script know what the target positions should be? Keyword labels. This means that it’s easy to see what the target is when you’re working in your account, and it’s easy to change it by just changing the label.

Send Us Feedback

If feedback in the Comments is positive, we’ll release another version where you can have different position targets for different times of day, all controlled from a spreadsheet.

Caveats

I’ve already acknowledged that bidding to position is not my preferred default strategy. It might be stating the obvious, but don’t forget that average position is a mean average, so bidding towards it is inherently flawed.

You should think about “position” as being a distribution of outcomes—sometimes you’re in one position, sometimes another. The “average position” is one way to summarize this distribution, but it isn’t necessarily the best way.
Hal Varian

Also be careful with broad match keywords! This is a good piece of advice in general, but it is especially important when changing bids. A short broad match keyword could cover all sorts of search queries, and increasing the bid could allow the keyword to appear for new, less relevant queries — and in doing so lower the average position of the keyword, because the ads are appearing in low positions for the new queries.

The post Bid To Position In “Real Time” With This Open-Sourced AdWords Script appeared first on Search Engine Land.

Bid To Position In “Real Time” With This Open-Sourced AdWords Script

google-adwords-yellow2-1920

Back in 2011, Search Engine Land’s Pamela Parker brought us the news that Google had shut down Position Preference for AdWords Bidding. There was a logical justification for this, and many PPC experts since have correctly argued that bidding to position is probably not the best strategy for most advertisers.

However, four years later, I still keep hearing demand for the ability to bid to position. Despite all the caveats listed later, there are a few ways to do this if you insist: I’ve seen people using Automated Rules to increase and decrease bids, and Google has open-sourced its own Bid to Position script. But it only works on the last seven days of data and runs weekly, which isn’t very dynamic, given that AdWords data updates every three minutes.

So the PPC scientists at Brainlabs (my employer) built a more sophisticated script that can account for up-to-the-minute information and use that to tweak your bids constantly throughout the day in order to achieve a target average position. We’ve moved on to using a more advanced version using the API, but we’ve open-sourced an AdWords Scripts version that anyone can use:

AdWords Script: Real-Time Position Bidding

How Does It Work?

When the script runs, it downloads the stats for today so far, and compares this to the stats it downloaded the last time it ran. From this, it deduces the performance for the most recent period (usually an hour).

(On keyword reports, you can’t segment position data by hour, so this is the only way to get up-to-date data about current average positions.)

The script only looks at desktop and tablet traffic, not mobile — the mobile landscape is very different because there are far fewer positions available. It also ignores Search Partners, as this can skew the data.

Then, if the average position is less than the target by more than 0.3, the bid is increased — the further the position is from the target, the more the bid is increased, by up to 20% of the original bid. Similarly, if the average position is over the target by more than 0.3, then the bid is decreased by up to 20%. You can see the formula in the image below (click to enlarge).

Bid Change equation

The script tries to avoid dropping the keyword off the page; if a bid starts above the estimated first page bid, it is not lowered beneath it. But if you think the estimated first page bids are too high for some of your keywords, there’s a variable called firstPageMaxBid that’s used to override it.

If the calculated bid is less than the firstPageMaxBid and the estimated first page bid, and the firstPageMaxBid is less than the estimated first page bid, the firstPageMaxBid will be used for the bid. If the estimated first page bid is less than the firstPageMaxBid, the estimated first page bid is used.

Also, you get a choice of what to do with keywords that haven’t had any impressions since the last time the script was run. If you’re worried about bids being too low, you can set the script to increase bids on impressionless keywords to the estimated first page bid (or firstPageMaxBid if the first page bid estimate is too high). If you don’t expect keywords to get traffic every hour or don’t want this, you can just ignore impressionless keywords.

How does the script know what the target positions should be? Keyword labels. This means that it’s easy to see what the target is when you’re working in your account, and it’s easy to change it by just changing the label.

Send Us Feedback

If feedback in the Comments is positive, we’ll release another version where you can have different position targets for different times of day, all controlled from a spreadsheet.

Caveats

I’ve already acknowledged that bidding to position is not my preferred default strategy. It might be stating the obvious, but don’t forget that average position is a mean average, so bidding towards it is inherently flawed.

You should think about “position” as being a distribution of outcomes—sometimes you’re in one position, sometimes another. The “average position” is one way to summarize this distribution, but it isn’t necessarily the best way.
Hal Varian

Also be careful with broad match keywords! This is a good piece of advice in general, but it is especially important when changing bids. A short broad match keyword could cover all sorts of search queries, and increasing the bid could allow the keyword to appear for new, less relevant queries — and in doing so lower the average position of the keyword, because the ads are appearing in low positions for the new queries.

The post Bid To Position In “Real Time” With This Open-Sourced AdWords Script appeared first on Search Engine Land.