+38 (066) 176 99 49
ua ru en
Отправить запрос

Способы автоматизации контекстной рекламы. Часть 1

Способы автоматизации контекстной рекламы. Часть 1

Автоматизация – это самая большая боль каждого специалиста по контекстной рекламе. Существует огромное количество сервисов, способных упростить эту задачу, но все они имеют свои преимущества и недостатки.

В итоге, все равно у нас остается огромное количество рутинной работы, на которую уходит много времени.

Конечно, одна подборка не охватит все, но даст общее представление о том, как можно ускорить свою работу.

В первой части этой статьи я расскажу 10 рекомендаций по использованию инструментов Google Ads, Яндекс Директ, Facebook Ads и сервисов от их разработчиков.

1.Правила

Автоматизированные правила позволят выполнять вам оптимизацию с настраиваемой регулярностью.

В Google Ads достаточно широкий выбор возможностей для создания условий и действий.

Для этого нужно перейти в меню настроек – «правила».

Здесь можно задавать правила на разных уровнях для включения/отключения, повышения/понижения ставок или бюджета, уведомлений при разных условиях.

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

Но правила, а также внесенные изменения, нужно контролировать, и задавать условия очень внимательно.

Аналогичная возможность есть и в Facebook Ads, хоть и с меньшим функционалом, но в целом, правила смогут помочь в управлении аккаунтами.

Самое главное – отслеживать изменения и вносить корректировки, особенно, сразу после создания, чтобы все работало корректно.

Такая оптимизация работы помогает не только сэкономить время специалиста, но и минимизировать ошибки, связанные с человеческим фактором.

В этом году стало возможно использовать условия, связанные с новыми показателями конкуренции в Google Ads. Это позволило более точно задавать необходимые условия.

В Яндекс Директ, к сожалению, такой функционал не реализован. Но существуют сторонние сервисы для решения этой задачи.

2. Скрипты

Ранее у нас уже была статья о применении скриптов. Они, аналогично правилам, вносят изменения в рекламные кампании с определенной регулярностью.

Настройки здесь можно задавать более гибко, прописывая необходимые изменения с помощью кода JavaScript.

Для применения скрипта нужно выбрать соответствующий пункт в меню настроек, выбрать пункт создания скрипта, добавить код скрипта и выполнить его.

Для написания скриптов нужно владеть определенными навыками для разработчиков. Чтобы разобраться в их создании, можно посетить портал Google.

Либо же можно воспользоваться подборками готовых скриптов. Их на данный момент огромное множество: от автоматических уведомлений о бюджете до регулировки ставок, исходя из погодных условий.

Вот некоторые из таких подборок:

 

Однако, при применении готовых скриптов нужно быть очень внимательными. Скрипт может написать кто-угодно, поэтому, отрабатывать он может некорректно.

Лучше проверить, какие изменения произойдут в результате применения скрипта. Для этого можно выполнить предпросмотр до выполнения, а также, четко следовать инструкции разработчика.

Для управления и внесения массовых изменений напрямую через сервер систем, при наличии разработчика, полезно ознакомиться с руководством по использованию API:

 

3. Фиды модификаторов и модификаторы в целом

Модификаторы и шаблоны – это возможность динамически менять отображаемый текст объявления, подставляя в него релевантную информацию.

В Google Ads есть модификаторы «keyword», «countdown» и операторы «if».

Для использования «keyword» на любое место в тексте объявления нужно вставить следующие символы:

{KeyWord:текст по умолчанию}

Текст по умолчанию – это то, что будет отображаться в случае, если в результате подстановки текста будет превышен допустимый лимит символов.

При использовании этого модификатора, в текст автоматически подставится ключевое слово, которое вызвало показ объявления. Здесь, также,  можно использовать разную капитализацию:

  • keyword – все слова строчными;
  • Keyword – первое слово с заглавной, остальные – строчными;
  • KeyWord – каждое слово с заглавной.

 

COUNTDOWN и GLOBAL_COUNTDOWN – это модификаторы обратного отсчета в объявлении.  При использовании этого модификатора, в объявлении автоматически отображается количество дней/часов, которые остались до какого-либо события. Подробнее можно посмотреть здесь.

Функция «if» — это задание условий для показа разного текста разным аудиториям. Поддерживается таргетинг по устройствам и по созданным в аккаунте аудиториям. Подробнее об использовании этого оператора можно прочитать здесь.

