+38 (066) 176 99 49
ua ru en
Надіслати запит

Як автоматизувати роботу PPC-фахівця?

Як автоматизувати роботу PPC-фахівця?

Фахівці з контекстної реклами або власники інтернет-магазинів, які ведуть рекламний аккаунт своїми руками, щодня стикаються з необхідністю автоматизації контекстної реклами. У даній статті я розповім, як за допомогою невеликих і швидких налаштувань, можна звільнити себе від нудної монотонної роботи.

Головними помічниками в цій справі стануть два скрипта Google Ads. Перший скрипт дозволяє підставляти вартість товару в оголошення без подальшої модерації. Другий – зупиняє показ оголошень товарів, яких немає в наявності. Погодьтесь, це ж чудово!

За допомогою скриптів ми не тільки економимо свій час, але ще і позбавляємося від простою реклами, після внесених руками змін до оголошення.

Для установки даних скриптів нам не знадобляться особливі знання з області програмування. Досить все робити крок за кроком, як описано в цій статті.

Основні функції скриптів:

  • парсинг ціни товару на сайті і підстановка її в оголошення;
  • парсинг будь-якого іншого тексту на сторінці сайту і підстановка його у оголошення;
  • парсинг наявності товару і відключення оголошень, коли товари відсутні в продажу.

Сайти, для яких підійде даний пакет скриптів:

  • на сторінці товару вказана його ціна
  • на сторінці товару зазначено наявність товару

Що необхідно зробити?

1. Копіюємо скрипт підміни ціни:

var URL_LEVEL = 'Ad'; // Ad or Keyword
var ONLY_ACTIVE = false; // set to false for all ads or keywords
var CAMPAIGN_LABEL = ''; // set this if you want to only check campaigns with this label
var STRIP_QUERY_STRING = true; // set this to false if the stuff that comes after the question mark is important
var WRAPPED_URLS = true; // set this to true if you use a 3rd party like Marin or Kenshoo for managing you account
// This is the specific text to search for 
// on the page that indicates the item 
// is out of stock.
var LABEL_NAMES = ['"Price_Change"'];
var OUT_OF_STOCK_TEXT = 'Осталось 0 товаров';
var PRICE_TEXT_BEGIN = '';
var PRICE_TEXT_END = '';
var keywords = {};
 
function setKeywordPrice(keyword, price) {
  var keywordId = keyword.getId();
  if (keywords[keywordId]) {} else {
    Logger.log('Keyword: '+keyword+', Price: '+price);
    keyword.setAdParam(1, price);
    keywords[keywordId] = true;
  }
}

function setAdPrice(ad, price) {
  var keywords = ad.getAdGroup().keywords().get();
  while(keywords.hasNext()) {
    var keyword = keywords.next();
    setKeywordPrice(keyword, price);
    //Logger.log('Ad: '+ad+'; Price: '+price+'; Keyword: '+keyword);
  }
}

