Why Google Smart Bidding spent €339 for just one click?

And why is Google pushing everyone to use Smart Bidding? If this bidding approach is really so superior, it would be easy for Google to take all the risk and pay for conversions.

Why did they do this on the display network? In assume that they had to because more and more people were dropping out completely because of all the fraudulent placements and clicks (but that’s worth an extra blog post).

Time to ask some questions. Let’s start with Google’s “in-market audiences” to provide an idea of what might happen. In the background, a model tells that the probability of a sale is higher than average.

  • What happens to CPCs if everyone bids up on that list?
  • What are the incremental costs?
  • What are the incremental conversions?

In this scenario, there is only one winner.

Google’s model says that the probability of a sale is higher than average. What happens to the CPCs if everybody bids up on that list. What are the incremental costs?

Now think of a system where you can do this on a large scale because your bids are totally managed by Google. I suspect there will be some crazy CPC spikes if some auction providers use this system.

Time for a deep dive to get some answers.

On this post
    A critical view on bidding features in Google Ads

    First: Smart Bidding can work

    This is something for people who don’t have time or budget to think about their own bidding approaches. In some industries, competition is very high, and it totally makes sense to invest in your own bidding strategies. The main challenges for all bidding systems out there are:

    • Sparse data: many keywords but only a small amount of conversion data that often cause.
    • High variance in measured conversion rates, and even more critical in basket sizes.

    In simple words: Just because you’ve made a big sale in the past, it’s normally a bad idea to predict the same performance in the future. And yes—your average performance numbers will still look okay for quite a while if you overspend after such an outlier. But you’re doing the wrong thing.

    What are the CPC Peaks for your Smart Bidding setup?

    Google will tell you not to use upper bounds for your bids in their strategies. Their algorithms do that better, they say. If you have a problem with too expensive single clicks, you can follow this approach to get a first approximation.

    • Use the search query performance report in the most granular way possible (Query, Keyword, Date, Device, Network) to get single clicks in most cases. Do this for a long time.
    • Order by CPC, and please comment this post with your high score. The maximum I observed was €339 in a business where values per-click are below €5 when you look at big numbers.
    • Identify your best case Value Per Click (ConversionValue/Clicks): e.g., take the keyword with a large amount of clicks that has the highest value per-click.
    • Calculate your upper bound bid: e.g., UpperBoundBid = VPC (Best Case) / ROI-Target.
    • Shortcut for the Upper Bound CPC: just filter out the Clicks that are, e.g., 3* AverageCPC for that account.
    • Sum up all costs and conversion values for single clicks that cost more than the upper bound.

    If this task is too big for you to manage in an Excel spreadsheet, you can also use this account-level Google Ads script for this task:

    // SEAlyzer CPC Peak Analyzer
    // Author: Stefan Neefischer (stefan@pemavor.com)
    //#################################################
    // Customize to your needs START ->
    var MAX_CPC = 30.00 // Type in your upper CPC bound - some good dynamic bounds are: 2*AvgCPC, 3*AvgCPC
    var TIME_PERIOD = "LAST_30_DAYS" // Type in your Date Range: 20190101,20200301 or use predefined enums like LAST_30_DAYS
    // <-END
    //#################################################
    function main() {
      fetchReport(MAX_CPC)
    }
    function fetchReport(upperbound) {
     var upperbound_micro = 1000000 * upperbound // microamount is used in awql - we have to convert it
      
     var top_cpc = 0
     var cost_sum = 0
     var conversion_sum = 0
     var conversionValue_sum = 0
     
     var report = AdWordsApp.report(
       'Select KeywordId,AdNetworkType2,Query,Date,Impressions,Clicks,AverageCpc,Conversions,ConversionValue,Cost,Device from SEARCH_QUERY_PERFORMANCE_REPORT WHERE AverageCpc > '+ upperbound_micro +' DURING '+TIME_PERIOD)
       .rows();
      outliercount = 0
      while (report.hasNext()) {
         var row = report.next();
         outliercount+=1
         cost_sum += parseFloat(row['Cost'])
         conversion_sum += parseFloat(row['Conversions'])
         conversionValue_sum+=parseFloat(row['ConversionValue'])
         //Logger.log(row['AverageCpc'])
         if (top_cpc < row['AverageCpc']) {
            top_cpc = row['AverageCpc']
         }
       
      }
      if (conversion_sum > 0) {
        cpo = cost_sum/conversion_sum
      }
      else {
        cpo = cost_sum
      }
      if (cost_sum > 0) {
        roi = conversionValue_sum / cost_sum
      }
      else {
        roi = 0
      }
      
      Logger.log("############# Segment performance of Clicks with CPCs > "+upperbound+" ################################################################")
      Logger.log("-> Your CPC Peak was "+top_cpc+" for the time period " + TIME_PERIOD)
      Logger.log("-> There where "+outliercount+" Cases of Clicks higher than your CPC bound")
      Logger.log("-> In total you paid "+cost_sum.toFixed(2)+" for those Clicks")
      Logger.log("-> This segment of Clicks generated "+conversion_sum.toFixed(2)+" conversions resulting in a CPO of "+cpo.toFixed(2))
      Logger.log("-> This segment of Clicks generated "+conversionValue_sum.toFixed(2)+" in ConversionValue resulting in a ROI of "+roi.toFixed(2))
      Logger.log("###########################################################################################################################")
      
    }

    Now you can answer some interesting questions:

    • What is the total number of CPC outliers in your period?
    • What is your personal CPC high score?
    • What is the ROI of clicks identified as outliers?
    • Does it make sense to spend this money?

    You’ll probably stop reading this blog article after you see your numbers, and then directly go to your Google Ads account and set bid upper bounds for Google bidding strategies. Not a bad idea.

    You can do this not only for Google’s bidding strategies—I monitor my own bidding solutions all the time using approaches like this.

    Conclusion

    I focused only on the highest CPCs on a global level to get a first approximation. This approach helped determine if smart bidding is wasting money by paying way too much for the “positive signals” within this bidding black box.

    With this approach, we don’t capture CPC peaks for keywords that are at a lower average CPC level—for that, we need to analyze CPC outliers at the keyword level. Now, this gets a bit more complex, and I don’t want to confuse you with a wall of Python code.

    Smart Bidding can still be the best solution for you if it doesn’t make sense to spend a lot of time and effort on manual bidding. If you do use it, I highly recommend setting some bid upper bounds.

    Let’s tackle Google Ads together

    Struggling with Google’s Smart Bidding feature and its impact on your CPCs and conversions? You’re not alone. Many businesses are feeling the same pressure and are looking for a way to control their bidding strategies. That’s where we come in. Get expert guidance on Google Ads Bidding.

    More Similar Posts