Модификатор можно прописать вручную, либо вызвать меню создания при редактировании любого текстового объявления. Достаточно поставить в поле ввода фигурную скобку ( { ), и меню динамической подстановки будет вызвано.

Помимо этих модификаторов, есть возможность создать фид, в котором можно задать абсолютно любые значения, которые вы хотите динамически подставить в объявления. Например: модель, цвет. Поддерживается текст, дата, число, цена.

Вам нужно будет подготовить таргетинг, атрибуты, подгрузить фид в коммерческие данные Google Ads, а далее, добавить модификаторы в текст объявлений. Подробнее можно посмотреть здесь.

В Яндекс Директ функционал меньше, но есть возможность подставлять ключевую фразу в текст. Это реализуется с помощью шаблонов. Для добавления достаточно заключить слово, вместо которого нужно подставить фразу, символом «#» с обеих сторон. Подробнее по ссылке.

В Facebook такая возможность есть при продвижении товаров из каталога. Можно добавить в объявление параметры каталога. Достаточно вызвать соответствующее меню.

 

4. Оповещения

Если вы не успеваете проверить всю статистику и вовремя заходить в аккаунт, можно настроить оповещения в случае, если что-то пойдет не так.

В Google Ads можно настроить оповещения с помощью правил. Причем, настраивать это можно не только через настройки, но и из просмотра статистики.

Кроме того, есть настройка расписания подготовки отчетности.

В Яндекс Директ можно настроить оповещения при создании кампании. Однако, функционал ограничен, доступно лишь уведомление об остатке средств.

Тем не менее, автоматическая отчетность есть в Яндекс Метрике. Вы можете настроить отчеты по расписанию.

Для этого, при просмотре отчета нужно выбрать меню в верхнем правом углу, указать регулярность и электронную почту для отправки.

В Google Analytics также можно настроить оповещения.

В Facebook оповещения настраиваются с помощью правил.

5. Группы кампаний

Такая функция есть в Google Ads. Она позволяет отслеживать эффективность по группам выделенных кампаний.

В основном, это поможет, если у вас большой аккаунт, разбитый по нескольким сегментам в разных кампаниях. Для создания группы нужно выбрать это меню:

 

Дальше, зайти в группы кампаний и перейти к созданию.

При  управлении группами кампаний присутствуют некоторые ограничения. Про них подробнее можно посмотреть здесь.

6. Динамические метки

При разметке, в некоторые параметры отслеживания можно добавлять динамические данные источника.

Например, вместо прописывания:

«utm_campaign=Shkaf», можно «utm_campaign={{campaign.name}}»

Такие метки есть во всех системах:

 

7. Галерея шаблонов

В Google есть возможность публиковать и сохранять себе различные конфигурации пользователей. Это может очень помочь, например, при создании аудиторий или целей.

Очень удобно будет воспользоваться имеющимися вариантами из галереи.

8. Google Web Designer

Раньше в Google Ads был сервис для создания баннеров. После его закрытия в прошлом году, Google рекомендует использовать его аналог — Google Web Designer.

Преимуществом перед другими визуальными редакторами является наличие шаблонов форматов Google Ads.

Подробно с сервисом Google Web Designer можно ознакомиться в руководстве.

9. Надстройки Excel Facebook Ads и Google Analytics

Автоматизировать отчетность можно не только в самих интерфейсах, но и используя надстройки.

В Facebook Ads можно создавать шаблоны отчетов, выгружать их в Excel и обрабатывать данные уже в удобном формате. Для начала использования нужно выбрать экспорт в excel:

Далее, разрешить редактирование и подтвердить безопасность надстройки.

У вас откроется панель навигации:

Аналогичная настройка для Google таблиц есть и у Analytics.

Для начала работы нужно установить дополнение Google Analytics.

Далее, можно перейти к конфигурации отчетов. Здесь можно создавать, запускать отчеты, а также, настраивать расписание автоматической выгрузки.

 

10. Слова-формулы

В Google Ads Editor есть возможность массово подставить в текст объявлений название группы, кампании, аккаунта и другие элементы.

Например, если вы хотите показывать релевантные объявления аудитории, и при этом, не использовать модификатор ключевых слов, можно массово добавить название группы в объявление. Это реализовывается с помощью инструмента замены текста. Подробная инструкция по ссылке.

Как автоматизировать работу 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 datael_namedefault_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 Data Studio

Оптимизация отчетности с помощью Google Data Studio

Continue reading «Оптимизация отчетности с помощью Google Data Studio»

Импорт данных по расходам из сторонних рекламных систем в 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

Автоматизация товаров Google AdWords в зависимости от наличия

Часто, при работе с рекламными кампаниями по контекстной рекламе, приходится сталкиваться с ситуацией включения/выключения групп объявлений (ключевых слов, объявлений) по наличию товара на сайте. Конечно, если у Вас на ведении небольшой интернет-магазин (до 50 товаров), то этот момент можно отслеживать и вручную производить указанные действия. Но что делать, когда у Вас на сайте 1000 или 10000 товаров? На проверку наличия каждого из них будет тратиться огромное количество времени и, по-сути, вся работа ppc-шника будет сводится к круглосуточному отслеживанию наличия. Это время можно потратить на выполнение более интересных, важных и нужных задач.

Выход из этой ситуации был предложен на сайте FreeAdWordsScripts.com (пример скрипта, описание функций и изменений — по ссылке). Для частных случаев можно использовать скрипты, которые включают/отключают объявления, паузят группы объявлений по наличию товаров на сайте. Суть в том, что данный скрипт парсит страницы сайта по указанным ссылкам в объявлениях на наличие указанных Вами в скрипте кусков html отображающих наличие/отсутствие товара.

товар в наличии
            Рис.1 — товар в наличии

товара нет в наличии

                 Рис.2 — товара нет в наличии

А что делать в ситуациях, когда ссылки установлены на уровне ключевых слов и нет возможности отслеживать наличия товаров по каждому из них?

Для этого случая за основу использовался скрипт с FreeAdWordsScripts.com переделанный для проверки ссылок на уровне ключевых слов и включению/остановке непосредственно самих ключевых по наличию/отсутствию товаров на сайте.

/************************************

* Item Out Of Stock Checker

***********************************/

var URL_LEVEL = ‘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 OUT_OF_STOCK_TEXT = ‘текст_нет_в_наличииt’;

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;

}