function main() {
  var alreadyCheckedUrls = {};
  var prices = {};
  var campIter = AdWordsApp.campaigns().get();
  while (campIter.hasNext()) {
    var camp = campIter.next();
  var adIter = buildSelector(camp, 'Ad');
  adIter = adIter.withCondition('LabelNames CONTAINS_ANY [' + LABEL_NAMES.join(',') + ']');
  adIter = adIter.get();
  //Logger.log(iter.totalNumEntities());
  while(adIter.hasNext()) {
      var entity = adIter.next();
      var url = entity.urls().getFinalUrl();
      if (url === null)
          continue;
      url = cleanUrl(url);
      if (prices[url]) {
        setAdPrice(entity, prices[url]);
        //Logger.log('Url: '+url+'; Price: '+prices[url]+'; Entity: '+entity);
      } else {
        var htmlCode;
        try {
          htmlCode = UrlFetchApp.fetch(url).getContentText();
        } catch(e) {
          Logger.log('There was an issue checking:'+url+', Skipping.');
          continue;
        }
        var priceStart = htmlCode.indexOf(PRICE_TEXT_BEGIN) + PRICE_TEXT_BEGIN.length;
        if(priceStart >= 0) {
          var priceEnd = htmlCode.indexOf(PRICE_TEXT_END, priceStart);
          prices[url] = htmlCode.substr(priceStart, priceEnd - priceStart).replace(/\D/, '');
          //setKeywordPrice(keyword, prices[url]);
          setAdPrice(entity, prices[url]);
          //Logger.log('Url: '+url+'; Price: '+prices[url]+'; Entity: '+entity);
        }
      }
      //Logger.log('Url: '+url+' price is '+prices[url]);
      
      if(alreadyCheckedUrls[url]) {
        if(alreadyCheckedUrls[url] === 'out of stock') {
          entity.pause();
          //keyword.pause();
        } else {
          entity.enable();
          //keyword.enable();
        }
      } else {
        var htmlCode;
        try {
          htmlCode = UrlFetchApp.fetch(url).getContentText();
        } catch(e) {
          Logger.log('There was an issue checking:'+url+', Skipping.');
          continue;
        }
        if(htmlCode.indexOf(OUT_OF_STOCK_TEXT) >= 0) {
          alreadyCheckedUrls[url] = 'out of stock';
          entity.pause();
        } else {
          alreadyCheckedUrls[url] = 'in stock';
          entity.enable();
        }
        Logger.log('Url: '+url+' is '+alreadyCheckedUrls[url]+'; price: '+prices[url]);
      }
  }
  }
}
 
function cleanUrl(url) {
  if(WRAPPED_URLS) {
    url = url.substr(url.lastIndexOf('http'));
    if(decodeURIComponent(url) !== url) {
      url = decodeURIComponent(url);
    }
  }
  if(STRIP_QUERY_STRING) {
    if(url.indexOf('?')>=0) {
      url = url.split('?')[0];
    }
  }
  if(url.indexOf('{') >= 0) {
    //Let's remove the value track parameters
    url = url.replace(/\{[0-9a-zA-Z]+\}/g,'');
  }
  return url;
}
 
function buildSelector(camp, url_level) {
  var selector = (url_level === 'Ad') ? camp.ads() : camp.keywords();
  return selector;
}

У оголошення додається динамічний параметр: {param1: 230} – де 230 будь-яке число, якщо використовується 4х значне, то вказати 4х значне. Перевірка додавання ціни тільки через пошук, в акаунті в оголошенні ціна не змінюватиметься. 2. Копіюємо скрипт перевірки наявності товарів:

/************************************
* Item Out Of Stock Checker
* Version 1.1
* ChangeLog v1.1 - Filtered out deleted Campaigns and AdGroups
* Created By: Russ Savage
* FreeAdWordsScripts.com
***********************************/
var URL_LEVEL = 'Ad'; // or Keyword
var ONLY_ACTIVE = false; // set to false for all ads or keywords
var CAMPAIGN_LABEL = 'CampaignLabel'; // set this if you want to only check campaigns with this label
var STRIP_QUERY_STRING = true; // set this to false if the stuff that comes after the question mark is important
var WRAPPED_URLS = true; // set this to true if you use a 3rd party like Marin or Kenshoo for managing you account
// This is the specific text to search for 
// on the page that indicates the item 
// is out of stock.
var OUT_OF_STOCK_TEXT = 'availability gray';
 
function main() {
  var alreadyCheckedUrls = {};
  var iter = buildSelector().get();
  while(iter.hasNext()) {
    var entity = iter.next();
	if(entity.urls().getFinalUrl()){
		var url = cleanUrl(entity.urls().getFinalUrl(), entity);
		if(alreadyCheckedUrls[url]) {
		  if(alreadyCheckedUrls[url] === 'out of stock') {
			entity.pause();
		  } else {
			entity.enable();
		  }
		} else {
		  var htmlCode;
		  try {
			htmlCode = UrlFetchApp.fetch(url).getContentText();
		  } catch(e) {
			Logger.log('There was an issue checking:'+url+', Skipping.');
			continue;
		  }
		  if(htmlCode.indexOf(OUT_OF_STOCK_TEXT) >= 0) {
			alreadyCheckedUrls[url] = 'out of stock';
			entity.pause();
		  } else {
			alreadyCheckedUrls[url] = 'in stock';
			entity.enable();
		  }
		}
		Logger.log('Url: '+url+' is '+alreadyCheckedUrls[url]);
	}
  }
}
 
