Bodaanpassingen voor locaties

Pas bodaanpassingen toe op de toegevoegde locaties in alle campagnes op basis van de CPA.

Start nu!
Bodaanpassingen Get started!

 Door het toevoegen van zoveel mogelijk locaties in je campagne, krijg je meer inzicht in de prestaties in het targetgebied. Op die manier kan je bodaanpassingen doen om de kosten per conversie te drukken op locaties die te duur zijn.

We hebben ook scripts voor bodaanpassingen op doelgroepen, apparaten en voor elk uur van de dag. Start gelijk met het automatiseren van alle bodaanpassingen in jouw accounts!

Instellingen

In het script kan je slechts de volgende zaken aanpassen:

  • LOG: Geef aan of het script de tussenstappen moet rapporteren, door de waarde aan te passen naar 'true'.
  • DATE_RANGE: Het script kijkt naar de conversies en kosten over deze periode.
  • EXCLUDE_LOCATIONS: Sluit locaties uit in het script op basis van locatie ID's. Voeg meerdere locaties toe, gescheiden met een komma. Je vind de ID's hier: https://developers.google.com/adwords/api/docs/appendix/geotargeting
  • MINIMUM_CONVERSIONS: Optioneel, selecteer alleen locaties die minimaal dit aantal conversies hebben behaald.
  • MINIMUM_COST: Optioneel, selecteer alleen locaties die minimaal deze kosten hebben gemaakt.
  • MINIMUM_CLICKS: Optioneel, alleen locaties selecteren met dit aantal klikken.
  • MAX_BID: De bodaanpassing zal niet hoger zijn dan dit ingestelde bod. 1.3 = +30% of 2 = +100%
  • MIN_BID: De bodaanpassing zal niet lager zijn dan dit ingestelde bod. 0.75 = -25% of 0.5 = -50%.

Frequentie: Om voldoende data te genereren adviseren we om het script eenmaal per dag of week te draaien.

The script
// Copyright 2020. Increase BV. All Rights Reserved.
//
// Created By: Tibbe van Asten
// for Increase B.V.
// 
// Created: 20-07-2018
// Last update: 31-03-2020
//
// ABOUT THE SCRIPT
// With this script we adjust the biddings for locations in 
// active campaigns.
//
////////////////////////////////////////////////////////////////////

var config = {

  LOG : true,
  DATE_RANGE : "LAST_30_DAYS",
  
  // Add location ID's to skip from bidadjustments, comma seperated
  // Find location ID's: https://developers.google.com/adwords/api/docs/appendix/geotargeting
  EXCLUDE_LOCATIONS : "",
  
  // Optional: Use minimum conversions and/or cost to select devices.
  // Cost is in account currency. Leave empty to skip.
  MINIMUM_CONVERIONS : "2",
  MINIMUM_CLICKS : "100",
  MINIMUM_COST : "10",
  
  // Bidadjustments won't be higher then MAX_BID and not lower then MIN_BID.
  // Examples: 1.2 = +20%, 0.8 = -20%, 2 = +100%.
  MAX_BID : 1.1,
  MIN_BID : 0.9,
  
}

////////////////////////////////////////////////////////////////////

function main() {
    
  var locationIterator = AdsApp
    .targeting()
    .targetedLocations()
    .withCondition("CampaignStatus = ENABLED")
    .get();

  while(locationIterator.hasNext()) {
    var location = locationIterator.next();
    
    // Skip location if set to exclude in the config
    if(config.EXCLUDE_LOCATIONS !== "" && config.EXCLUDE_LOCATIONS.indexOf(location.getId()) >= 0 || location.getCampaign() == null){
      continue;
    } 

    var locationConversions = location.getStatsFor(config.DATE_RANGE).getConversions();
    var locationCost = location.getStatsFor(config.DATE_RANGE).getCost();
    var locationClicks = location.getStatsFor(config.DATE_RANGE).getClicks();
    var locationCpa = locationCost / locationConversions;
    var campaignCpa = location.getCampaign().getStatsFor(config.DATE_RANGE).getCost() / location.getCampaign().getStatsFor(config.DATE_RANGE).getConversions();
    var newLocationBid = campaignCpa / locationCpa;
    
    // Only change locations that have the required conversions, cost or clicks
    if(config.MINIMUM_CONVERIONS != "" || config.MINIMUM_COST != "" || config.MINIMUM_CLICKS != ""){

      if(locationConversions < config.MINIMUM_CONVERIONS && locationCost < config.MINIMUM_COST && locationClicks < config.MINIMUM_CLICKS) continue;

    } // check minimums     

    // If there is an location CPA, we will place a bidadjustment
    if(isNaN(newLocationBid) === false && isFinite(locationCpa) === true && location.getBidModifier() !== newLocationBid) {
      if(newLocationBid < config.MIN_BID) { newLocationBid = config.MIN_BID; }
      if(newLocationBid > config.MAX_BID) { newLocationBid = config.MAX_BID; }
      
      	if(config.LOG === true) {
          Logger.log("Campaign: " + location.getCampaign().getName());
          Logger.log("Location: " + location.getName()); 
          Logger.log("Location CPA: " + locationCpa);
          Logger.log("New location bid: " + newLocationBid);
          Logger.log(" ");
        }  
      
      location.setBidModifier(newLocationBid);    
         
    }    

  } // location iterator      
  
} // function main()
Show whole script!
The Experts
Tibbe van Asten Head of PPC @ Increase
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
How about you? JOIN US!
Sharing Knowledge
Caring

Kennis delen

Adsscripts.com staat voor het delen van kennis. In de huidige markt houden SEA-specialisten de kennis en ervaring graag voor zich. Wij zijn er van overtuigd dat het delen van kennis ervoor kan zorgen dat iedereen beter wordt in haar of zijn werk. Daarom lopen wij hier graag in voorop, door onze kennis over scripts te delen met iedereen.

Wil jij ook graag een bijdrage leveren? Wij staan open voor nieuwe ideeën en feedback op alles wat je op Adsscripts.com vindt.

Neem contact op

Training &
Workshop
Neem contact op!
Adsscripts Training & Workshop