Nonbrand uitsluiten in Shopping (1 merk)

Wanneer je Shopping campagnes splitst op branded en non-branded zoektermen, krijg je vaak nog steeds non-branded zoektermen binnen in je branded Shopping campagne(s). Dit script sluit deze termen automatisch uit.

Start nu!
Nonbrand uitsluiten in Shopping (1 merk)
Nonbrand Get started!

De werkzaamheden van een Google Ads specialisten is er de laatste jaren niet gemakkelijker op geworden. Waar je voorheen (zegge ‘vroegah’) aan een zoekwoord, bod en advertentietekst voldoende had om je te kunnen onderscheiden, moet je nu ook rekening houden met onder andere advertentieplanning, doelgroepen, apparaten, locaties, demografie en advertentie-extensies (ook alweer 11 verschillende soorten extensies).

Om te zorgen dat jouw campagnes optimaal zijn ingericht, heb je veel tijd nodig. Tijd die je misschien niet voor elke klant beschikbaar hebt. Om de beschikbare tijd maximaal te benutten, kan je daarom gebruik maken van Ads scripts en routinematige werkzaamheden automatiseren.

Op onze blog zullen we de komende tijd een aantal scripts publiceren die elke SEA-specialist kan helpen haar/zijn werk een stuk leuker te maken.

Non-branded search queries in branded (shopping)campagnes

Wij zijn vast niet de enigen die onze campagne structuur voor Google Shopping campagnes altijd indelen in branded en non-branded campagnes. De nonbranded campagnes hebben een hogere prioriteit, maar hier sluit je branded keywords uit, zodat je deze kan opvangen met je brand campagne en biedingen kan verhogen.

Hoewel in theorie fullproof, in de praktijk komt er nog veel nonbranded verkeer binnen in je branded campagnes. Dat betekent dat je met hoge regelmaat deze zoekwoorden moet uitsluiten van je campagne.

Dat kan makkelijker! Met onderstaand script kan je nonbranded search queries automatisch uitsluiten in je branded campagnes, zodat de splitsing van jouw verkeer optimaal is.

Het script

Dit script is bedoeld voor adverteerders waarbij branded alleen de eigen merknaam bedoeld wordt. Dit geldt bijvoorbeeld voor producenten, zoals onze klant Paula’s Choice. Hier splitsen wij al ons Google Shopping verkeer in zoektermen met en zonder de merknaam ‘Paula’s Choice’. Wanneer je het script toevoegt aan jouw account, zorg er dan voor dat deze elk uur draait.

Heb je campagnes met veel verschillende merken? Dan werkt dit script niet. Maar niet getreurd, ook daar hebben we een oplossing voor gebouwd, gebaseerd op de productfeed.

The script
// Copyright 2022
// Free to use or alter for everyone. A mention would be nice ;-)
//
// Created by: Tibbe van Asten
//
// Created: 14-06-2018
// Last update: 16-10-2022
// 
// ABOUT THE SCRIPT
// With this script you can exclude non-branded queries 
// from branded shopping campaigns. By doing this 
// every day, the accountstructure will remain clean.
//
////////////////////////////////////////////////////////////////////

var config = {
  
    LOG : true,

    // Branded search query. Make sure to use quotes.
    // If you only use 2 branded keywords, remove variable + row in var report
    BRANDED_KEYWORDS_1 : "",		
    BRANDED_KEYWORDS_2 : "",
    BRANDED_KEYWORDS_3 : "",
  
    // The mark for every branded campaign in the account
    B_SELECTOR : "[B]"					
 
}

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

function main() {
  
    var report = AdsApp.report(
      "SELECT campaign.name, ad_group.id, ad_group.name, search_term_view.search_term " +
      "FROM search_term_view " +
      "WHERE campaign.status = 'ENABLED' AND ad_group.status = 'ENABLED' " +
      "AND campaign.name REGEXP_MATCH '(?i)(.*)?"+config.B_SELECTOR+"(.*)?' " +
      "AND search_term_view.search_term NOT REGEXP_MATCH '(?i)(.*)?"+config.BRANDED_KEYWORDS_1+"(.*)?' " +
      "AND search_term_view.search_term NOT REGEXP_MATCH '(?i)(.*)?"+config.BRANDED_KEYWORDS_2+"(.*)?' " +
      "AND search_term_view.search_term NOT REGEXP_MATCH '(?i)(.*)?"+config.BRANDED_KEYWORDS_3+"(.*)?' " +
      "AND search_term_view.status = 'NONE'"
    );    

    var rows = report.rows();
    while (rows.hasNext()) {
      var row = rows.next();
      	
      var query = trimQuery(row);

      var shoppingAdGroupIterator = AdsApp
        .shoppingAdGroups()
        .withCondition("Id = '"+row["ad_group.id"]+"'")
        .get();
      
      while (shoppingAdGroupIterator.hasNext()) {
        var shoppingAdGroup = shoppingAdGroupIterator.next();
        shoppingAdGroup.createNegativeKeyword(query);
        
        if(config.LOG === true){
          Logger.log(row["campaign.name"]);
          Logger.log(row["ad_group.name"]);
          Logger.log(query);
          Logger.log(" ");       
        }
      } // shoppingAdGroupIterator
      
      var adGroupIterator = AdsApp
        .adGroups()
        .withCondition("Id = '"+row["ad_group.id"]+"'")
        .get();
      
      while (adGroupIterator.hasNext()) {
        var adGroup = adGroupIterator.next();
        adGroup.createNegativeKeyword(query);

        if(config.LOG === true){	
          Logger.log(row["campaign.name"]);
          Logger.log(row["ad_group.name"]);
          Logger.log(query);
          Logger.log(" ");   
        }
      } // adGroupIterator
      
    } // rowIterator  
  
    Logger.log("Thanks for using this custom script by Tibbe van Asten!");
  
} // function main()

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

function trimQuery(row){

  // When the searchquery exceeds the limit of 10 words, we will split
  // the query and put max. 10 words back together as a phrasematch query
  var query = "";
  if (row["search_term_view.search_term"].split(" ").length < 10) {
    query = "[" + row["search_term_view.search_term"] + "]";
  } else {
    for (var i = 0; (i < row["search_term_view.search_term"].split(" ").length) && (i < 10); i++){
      query += row["search_term_view.search_term"].split(" ")[i] + " ";
    }
    query = '"' + query.replace(/\s+$/,'') + '"';
  }

  return query;

} // function trimQuery()
Show whole script!
Loading Comments
The Experts
Tibbe van Asten Team Lead Performance Marketing
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
Jermaya Leijen Digital Marketing Strategist
Krzysztof Bycina PPC Specialist from Poland
How about you? JOIN US!
Sharing Knowledge
Caring

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