function cleanUrl(url, entity) {
  if (url) {
	  if(WRAPPED_URLS) {
		url = url.substr(url.lastIndexOf('http'));
		if(decodeURIComponent(url) !== url) {
		  url = decodeURIComponent(url);
		}
	  }
	  if(STRIP_QUERY_STRING) {
		if(url.indexOf('?')>=0) {
		  url = url.split('?')[0];
		}
	  }
	  if(url.indexOf('{') >= 0) {
		//Let's remove the value track parameters
		url = url.replace(/\{[0-9a-zA-Z]+\}/g,'');
	  }
	}
	else Logger.log('Что-то пошло не так, в урле нулл: '+url+' '+ entity.getCampaign.getName+ ' -> ' +entity.getAdGroup.getName);
  return url;
}
 
function buildSelector() {
  //var selector = (URL_LEVEL === 'Keyword') ? AdWordsApp.ads() : AdWordsApp.keywords();
  var selector = (URL_LEVEL === 'Keyword') ? AdWordsApp.keywords() : AdWordsApp.ads();
  selector = selector.withCondition('CampaignStatus != DELETED').withCondition('AdGroupStatus != DELETED');
  if(ONLY_ACTIVE) {
    selector = selector.withCondition('CampaignStatus = ENABLED').withCondition('Status = ENABLED');
    if(URL_LEVEL !== 'Keyword') {
      selector = selector.withCondition('AdGroupStatus = ENABLED');
    }
  }
  if(CAMPAIGN_LABEL) {
    var label = AdWordsApp.labels().withCondition("Name = '"+CAMPAIGN_LABEL+"'").get().next();
    var campIter = label.campaigns().get();
    var campaignNames = [];
    while(campIter.hasNext()) {
      campaignNames.push(campIter.next().getName());
    }
    selector = selector.withCondition("CampaignName IN ['"+campaignNames.join("','")+"']");
  }
  return selector;
}

3. Помічаємо ярликами всі оголошення, в яких будемо використовувати підміну ціни, щоб наш скрипт зміг їх визначити.

Назву ярлика можна побачити на наступному скріншоті. Її можна замінити на свою.

4. Міняємо заголовки або опис в оголошеннях, які ми позначили раніше ярликом, шляхом додавання динамічної вставки в текст {param1: 230}. Це буде наша змінна, яка буде записуватися в масив даних Google Ads, а далі – підставлятися з масиву в текст.

Після двокрапки стоїть ціна 230 – це умовна ціна за замовчуванням, щоб розуміти кількість символів, яку вона займе. Після успішної установки скрипта і його запуску, ці дані автоматично заміняться на актуальну ціну з сайту

Важливо! В оголошеннях цього не видно, так як ціна буде підтягуватися з масиву даних усередині Google Ads та побачити її можна буде тільки в рекламній видачі.

5. Додаємо раніше скачаний скрипт в бібліотеку Google Ads. Просто створюєте новий скрипт і повністю вставляєте скопійований код в поле.

6. Визначаємо код, який включає в себе ціну на сайті. Для цього нам необхідно відкрити сторінку товару на сайті, з якої ми будемо аналізувати довільні ціну. Знайти на сторінці ціну і клацнути по ній правою кнопкою миші, де вибрати «Переглянути код елементу».

7. Знаходимо цей код і вказуємо для скрипта обидві його частини, між якими і знаходиться наша ціна. У нашому випадку код виглядає так:

<span data-el_name=”default_price”>3215 </span>.

Визначаємо початок коду – <span data-el_name = “default_price”> І кінець – </ span>..

Важливо! Всередині коду можуть перебувати не тільки цифри, а й текст на зразок «усього», «від», «грн», «usd» та ін. Різні символи і прогалини, які знаходяться до і після ціни, враховуються при її визначенні. Тому обов’язково вказуйте їх в скрипті, щоб нічого зайвого, крім ціни товару,  не витягнулося в наш параметр. Після того, як ми визначили початок і кінець ціни, додаємо ці частини коду в скрипт.

