How is the new Enhanced CPC going to change the bidding game?

Enhanced CPC

A little about the basics of CPC and auctions –

To understand enhanced CPC (cost-per-click), let’s recap the concept of cost-per-click and how auctions work.

Cost-per-click is the bidding strategy in Google AdWords. Google, therefore, charges an advertiser only when a user clicks on their ad copy. The link in the ad copy redirects the user to the landing page. Google rules out the cost for displaying the ad in this bidding strategy.

When a user searches for a query on Google search, using the keyword in the query as a cue, Google sends ads of different advertisers to the auction. Also, advertisers define a maximum cost-per-click they are willing to pay for their ad to be shown. This maximum bid is extended up to 30% of its original value to benefit an advertiser to beat the competitors. This is only for advertisers who has opted for enhanced CPC. And this is done only on auctions that Google thinks have a chance of conversion. Based on this max bid and quality score, ad rank is calculated. Google decides which ad is shown on the top using ad rank. And the rest of the ads come next in the order of their ad ranks.

What is the new enhanced CPC?

Google’s new enhanced CPC aims at removing the 30% cap on the maximum CPC bid. Instead, Google adjusts the bid automatically while considering the probability of a click leading to a conversion. Google predicts the conversion probability of that particular advertiser’s account based on the historical data of conversions. Other factors including the match type, keyword-query match, location, language, browser, time of the day, date of the month etc. Your bid might increase or decrease as needed. Google believes that this automated bid adjustment strategy will increase the ROI of AdWords campaigns.

The transition from the old strategy to the new –

Even though Google officially announced the launch of enhanced CPC, the transition from the old strategy to the new might probably be slow. Especially, AdWords, as per popular reports, might do a split testing first.

With regular evaluation, AdWords will validate the improvements from the test. If these results show a significant progress, this new automation might get popular among the AdWords community.

An important note for everyone –

With enhanced CPC being still an experiment, at present, the outcomes are only theoretical. Your spend might, first of all, see a spike in the initial weeks. And probably even out in the months to come. It might also go down drastically initially but burst out later. We furthermore aren’t sure of anything as of now. But at AdNabu, we recommend not switching to E-CPC yet, instead use our in-house Bid Optimizer, at least for your campaigns on AdNabu.

How to find Statistical Significance in AdWords Reports

AdWords or any performance oriented marketing platform is all about numbers. All your actions are based on how historically campaigns, ad groups, keywords have performed. This data however can be quite deceiving if interpreted incorrectly. This article explains the common mistakes a marketer makes while dealing with data and more specifically lack of significant data.

Statistically Significant Data

Different industries follow different methods to calculate statistical significance. Here is a wikipedia article on statistical significance. Statistical significance is extremely important in adwords to make any changes to your campaigns.

Lets say as a marketer, you are given the task of reducing the cost per conversion for your client and the report looks like something given below.

Campaigns with statistical significance

Nabu has 3 campaigns running for his hotel. The AdWords report for the last 30 days is as follows

Campaign Clicks Cost Cost per Conversion Conversions
Hotel 1 200 100 5 20
Hotel 2 300 180 6 30
Hotel 3 100 100 10 10

Looking at the above data, you made the following conclusion.

Hotel 1 and Hotel 2 Campaigns are almost running at the same cost per conversion but Hotel 3 is running at a cost per conversion which is much higher than the other 2. This usually means that there is good amount of improvement that can be done in reducing the cost per conversion of Hotel 3 campaign, Which would lead to overall reduction in cost per conversion.

The above is a perfectly valid argument as there is enough data available to arrive at this conclusion. Now take a look at the following report.

Campaigns with no statistical significance

Campaign Clicks Cost Cost per Conversion Conversions
Hotel 1 200 100 5 20
Hotel 2 300 180 6 30
Hotel 3 50 20 10 2

Here one cannot say with confidence that Hotel 3 is not performing well because of the lack of data. There have just been 2 conversions and this data is too low to arrive at any meaningful conclusion

Cheat sheet for statistical significance

As a rule of thumb, look for campaigns with more than 10 conversions for any given period before coming to a conclusion. For campaigns with less than 10 conversions, it makes lot more sense to look at a longer time period. if you were looking at last 30 days, have a look at last 90 days and see if the conversions is reaching 10. If you still cannot get to 10 conversions it is better to wait for more time before jumping to any conclusions.

How to send automated adwords reports as email periodically

Every marketer wants to be on top of their data as frequently as it is possible. In an extremely dynamic environment like AdWords, Its important to be up to date with your campaigns almost daily. Let us look at the most common reports that AdWords experts track and steps to automate them.

AdWords Report Types

Here are the top reports in no particular order

  • Account Performance Report
  • Campaign Performance Report
  • Ad Group Performance Report
  • Keyword Performance Report
  • Search Term Performance Report

Out of these reports, the one report i track daily is the campaign performance report. This report gives a bird’s eye view of all the campaigns running in your account and gives an early indication of things going wrong.

AdWords Scheduled Emails

