On my recent SEL post on Landing Page Quality Score, a commenter argued that Google won't really penalize the low quality content publishers because they spend too much money on AdWords. My initial reaction was: "I respectfully disagree." Not only does Google have an interest in protecting the quality of the user experience, each advertiser matters less to Google than we might assume. I've heard many frustrated advertisers over the years say something to the effect: "I Buy $X Million dollars in advertising from Google, they should [fill in the blank: 'take my calls', 'be at my beck and call', 'wash my car', etc.]" The thing is: while it may be true that you write Google and Bing checks for $4 Million a year, that doesn't actually mean they'd lose $4 Million in revenue if you decided to stop. Let's take a look some auctions to find out why. Build Your Own Auction Spreadsheets are a great tool for exploring different scenarios, and I'm particularly fond of the random number generation as a mechanism for testing. In Excel, rand() returns a random value between 0 and 1 out to 6 decimal places. RandBetween(top,bottom) returns an integer value between two ends of a specified spectrum. A little creativity allows you to create any conditions you want. Say for example you'd like to create a case where the bids from N competitors are all between 50 and 75 cents. An elegant solution is: Bid = randbetween(50,75)/100. Less elegant, but equally valid: Bid=0.5+rand()/4 Build a table of values for Bid and Quality Score using randomizing functions. You'll need at least 14 rows of data to get a clear view of a 12 bidder auction for reasons that will become apparent latter. Bid and Quality Score values allow you to calculate AdRank. AdRank = Bid * QS Taking a guess at the range of likely Quality Scores produces AdRanks for each competitor in the mock auction. Sadly, you'll need to copy and paste values at this point. In order to analyze the auction you need to sort this table in descending order of AdRank, and sorting doesn't work with active randomizing functions, because each time you make a change the random function generates a new value. If it did that on the fly but before the sort it would be fine, but it does it backwards so the results come back unsorted (Anyone at Microsoft reading this? A little help, please?) Sorted by AdRank descending, you're now ready to calculate the actual CPCs paid by the advertiser in each slot. For position 1, the actual CPC paid is the AdRank of the ad in position 2 divided by the Quality score of the position 1 ad, algebraically: See Auction Dynamics Live Toy if you want to play with one. When an advertiser drops out of the auction, the CPCs paid by the position above the departing advertiser's and all the positions below changes, usually declining. (For reasons detailed in the 'Caveats' section below, Google's revenue per impression almost always falls for each impacted position, even though the CPCs frequently rise.) Next we need to calculate how much the Actual CPC would be for that slot in the auction if that advertiser pulled out of the auction. Essentially, removing any individual advertiser from the auction impacts Google's AdWords revenue in two respects:
- The CPC paid by the advertiser in the slot above on the page pays a different (generally lower) CPC, and
- Each advertiser below the vacated slot moves up one position on that page, changing (usually lowering) the CPC collected from clicks on each of those slots.
- There are so many phony assumptions here it's scary, but the issue of CTR is paramount among them. Different Quality Scores mean different CTRs for two different ads in the same position; on top of that, there is a huge positional dependence for CTR (particularly when we throw promoted placement above the organic listings into the picture. The right metric for us to look at is how does the revenue per impression change for Google when the top bidder leaves the auction and that's hard to model without heaping assumptions on top of assumptions. One has to assume, given the primacy of CTR in determining QS, that with very few exceptions, Google's revenue per impression normalized for position lines up very closely with AdRank.
- We're looking at a single auction in isolation, when in fact there is also the question of qualifying for more or fewer auctions based on AdRank, the specific query, geography, personalization due to past behavior, etc.
- randomized AdRanks may be a really poor proxy for what actually happens in the wild. If I was a betting man, I'd wager there is more variance between bids than quality scores, which impacts the math a bit as well.
Join the Discussion