8. Натискаємо зберегти скрипт. Потім натискаємо кнопку «Перегляд» в правому нижньому куті екрана.

Якщо все зроблено правильно, то на вкладці «Журнал» можна буде спостерігати записи за отриманими цінами для різних оголошень і ключових слів.

Після того, як всі попередні операції були зроблені і відпрацювали без помилок, натискаємо кнопку «Зберегти».

Результати роботи підміни ціни можна побачити, якщо ввести цільовий запит товару в пошуку. За допомогою таких оголошень, перед кліком на рекламу ми даємо уявлення про ціну потенційного клієнту. Таким чином ми отримуємо більш гарячі переходи по рекламі і відкидаємо  кліки користувачів, для яких ці товари дуже дорогі.

Останнім етапом в налаштуванні скрипта буде створення розкладу, в залежності від частоти зміни цін на сайті.

Для цього переходимо в список скриптів аккаунта, для якого ми встановлювали наш скрипт, знаходимо його зі списку (якщо до цього у нас вже є в акаунті встановлені раніше скрипти) і натискаємо на кнопку редагування, що з’явилася  в стовпці «Частота». У віконці, що з’явилося вибираємо частоту і час спрацьовування для нашого скрипта.

Далі налаштуємо скрипт, який буде відключати оголошення, якщо товару немає в наявності на сайті.

Установка практично ідентична попередньму скрипту. Насамперед, помічаємо ярликом кампанії, в яких ми рекламуємо наші товари і будемо перевіряти їх наявність:

У нашому випадку ярлик буде з назвою «Test_In_Stock». За бажанням назву цього ярлика можна змінити. У цьому випадку не забудьте змінити її і в самому скрипті.

Далі переходимо на сторінку з нашим товаром, якого немає в наявності. Знаходимо на сторінці код елемента, який відповідає за наявність товару. У нашому випадку товари, які відсутні були без позначки «Немає в наявності». Замість неї на сторінці був шматок коду, який відповідав за кількість товару, що залишився  «Залишилося 0 товарів». Цей код, в результаті, ми використовували для визначення таких продуктів.

Після визначення тексту, який відповідає за наявність товару на складі, ми додаємо новий скрипт в акаунт і вставляємо раніше визначений текст в нього.

Після цього, даємо назву своєму скрипту і запускаємо його передперегляд:

Якщо все зроблено правильно, то на вкладці «Журнал» можна буде спостерігати записи по перевіреним оголошенням:

Після успішної установки, натискаємо на кнопку «Зберегти».

Не забудьте встановити розклад запуску скрипта, в залежності від частоти зміни наявності товарів на сайті. Установка розкладу частоти аналогічна скрипту динамічної підміни ціни в оголошенні.

Висновки. За допомогою таких простих і швидких налаштувань облікового запису, ми економимо собі тонну часу. Дані скрипти працюють на багатьох наших проектах інтернет-магазинів і виконують найбільшу частину рутинної роботи, в той час як ми займаємося більш корисними завданнями.

Ефективність кампаній, які використовують дані скрипти, набагато вище. І, звісно, ми економимо велику кількість грошових коштів клієнта не рекламуючи товари, яких немає в наявності.

Сподіваємося, що дані скрипти і для вас будуть дуже корисні.

Facebook Cross Sale Кампанії

Facebook Cross Sale Кампанії

Facebook Ads стрімко завойовує e-сommerce напрямки і лояльність рекламодавців, які стверджують, що реклама в соціальних мережах дає результат на порядок кращий, ніж в пошукових системах. Люди проводять все більше часу онлайн і соціальні мережі стали нормальним місцем їх перебування.

Але є кілька «АЛЕ».

  1. Ваша реклама повинна бути релевантною для вашої аудиторії.
  2. Ваші оголошення повинні мати чудовий вигляд.
  3. Вас не куплять, якщо ви не подобаєтеся аудиторії.

І якщо другий і третій пункт більше по частині дизайну і стратегії, то перший ближче до техчастини.

Один з типів кампаній в Facebook, який ми протестували і можемо сміливо радити – Cross Sale.