Важно для работы скрипта:

  1. Обязательно ставим ярлык на кампанию и прописываем его в скрипте, чтобы указать, какую именно кампанию скрипт должен проверять.
  2. Обязательно прописываем html-параметр наличия товара, а не текст «нет в наличии».
  3. Количество ключевых слов, содержащих ссылку, необходимо ограничивать опытным путем, т.к. время работы скрипта, установленное AdWords, не должно превышать 30 минут (на практике удалось получить не более 3500 ключевых слов с ссылками).
  4. Все ссылки должны быть рабочими. Наличие битых ссылок в разы повышает время работы скрипта, и Вы можете не уложится в отведенное время.
  5. Обязательно задаем расписание работы скрипта, чтоб нам не пришлось каждый раз запускать его вручную.

Настройка Call Tracking Google AdWords при помощи Google Tag Manager

В 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

Использование правил автоматизации в Google Ads

Google Ads позволяет создавать автоматические правила для управления изменениями в рекламных кампаниях. С помощью правил можно значительно упростить процесс работы над рекламными кампаниями контекстной рекламы. С помощью правил можно менять дневной бюджет, изменять статус объявлений, регулировать ставки для ключевых слов и управлять позициями объявлений. Как результат — правила помогут сэкономить время и деньги, а также помогут достичь поставленных целей.  Сегодня мы рассмотрим несколько вариантов правил, которые можно легко внедрить и начать использовать прямо сегодня:
— повышение или понижение бюджета в заданное время;
— управление ключевыми словами;
— управление объявлениями;
— управление статусом мест размещения.

Регулировка Бюджетов Google Ads

Вы можете устанавливать нужный вам бюджет или регулировать его в зависимости от своих потребностей, прибегая к автоматическим правилам AdWords. К примеру, нам нужно снижать бюджет на выходные дни, а в будни повышать его. Чтобы данное правило начало работать, нам нужно выполнить следующие шаги:
Управление кампаниями – Google AdWords - Google Chrome 2016-02-15 15.45.37

В данном случае правило можно будет применить ко всем кампаниям в аккаунте. Для применения правила к отдельно выбранной кампании, следует сначала выбрать кампанию, а затем переходить к созданию правила.

В первую очередь мы зададим правило, которое будет снижать наш дневной бюджет на 50% на выходные, при этом указываем минимальный допустимый бюджет. Оно будет выглядеть следующим образом:
правило снижения дневного бюджетаСледующим шагом нам необходимо задать правило, которое будет возвращать дневной бюджет в исходное состояние. Мы задаем условия, при которых дневной бюджет будет повышаться на будние дни на 50% и задаем максимально допустимый бюджет:

правило повышения дневного бюджета

В итоге мы создали автоматическую регулировку бюджетов на выходные и будние дни.

Управление ключевыми словами

Для управления ключевыми словами, мы можем задавать автоматические правила, которые позволят нам выключать или включать ключевые слова, снижать или повышать для них ставку, в зависимости от выбранных условий. Например, зададим правило, которое будет отключать ключевые слова, которые потратили более $60 и не принесли ни одной конверсии. Для этого перейдем в меню «автоматизация» на вкладке «ключевые слова»:

остановка ключевых слов

и зададим следующие условия:
остановка не эффективных ключевых слов
Согласно такому правилу, мы будем автоматически ставить на паузу все ключевые слова, которые потратили $60 или более и не принесли ни одной конверсии за последние 90 дней.

Управление объявлениями

В Google AdWords мы можем создавать правила, которые будут автоматически отключать ли включать наши объявления, в зависимости от заданных условий.
автоматизация управления объявлениямиУправление объявлениями можно использовать, например, для включения или выключения конкретных объявлений, которые могут быть созданы для промо-акций. В таком случае нам стоит выбрать все нужные объявления и прописать условия их включения (или выключения).
включение объявлений для промоЕдинственное условие, которое тут стоит задать — включение объявлений в определенное время. Точно также мы можем задать правило для отключения объявлений по окончании промо.

Управление местами размещений

Также мы можем задавать правила для управлениями местами размещений для кампаний в GDN и ремаркетинг кампаниях. одним из самых полезных правил я считаю возможность отключения площадок, которые тратят деньги и не приносят конверсий. Подобные правила могут значительно сэкономить нам бюджет.
автоматизация мест размещенияНапример, мы можем создать правило, которое будет отключать все площадки, которые потратили более $30 и не принесли ни одной конверсии:
отключение не эффективных мест размещения

Open->
to new

Начать работу с #UAATEAM

Выберите услугу: