A.I. & Optimization

Advanced Machine Learning, Data Mining, and Online Advertising Services

Optimizing Adwords Conversion Rate



In this article we explain our approach to increase ROI (Return on Investment) for a Google AdWords campaign. Especially we show how advertisers can reduce their campaigns costs by tracking conversions.

Google AdWords

Last month we worked with one client trying to optimize their AdWords campaign. Before going into technical details, let's review how Google Adwords works. AdWords is an advertising platform where advertisers can bid for search keywords and bid for clicks targeting relavant keyword search for the product they're advertising. Google AdWords is a marketplace where advertisers (buyers) want to buy users clicks. So, one challenge is how to set the price for each search query. Google runs a revised version of the Second Price Auction where the bidder with the highest bid wins the impression; however, the winner needs to pay the second highest bid value.

Why Second Price Auction?

One interesting question to be aksed here is why Google runs the second-price auction as opposed to the first-price version. A superficial comparison of the first-price and second-price auction might suggest that seller (here Google) make more money if it runs the first-price because at the end of the day in the first-price the winning bidder pays the highest bid instead of the second highest bid. But, reader should consider the second-price in the light of game theory. When we make up rules to govern people behavior, we need to assume people adapt their behavior in light of the rules. Actually, in the first-price auction bidders will tend to bid lower than the second-price. In particular, we can prove that the dominant bidding strategy in the second-price auction is to bid your thruthful value. Thus, it's the best for bidders to bid their true values even if other bidders are overbidding, underbidding, colluding, or behaving in an unpredictable ways! (see Jon Kleinberg's book for furher reading)

Google Ad Rank Algorithm

Google will charge advertisers if and only if web browsers click on their ads. So, Google needs to rank ads for any search query using their internal algorithm called "Ad Rank" to maximize their profit. Showing more converting ads in a higher position benefits all players in the marketplace (i.e. Google, browsers, and advertisers). For running Ad Rank algorithm, Google uses a few more parameters in addition to bid value. One parameter is the expected clickthrough rate of the ad. Google estimates this by analyzing a large number of history data on how people reacted to ads in the past. The other parameter is the quality of landing page. Web pages with higher quality score higher. Some of metrics for scoring quality of a landing page are: relevant and original content, easy to navigate, transparent. The next parameter is Ad Relevance which is how related the ad message is to query search. The last parameter is Ad Format. Thus, the Ad Rank is calculated as follows:

Ad Rank = f(Bid, Expected CTR, Landing page experience, Ad relevance, Ad formats)
      

So, Google runs Ad Rank algorithm in order to rank ads and charge advertisers. You can watch Insights on the AdWords Auction video to get better understanding of how Ad Rank works.

AdWords in Action

As mentioned earlier, one of our client's running several branches of pizza restaurants. Many people use Google search to order pizza online. This can be done either using online ordering or by phone calls. Thus, our client spends a certain budget for running its Google Adwords campaign. In particular, they spend around $500 per month for their AdWords campaign (i.e. this is in average $17/day). Our problem was to analyze their Google AdWords campaign and find opportunities for cost/performance optimization. Our client has four ad groups where they have different ad messages and target different sets of keywords. For bidding strategy, they use Google "Target search page location" which is a predefined bidding strategy from Google. In this strategy, Google adjustis your bids to make sure your ad appears on the top of the first page of search results.

Conversion Tracking?

The first issue that we found in our client's campaign was the lack of having a conversion tracking system in place. The client was only relying on CTR of keywords as the metric to measure how effective their campaign is running. However, since the whole point of advertising using Google search was to bring visitors to pizza online store and drive them either order online by clicking on "online order" link on the pizza website or calling the store to place an order, it's very important to close the loop properly and see if the user funnel leads to conversions! However, there was a technical challenge for making Google normal conversion tracking to work. The problem was our customer were using another company's platform to take/process online orders. So, as soon as a visitor clicks on "online order" link, the user was taken to the third party website where our client didn't have any control on! This situation makes it impossible to setup the Google basic conversion tracking and send the conversion signals back to Google servers when people are done with their orders.

Let's Hack it!

What we proposed for this customer was a javascript hack where we capture the click events on "online order" link on their website. Inside click handler, we made a server call to google ad service and pass the required parameters in order to make Google conversion tracking working. You can find our hack code below. Although this is not the perfect way to track conversions, it's certainly one step towards getting insights how people react to our ads.

 
<html>
<body>
<script type="text/javascript">
function trackConv() {
var image = new Image(1,1);
image.src = "http://www.googleadservices.com/pagead/conversion/your_google_conversion_id/?value=0&label=your_google_conversion_label&guid=ON&script=0";
return;
}
</script>


<script>
$("#onlineordertarget").click(function() {
event.preventDefault();
trackConv();
});
</script>
</body>
</html>

Conversion Tracking Results

After setting up conversion tracking, we allowed the campaign to run for one month. At the end of the month, we collected performance data from Google AdWords and analyzed using a python script. We analyzed the data from one of our ad groups and identified keywords which have clicks but no conversions. Following table shows the list of keywords in the ad group with no conversions:

keyword imprs clks ctr cost avg_cpc
#### ## delivery food 524 15 2.86% $27.1 $1.81
restaurants that deliver in #### ## 112 1 0.89% $1.72 $1.72
delivery in #### ## 945 9 0.95% $16.31 $1.81
late night delivery #### ## 11 1 9.09% $0.96 $0.96

Action I: Pause Not-Converting Keywords

For privacy reason we removed the city and state from our keywords and shown them by "#" symbol. We see that there are a number of keywords that produce a large number of impressions and a few number of clicks without any conversions. We calculated the weighted average for conversion rate for all keywords from all adgroups. The average conversion rate was computed as: 10.8%.

Using the computed expected rate, "#### ## delivery food" keyword should have produced 1.62 conversions in average. Also expected conversion number for "delivery in #### ##" should have been one. The other two keywords are not that effective due to their low CTRs! By turning off not converting keywords we could save at least $46 for this ad group in one month.

Action II: Pause Keywords with High eCPC

For the same ad group, we have shown the only converting keyword below. As we see, the conversion rate for this keyword is not very high: 3.85%. However, surprisingly keyword's eCPC = $67.9/2=$33.0 which is very high! Note that the goal of an advertiser is to minimize eCPC (effective cost per click). So, we suggested our client to turn off this keyword as well.

keyword imprs clks ctr cost avg_cpc convs cost_per_conv_click conv rate
pizzeria #### ## 2192 60 2.74% $67.9 $1.13 2 $29.36 3.85%

Final Notes

By setting up a hacked version of conversion tracking, we could identify not converting keywords. By pausing those keywords across all ad groups we could save $105.82 per month in total! Thie money can be effectively spent on working keywords which produce conversions or explore new effective keywords.