Суть цього типу кампаній полягає в тому, що ви показуєте користувачам, які вже щось купили, інший релевантний товар. Для цього вам потрібно розуміти логіку поведінки користувача і мінімально знати, що він купив. Тоді ви будете розуміти, що і коли варто пропонувати покупцям.

Налаштування Cross Sale кампаній

1. У вас повинен бути довантажуючи товарний фід в Facebook. Якщо у вас вже є Google Merchant – фід підходить. Додати товарний фід можна в меню Каталоги:

 

Виберіть відповідний тип каталогу (в нашому випадку це e-commerce):

Далі з усім погоджуємося і створюємо каталог. Після цього потрібно перейти в створений тільки що каталог і додати джерело товарів – наш фід.

Далі вибираємо потрібний нам варіант завантаження – найкраще перший або третій, так як це звільняє від ручної роботи і дозволяє автоматизувати процес.

2. Після того, як ми завантажили наш фід, потрібно підготувати сети продуктів. Найзручніше це робити за категоріями товарів або по брендам. Ми зробили за категоріями. Для цього заходимо на вкладку продукти:

І створюємо продакт сети по одному з параметрів в випадаючому меню:

3. Після того, як у нас створені продакт сети, переходимо до створення самої Cross Sale кампанії. Створюємо нову кампанію з типом Catalog Sales.

4. Далі при створенні групи оголошень нам потрібно вибрати, які товари рекламувати (який продакт сет) і за яких умов. Наприклад, ми вказуємо, що будемо рекламувати декоративні подушки:

Всім користувачам, які купили постільну білизну за останні 30 днів. Вказуємо цю умову нижче в налаштуваннях групи:

Вуаля – тепер ми можемо створювати оголошення для крос-сейла і показувати потрібні товари потрібній аудиторії. Паралельно можемо також займатися SMM просуванням.

Імпорт даних по витратам з сторонніх рекламних систем в Google Analytics

Багато рекламодавців, які ведуть свої кампанії в різних рекламних системах, в певний момент стикаються з питанням: чи можна бачити дані за основними показниками для різних систем в одній системі аналітики, а не перемикаючись між Google Analytics, Яндекс Метрикою, Яндекс Директом, Фейсбук, ВК і т.д., щоб якось звести воєдино всю статистику?

Відповідь – можна.

Рішення, насправді, не нове. І багато фахівців, що займаються контекстною і / або таргетованою рекламою, знають про це рішення і використовують його. Насправді – це далеко не таємниця, але чомусь цей інструмент, не дивлячись на всю його корисність, залишається в тіні.

Цим інструментом є не новий, але, тим не менш, відмінний сервіс від компанії OWOXOWOX BI ROI.

Налаштування імпорту статистики не займе у Вас багато часу, але є кілька моментів, в яких варто упевниться завчасно, а саме:

– чи всюди у Вас проставлені utm-мітки.

– чи збігаються валюти в вашому рекламному акаунті і представленні Google Analytics, в яке ми хочемо імпортувати дані.

Отже, перше, що необхідно буде зробити – провести деякі налаштування в Google Analytics.

  1. Вибираємо необхідний аккаунт і ресурс, для якого ми хочемо імпортувати дані.
  2. Вибираємо пункт «Імпорт даних» і створюємо новий набір даних.
    импорт данных в google analytics
  3. Вибираємо, що саме ми хочемо імпортувати в Аналітику. А хочемо ми імпортувати «дані про витрати».
    импорт данных о расходах в google analytics
  4. Вказуємо назву для нашого уявлення і, вкрай важливий момент (!!!), вибираємо представлення нашого сайту, яке містить нефільтровані дані, інакше при спробі використання сервісу нам видасть помилку.
    выбор представления в google analytics
  5. Для схеми імпорту даних вибираємо такі параметри: – вартість;
    – число кліків;
    – число показів;
    Наведені вище параметри є обов’язковими для коректно роботи імпорту даних.
    Також, слід вибрати хоча б один із запропонованих параметрів для імпорту. У прикладі я використовую наступні:
    – кампанія;
    – зміст оголошення;
    – ключове слово.
    параметры импорта данных в google analytics
    Зберігаємо створений нами набір даних і переходимо до системи імпорту даних від OWOX.

 