AdWords lets you schedule reports periodically. Although helpful, there are some serious limitations.

  • All emails have a link to download the report from and not the report itself. To download the report, one needs to log in to adwords account. This becomes a huge hassle if you are accessing reports from different devices.
  • Emails cannot be sent to people without the account access. Although a good security feature, There will be times the reports need to be sent to senior management who necessarily need not have AdWords account access.
  • Reports cannot be attached to the emails sent.
  • HTML emails are not supported.

AdWords Scripts

AdWords Scripts solve the serious limitations by providing a programmatic way to retrieve and email data. Main advantages of AdWords Scripts are as follows

  • Can send email reports to people who may not have adwords account access.
  • Emails can be formatted as simple text or html
  • Reports can be attached as pdf, csv reports in the email.

There are some limitations of AdWords Scripts also

  • Need to have programming expertise to create reports
  • Using the same reports is a tedious task
  • Customizing reports is not easy & takes time and change in the script itself
  • A small change in the script has to be replicated across multiple accounts by copy pasting the same code

Here is a free script for sending last 30 days campaign performance report. github

function main() {
  var date = getCurrentDate();
  var titles = ["Campaign", "Clicks", "Impressions", "Conversions", "Cost","Cost/conversion"];
  var last_30_days = runReport("LAST_30_DAYS","CAMPAIGN_PERFORMANCE_REPORT");
  var last_30_days_total = runReport("LAST_30_DAYS","ACCOUNT_PERFORMANCE_REPORT");
  last_30_days_total[0][0] = 'Total';
  var last_30_days_html = arrayToTable(last_30_days, titles, "Campaign Stats for Last 30 Days");
  var content = last_30_days_html;

  mail("[email protected]", "AdWords Campaign Stats as on " + date, content); // change the email here
  // one can add comma separated emails also like "[email protected], [email protected]"

function getCurrentDate(){
  var today = new Date();
  var dd = today.getDate();
  var mm = today.getMonth()+1; //January is 0!
  var yyyy = today.getFullYear();

  if(dd<10) {

  if(mm<10) {

  today = dd+'/'+mm+'/'+yyyy;

  return today;

function runReport(time_range,report_type) {
  if(report_type == "CAMPAIGN_PERFORMANCE_REPORT"){
    var select_name = "CampaignName"
    var report =
      'SELECT CampaignName, Clicks, Impressions, ConvertedClicks, Cost, CostPerConvertedClick ' +
      'FROM ' + report_type +
      ' WHERE  Impressions > 0 AND Clicks > 0 AND CampaignStatus = ENABLED '+
      'DURING ' + time_range + ' '
  if(report_type == "ACCOUNT_PERFORMANCE_REPORT") {
    var select_name = "AccountDescriptiveName"
    var report =
      'SELECT AccountDescriptiveName, Clicks, Impressions, ConvertedClicks, Cost, CostPerConvertedClick ' +
      'FROM ' + report_type +
      ' WHERE  Impressions > 0 AND Clicks > 0 '+
      'DURING ' + time_range + ' '

  var rows = report.rows();
  var report = []
  while (rows.hasNext()) {
    var row =;
    var campaignName = row[select_name];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var cost = row['Cost'];
    var conversions = row['ConvertedClicks'];
    var costperConversion = row['CostPerConvertedClick'];
    report.push([campaignName, clicks, impressions, conversions, cost, costperConversion]);
  return report;

function mail(to, subject, content){
    to: to,
    subject: subject,
    htmlBody: content,

function arrayToTable(report_array, titles, heading){
  var html_table = "<h2>" + heading + "</h2>";

  html_table += "<table border='1'><tr>";

  for (var i=0; i<titles.length; i++){
    html_table += "<th>" + titles[i] + "</th>";

  html_table += "</tr>";

  for (var j=0; j<report_array.length; j++){
    html_table += "<tr>";

    for (var k=0; k<report_array[j].length; k++){
      html_table += "<td>" + report_array[j][k] + "</td>";

    html_table += "</tr>";

  html_table += "</table>";
  return html_table;

function sum_array(report_array){

  var result = ["Total"];

  for (var k=1; k<report_array[0].length; k++){
    result[k] = 0.0;

  for (var j=0; j<report_array.length; j++){
    for (var k=1; k<report_array[j].length; k++){
      result[k] += (+(report_array[j][k]).replace(',', ''));
  for (var k=1; k<report_array[0].length; k++){
    result[k] = Math.round(result[k]);

  return result;


Other Sample AdWords Scripts for reporting.

AdNabu Reporting for AdWords

AdNabu simplifies the entire process of reporting. Within a few clicks, One can create a scheduled report which can run at any time of day/week/month. These reports are mobile optimized and highly customizable as per need. Biggest advantages of AdNabu platform are

  • Ability to schedule reports any time
  • HTML formatted emails
  • Ability to send to multiple email addresses
  • Includes graphical overview of campaigns which can be segmented on day/week/month
  • Highly customizable reports with all main variables available

Below is a sample report sent through AdNabu’s AdWords Report Creation Tool

sample adwords report
a sample overview of reports sent by adnabu

Start your free trial for AdWords Reporting Tool today.