{"id":3118,"date":"2016-09-01T19:15:20","date_gmt":"2016-09-01T13:45:20","guid":{"rendered":"http:\/\/www.karooya.com\/blog\/?p=3118"},"modified":"2019-05-31T17:42:21","modified_gmt":"2019-05-31T12:12:21","slug":"adwords-script-identify-duplicate-keywords-including-close-variants","status":"publish","type":"post","link":"https:\/\/www.karooya.com\/blog\/adwords-script-identify-duplicate-keywords-including-close-variants\/","title":{"rendered":"AdWords Script to Identify Duplicate Keywords, Including Close Variants"},"content":{"rendered":"<p class=\"lead\"><span style=\"font-weight: 400;\">It\u2019s been 2 years since AdWords removed the option to <\/span><a href=\"https:\/\/adwords.googleblog.com\/2014\/08\/close-variant-matching-for-all-exact.html\"><span style=\"font-weight: 400;\">exclude close variants<\/span><\/a><span style=\"font-weight: 400;\"> from exact and phrase match keywords. But, there are many accounts out there which continue to have close variants as separate keywords in their accounts. \u00a0At best, having close variant duplicate keywords in the account is harmless. You continue to get the all the traffic that matches if any of the close variant keyword. But, at worst, it can give you misleading signals.<\/span><\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3126 aligncenter\" src=\"https:\/\/www.karooya.com\/blog\/wp-content\/uploads\/2016\/09\/identify-duplicate-keywords.jpg\" alt=\"identify duplicate keywords\" width=\"631\" height=\"422\" \/>\n<p>&nbsp;<\/p>\n<h4><b>The problem with duplicate keywords<\/b><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Consider an account that has the following 2 keywords.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">[pet food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[pets food]<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">For the sake of simplicity, consider that all the settings for these keywords are same. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Now, when someone searches for \u201cpet foods\u201d, the search query matches to any of the two keywords as both are close variants of the search query. \u00a0Unless you have these two keywords configured in separate ad groups, with carefully chosen negative keywords, AdWords can match the search query with any of the keyword. <\/span><\/p>\n<p>&nbsp;<\/p>\n<h4>Why is that a problem?<\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">First, <\/span><b>you will never know the real performance of a keyword<\/b><span style=\"font-weight: 400;\">. \u00a0If the search queries are being matched with multiple close variant keywords, the actual performance is combined performance of all those keywords.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Second, <\/span><b>your metrics may show a wrong picture<\/b><span style=\"font-weight: 400;\">. \u00a0For a month, if traffic from [pet food] moves to [pets food], you might get worried. You will try to find the answer with bids, ads and other changes that you may have done to the account. \u00a0Such false alarms are undesirable. They can make you complacent and ignore the real ones as well. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Third, <\/span><b>your ad test may take longer time to arrive at significance<\/b><span style=\"font-weight: 400;\">. If the keywords [pet food] and [pet foods] are in separate ad groups and you are testing a new ad copy, \u00a0you will arrive at a conclusion faster if only of the keyword was getting all the impressions. Having traffic spread across multiple keywords means sub-optimal ad copies will be shown for longer duration, thereby affecting the performance of the account. <\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><strong>What\u2019s the Solution?<\/strong><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">We bring you the true duplicate keyword detector. \u00a0Most of the existing solutions identify \u00a0presence of one keyword across multiple ad groups. This doesn\u2019t solve the problem of close variants. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">The AdWords script developed by us will flag even the close variants as duplicates<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">This AdWords script identifies the duplicates within same keyword match type. That is the keywords [pet food] in exact match and \u201cpet food\u201d in phrase match are not shown as duplicates.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1><span style=\"font-weight: 400;\">Here are some example of duplicate keywords that our AdWords script will help you identify.<\/span><\/h1>\n<p>&nbsp;<\/p>\n<table style=\"border: 1px solid black; width: 80%; align: center;\">\n<tbody>\n<tr style=\"border: 1px solid black;\">\n<td><span style=\"font-weight: 400;\">Sr No<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Duplicate Keywords<\/span><\/td>\n<\/tr>\n<tr style=\"border: 1px solid black;\">\n<td><span style=\"font-weight: 400;\">1<\/span><\/td>\n<td><span style=\"font-weight: 400;\">[pet food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[pets food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[pet foods]<\/span><\/td>\n<\/tr>\n<tr style=\"border: 1px solid black;\">\n<td><span style=\"font-weight: 400;\">2<\/span><\/td>\n<td><span style=\"font-weight: 400;\">\u201ccheap flight\u201d<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201ccheap flights\u201d<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u201ccheapest flights\u201d<\/span><\/td>\n<\/tr>\n<tr style=\"border: 1px solid black;\">\n<td><span style=\"font-weight: 400;\">3<\/span><\/td>\n<td><span style=\"font-weight: 400;\">+nyc +italian +restaurants<\/span><\/p>\n<p><span style=\"font-weight: 400;\">+italian +restaurant +nyc<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\"> Here\u2019s what the resulting sheet looks like. All the duplicate keywords are grouped together, ordered by impressions, highest first. Each duplicate group has single highlighting. You can see the performance from last 30 days for each of those keywords.\u00a0<\/span>Based on the performance data, you can decide which keywords to pause and redirect traffic to other well-performing keyword.<\/p>\n<p>&nbsp;<\/p>\n<a href=\"https:\/\/www.karooya.com\/blog\/wp-content\/uploads\/2016\/09\/aw-script-duplicate-keywords.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1369\" height=\"656\" class=\"alignnone size-full wp-image-3119\" src=\"https:\/\/www.karooya.com\/blog\/wp-content\/uploads\/2016\/09\/aw-script-duplicate-keywords.png\" alt=\"AdWords Script Duplicate Keywords\" \/><\/a>\n<p>&nbsp;<\/p>\n<p><b>An Important Note<\/b><span style=\"font-weight: 400;\">: \u00a0This script uses a technique called stemming to find out the roots of each word. For example, the words \u201cfood\u201d and \u201cfoods\u201d will both have same root word \u201cfood.\u201d<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">To get root word for each word, this script contacts an external service, built by Karooya. This scripts break all the keywords in individual words, removes duplicate instances of words and then contacts external service to get stemmed words. For example, let\u2019s assume an account that has the following keywords, in exact match. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">[pet food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[dog food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[dogs food]<\/span><\/p>\n<p><span style=\"font-weight: 400;\">[cat foods]<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Here, the unique words are &#8211; pet, food, dog, dogs, cat, foods. Stem roots for only these words are retrieved. The actual keywords are never sent to the service. \u00a0Also, these source words are not stored anywhere. \u00a0<\/span><span style=\"font-weight: 400;\">Rest assured, your keyword data is safe. <\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>How to use this AdWords script<\/b><span style=\"font-weight: 400;\">?<\/span><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Now that you know what the <span class=\"nanospell-typo-disabled\" data-cke-bogus=\"true\">AdWords<\/span>\u00a0script can do, let&#8217;s talk about the script. <\/span><a href=\"https:\/\/www.karooya.com\/resources\/aw-script\/detect-duplicate-keywords.js\"><span style=\"font-weight: 400;\">You can get this script here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here are the variables that you can change to customize it to your requirement.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>SPREADSHEET_URL<\/b><span style=\"font-weight: 400;\"> : <\/span><b>This is the only variable that you must change. <\/b><span style=\"font-weight: 400;\">This is the Google Sheet which will have the result once you execute the script. Create a new sheet with Google Sheet and copy-paste URL of that sheet in place of \u2018https:\/\/docs.google.com\/YOUR-SPREADSHEET-URL-HERE\u2019. <\/span><\/li>\n<li style=\"font-weight: 400;\"><b>DATE_RANGE<\/b><span style=\"font-weight: 400;\">: You can use some pre-defined ranges like LAST_30_DAYS or LAST_14_DAYS. By default, the script will get the data for last 30 days.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>USE_CUSTOM_DATE_RANGE<\/b><span style=\"font-weight: 400;\">: If you want a particular date range to be used then, set this flag to &#8220;true&#8221; and modify the START_DATE and END_DATE to indicate the date range. The date format is \u201cyyyy-mm-dd\u201d aka \u201cYear-Month-Date.\u201d For example, if you want a report from last quarter of 2015, the START_DATE would be \u201c2015-09-01\u201d and END_DATE would be \u201c2015-12-31.\u201d<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>IS_MCC_ACCOUNT<\/b><span style=\"font-weight: 400;\"> : This flag is to indicate whether you will be running this script at MCC-level. By default, it is set to false. Change it to \u201ctrue\u201d if you want to use for all the linked accounts in your MCC account. The results for each account will be stored in a separate sheet. Be careful, if you have many many accounts.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>IGNORE_PAUSED_CAMPAIGNS<\/b><span style=\"font-weight: 400;\">, \u00a0<\/span><b>IGNORE_PAUSED_ADGROUPS<\/b><span style=\"font-weight: 400;\"> and <\/span><b>IGNORE_PAUSED_KEYWORDS<\/b><span style=\"font-weight: 400;\"> : These flags indicate to ignore paused campaigns, ad groups and keywords. By default, these 3 flags are set to true i.e. all the paused campaigns, ad groups and keywords are ignored.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>FILTER_ACCOUNTS_BY_LABEL<\/b><span style=\"font-weight: 400;\"> : If your MCC account has tons of linked accounts, you may not want to run this script for all the accounts. In that case, turn this flag to \u201ctrue\u201d and then specify the label with ACCOUNT_LABEL_TO_SELECT variable. Only the accounts with the specified label will be analyzed to generate this report.<\/span><\/li>\n<li><strong>ACCOUNT_LANGUAGE_CODE :\u00a0 <\/strong>By default the language is set to English. If your\u00a0account&#8217;s primary language is other than English then specify the language of the account to view the duplicate keyword list in that language. No need to change anything for English.\u00a0Following are the languages in which the script has been made accessible and their respective codes:\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>\u00a0ar: Arabic<\/li>\n<li>\u00a0bg: Bulgarian<\/li>\n<li>\u00a0cz: Czech<\/li>\n<li>\u00a0da: Danish<\/li>\n<li>\u00a0nl: Dutch<\/li>\n<li>\u00a0en: English<\/li>\n<li>\u00a0fi: Finnish<\/li>\n<li>\u00a0fr: French<\/li>\n<li>\u00a0de: German<\/li>\n<li>\u00a0hu: Hungarian<\/li>\n<li>\u00a0no: Norwegian<\/li>\n<li>\u00a0pt: Portuguese<\/li>\n<li>\u00a0ro: Romanian<\/li>\n<li>\u00a0ru: Russian<\/li>\n<li>\u00a0es: Spanish<\/li>\n<li>\u00a0sv: Swedish<\/li>\n<li>\u00a0tr: Turkish<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400;\">Once again, <\/span><a href=\"https:\/\/www.karooya.com\/resources\/aw-script\/detect-duplicate-keywords.js\"><b>here is the link to the AdWords script<\/b><\/a><span style=\"font-weight: 400;\">.<\/span><\/h4>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Feel free to send us an email (support AT karooya.com) if you have any queries for this AdWords script.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><span style=\"text-decoration: underline;\"><strong><a href=\"https:\/\/www.karooya.com\/blog\/category\/karooya-adwords-script\/\" target=\"_blank\" rel=\"noopener noreferrer\">Get all the AdWords scripts published by Karooya<\/a>\u00a0<\/strong><\/span><\/h4>\n<p>&nbsp;<\/p>\n<h4><strong>Related Link:<\/strong><\/h4>\n<ul>\n<li class=\"text-blue\"><a href=\"https:\/\/www.karooya.com\/services\" target=\"_blank\" rel=\"noopener\">API\/Scripts development services<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s been 2 years since AdWords removed the option to exclude close variants from exact and phrase match keywords. But, there are many accounts out there which continue to have close variants as separate keywords in their accounts. \u00a0At best, having close variant duplicate keywords in the account is harmless. You continue to get the&#8230;  <a href=\"https:\/\/www.karooya.com\/blog\/adwords-script-identify-duplicate-keywords-including-close-variants\/\" class=\"more-link\" title=\"Read AdWords Script to Identify Duplicate Keywords, Including Close Variants\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[14],"tags":[],"class_list":["post-3118","post","type-post","status-publish","format-standard","hentry","category-karooya-adwords-script"],"featured_image_src":null,"author_info":{"display_name":"Shashikant","author_link":"https:\/\/www.karooya.com\/blog\/author\/shashi\/"},"_links":{"self":[{"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/posts\/3118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/comments?post=3118"}],"version-history":[{"count":17,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/posts\/3118\/revisions"}],"predecessor-version":[{"id":8851,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/posts\/3118\/revisions\/8851"}],"wp:attachment":[{"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/media?parent=3118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/categories?post=3118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.karooya.com\/blog\/wp-json\/wp\/v2\/tags?post=3118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}