Етап другий – налаштування OWOX BI ROI

    1. Переходимо на сервіс http://bi.owox.com/.
    2. Надаємо сервісу дозвіл на доступ до даних.
    3. Створюємо новий потік даних.owox bi
      4. Вибираємо джерело даних у списку запропонованих сервісом.
      выбор источника данных для импорта в google aanalytics
      5. Надаємо доступ до рекламного аккаунту, на прикладі – до аккаунту Яндекс.Директ.
      открыть доступ к аккаунту яндекс директ6. Важливий момент: при налаштуванні імпорту даних, необхідно бути залогіненним в той акаунт, дані з якого ми хочемо імпортувати (Директ, Фейсбук, ВКонтакте, Бінг). Надаємо доступ до API нашого рекламного аккаунта Яндекс Директ.открыть доступ к API яндекс директ
      7. Кроки 3 і 4 – надаємо доступ до нашого аккаунту Analytics, і вибираємо ресурс і набір даних в які ми хочемо наші дані імпортувати.
      доступ к google analytics

8. Вибираємо, яке уявлення ми хочемо використовувати для імпорту даних, а також, за бажанням, можемо виключити ПДВ з імпорту витрат.

выбор представления для импорта данных

Третій етап – перегляд статистики по негугловим рекламним кампаніям в Google Analytics.

Заходимо в Звіти -> Джерела трафіку -> Кампанії -> Аналіз витрат і милуємося картиною імпорту даних зі сторонніх рекламних систем.
просмотр статистики в google analytics

Налаштування Call Tracking для Google Ads за допомогою GTM

В Google AdWords існує відмінна функція відстеження дзвінків з сайтів або лендінг-сторінок, що працює на основі підміни вашого телефонного номера на сайті – безкоштовним номером Google, з подальшим відстеженням і переадресацією. Вона буде корисна і навіть обов’язкова для використання всім, у кого є клієнти, які, переходячи на сайт, вважають за краще дзвонити, а не відправляти наприклад форму замовлення, або робити і те й інше. З її допомогою ви зможете більш повно оцінювати, отриману статистику про переходи, що дасть вам можливість більш розумно керувати ставками на основі отриманих даних.

Стандартний спосіб налаштування Call Tracking’a і докладний опис його роботи ви можете знайти в довідці Google AdWords. А ми розглянемо, на мій погляд, більш зручний варіант налаштування, за допомогою Google Tag manager’а.

Зручність цього способу налаштування полягає у відсутності необхідності доступу до сайту і зміни його вихідного коду, що дає нам можливість встановити і налаштувати наш Call Tracking, без участі програмістів, власників сайту і т.д.

Процес, включає в себе чотири етапи налаштування:

Етап 1: Створення конверсії в Google Adwords і створення тега в Google Tag Manager

Насамперед нам необхідно створити нову дію-конверсію (конверсію) в Google Adwords.

Переходимо в розділ Інструменти-> Переходи (мал. 1). І натискаємо “+ конверсія” (мал. 2)

call tracking google adwordscall tracking google adwords

У Джерелі конверсій вибираємо телефонні Дзвінки -> Дзвінки на номер телефону, вказаний на вашому сайті

call tracking google adwords

Заповнюємо необхідні поля на свій розсуд і зберігаємо

call tracking google adwords

Після чого з’явиться вікно “подальші дії“, в якому буде згенеровано наш унікальний код

call tracking google adwods

Копіюємо згенерований код і зберігаємо конверсію.

Відкриваємо свій аккаунт в Google Tag Manager і створюємо новий тег.

У типі тега вибираємо “Custom HTML tag”. Називаємо його, наприклад “AdWords Call Tracking.” Вставляємо раніше скопійований код. Якщо хочете відслідковувати телефонні дзвінки на всіх сторінках вашого сайту то в розділі “Fire On” виберіть “All Pages”, якщо з конкретною, то “Some Pages” і збережіть тег. Пізніше він нам ще знадобиться.

call tracking gtm

Етап 2: Додавання коду підміни номера телефону

На цьому етапі ми створимо фрагмент коду, який буде підміняти наш номер телефону номером відстеження від Google.

Для цього нам потрібно дізнатися css селектор в якому знаходиться наш телефон на сайті. Натискаємо правою кнопкою миші на наш номер телефону і вибираємо переглянути код.

call tracking google adwords

В даному прикладі номер телефону знаходиться всередині тега <p> і має class phone. Відповідно наш selector буде таким p.phone.

call tracking google adwords

Номер вашого телефону може знаходиться в будь-яких інших тегах. Наприклад, <h2>, <a>, <span>, <div>.

Так само може мати інший class або id

Наприклад, ваш телефон знаходиться в тегі <div> і має class contact-info. Тоді ваш css селектор буде виглядати так div.contact-info

Якщо ваш телефон не має класу, а має id, то замість (.) Вам потрібно використовувати символ (#). Наприклад, div # contact-info

Тепер, коли ми знає наш селектор, повертаємося до раніше створеного тегом в Google Tag Manager (етап 1)

Нам потрібно додати наступний код перед тегом закриття</script>

  1. //Нижче наведені варіанти змінних виключно для прикладу, вам необхідно їх змінити під себе.
  2. //Змініть business_number на свій телефонний номер, ТОЧНО як він показується у вас на сайті
  3. var business_number = “(555) 555-5555”;
  4. //Змініть business_number_unformatted на свій телефонний номер без додаткових символів і пробілів
  5. var business_number_unformatted = “5555555555”;
  6. //Змініть business_number_identifier на свій css селектор (який ми визначили вище)
  7. var business_number_identifier = “p.phone”;
  8. //наведена нижче функція залишається незмінною
  9. var callback = function(formatted_number, unformatted_number) {
  10. var numberElement = document.querySelector(business_number_identifier);
  11. var numberString = numberElement.innerHTML;
  12. numberString = numberString.replace(business_number,formatted_number);
  13. numberElement.innerHTML = numberString;
  14. };
  15. //Нижче наведений рядок коду, потрібний для тестування нашого тега вGTM’s debug mode
  16. //Він замінює номер телефону на вашому сайті, на тестовий номер ‘666-666-6666’
  17. window.onload = callback(‘666-666-6666’, business_number_unformatted);
  18. //Рядок коду нижче і є викликом  нашої головної функції. Після того, як ви закінчите
  19. //тестування і будете готові опублікувати GTM container, додайте ‘//’ перед рядком коду ВИЩЕ і видаліть ‘//’ перед рядком коду НИЖЧЕ.
  20. //window.onload = _googWcmGet(callback, business_number);
  • Змініть телефонний номер (555) 555-5555 на свій телефонний номер, ТОЧНО, як він відображається у вас на сайті
  • Замініть не відформатований 5555555555 на свій не відформатований номер без пробілів, круглих дужок, тире або інших символів
  • Замініть phone на свій css селектор (який ми визначили вище)

google adwords call tracking

Етап 3: Тестування

Тепер нам потрібно протестувати чи коректно відпрацьовує наш скрипт підміни номера. Для цього ми запускаємо функцію Preview and Debug в Google Tag Manager

google adwords call tracking

І заходимо на наш сайт

google adwords call tracking

  • Вікно GTM debug показує, що наш тег відстеження спрацював (Fired)
  • Наш телефонний номер у верхньому правому кутку був замінений з – (555) 555-5555 на 666-666-6666.

Це говорить нам про те, що ми все налаштували правильно

Этап 4: Завершення і публікація

Якщо ваше тестування пройшло успішно, то можна переходити до завершального етапу і публікації нашого тега.

Нам залишається закоментувати тестовий рядок, додавши перед ним ‘//’. І розкоментувати виклик нашої головної функції прибравши перед нею ‘//’.

На скріншоті нижче показаний кінцевий результат, вже після виконання вищеописаного кроку

google adwords call tracking

Зберігайте і опублікуйте ваші зміни в Google Tag Manager. На цьому все!

Важливо: на жаль, функція Call Tracking Google AdWords – доступна не для всіх країн. Повний список ви можете знайти тут.

Про те, як відслідковувати дзвінки в Facebook Ads ми розповіли в цій статті.

У статті використані матеріали з ресурсу acceleratedsem.com

Open->
to new

Почати роботу з #UAATEAM

Оберіть послугу: