UnionCreated using FigmalectureCreated using Figma
6473 https://ppc.world/uploads/images/0f/a8/5daf2a8a3d7a1-cena.jpg 2019-10-23 ppc.world 160 31

Каким методом автоматически подставлять цены в объявления Google Ads: модификаторы против скриптов

Если у рекламодателя сотни, а то и тысячи единиц товара, подставлять цену для каждого товара вручную невозможно. Этот процесс можно автоматизировать двумя способами: с помощью модификаторов объявлений или скриптов. Ведущий специалист по контекстной рекламе в Upturn Юлия Василенко рассказала об их работе, преимуществах и недостатках.

Давайте сначала разберемся, зачем вообще писать цену в поисковых объявлениях. Указывать цену выгодно при любом сценарии. Если ваш продукт недорогой, то цена — хорошее конкурентное преимущество. А если вы продаете товар или услугу премиум-сегмента, указанная цена в объявлении избавит вас от лишних трат на клики нецелевой — неплатежеспособной, если хотите — аудитории.

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

Что делать тем, у кого количество товаров насчитывает сотни, а то и тысячи единиц? Не писать же цену в каждом объявлении?! Вручную делать этого не придется, этот процесс можно автоматизировать.

Здесь не будет авторских методов. Мы предлагаем рассмотреть известные варианты автоматической подстановки цены в поисковые объявления в Google Ads и разберем их плюсы и минусы, чтобы вам было легко выбрать подходящий.

Модификаторы объявлений

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

Чтобы использовать этот метод, сначала нужно создать фид — файл с данными модификаторов объявлений. В нем будут прописаны атрибуты, которые нужно будет подставлять в объявления, и таргетинг, по которому будет срабатывать подстановка. Требования к фиду есть в справке, там же можно скачать и шаблон.

Варианты атрибутов, которые можно подставить в объявление:

  • text — модель или бренд товара;
  • number — количество;
  • date — собственно дата;
  • price — цена, то, что нас интересует.

Варианты таргетинга: ключевое слово, группа, кампания, локация.

Подробнее о настройке модификаторов читайте в материале о продвинутой настройке Google Ads.

Пока ничего сложно, да? Переходим к интересному.

Из плюсов этого подхода

  1. Если в фиде правильно прописать цены к ключевым словам, группам, или кампаниям (на выбор), то в нужном объявлении получим нужную цену. Автоматизация? Автоматизация.
  2. Чтобы изменить цены, достаточно обновить их в фиде. И не нужно ждать, когда объявления пройдут модерацию.
  3. Возможности модификаторов подстановкой цены не ограничиваются. Можно добавить и другие атрибуты.

Минусы

  1. Все таки нужно уделить достаточно времени созданию фида с данными модификаторов объявлений.
  2. Ограниченное количество вариантов таргетинга. Никакого тебе таргетинга по целевым страницам, что было бы кстати, когда ключевые слова не справляются с показами по низкочастотным запросам. Таргетинг по языкам тоже бы пригодился, чтобы адаптировать цену для иностранцев: гео не помогает в случаях, когда человек находится не в стране проживания либо местонахождение нельзя определить. А указание временного диапазона хорошо бы выручало при смене цен на время акций и скидок.
  3. При создании объявления с помощью модификатора вы столкнетесь с тем, что в группе объявлений не могут быть объявления только с модификатором. Обязательно нужно наличие обычного объявления. Для нас это оказалось существенным минусом, так как планировалось, что все объявления с выбранным таргетингом будут с ценами. И по факту в поиске чаще всего показывалась реклама без модификатора с ценой.
  4. И еще одно — фид нужно все время обновлять, чтобы информация всегда была актуальной.

Скрипты

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

Таких скриптов достаточно, вот один из них:


var URL_LEVEL = 'Ad'; // Ad or Keyword
var ONLY_ACTIVE = false; // set to false for all ads or keywords
var CAMPAIGN_LABEL = 'Price_Change'; // 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 = ['"Test"'];
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/g, '');
      	//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]);
	}
  }
}
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;
}

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

var PRICE_TEXT_BEGIN ='<span class="regular-price-container">';
var PRICE_TEXT_END = 'грн</span>';

Цена без скидкиПлюсы

  1. Самый быстрый метод.
  2. Простой в использовании.
  3. Цены в объявлениях всегда актуальны, так как скрипт подтягивает их с сайта.
  4. Не нужно ждать прохождение модерации объявлений после каждого изменения цены.

Минусы

  1. Необходимо корректно указать фрагменты кода, иначе будет подставляться неправильная цена.
  2. И еще один жирный минус мы оставили на десерт. Часто компании устраивают скидки и отображают на сайте старую и новую цены (для сравнения на сколько щедрый продавец, вы поняли). В таком случае цена новая и цена старая в HTML-коде обозначаются разными элементами. И они, зачастую не сходятся с теми ценами, что без скидки.

Как с этим бороться:

  1. Передавать два параметра в двух скриптах. Один для цены без скидки и обозначать его в объявлениях в виде Param1. И, соответственно, второй скрипт со сниженными ценами обозначать как Param2. Но вам придется вручную определить, в каких объявлениях должна парситься какая цена, и менять параметр, если скидки на какой-то товар закончились.
  2. Обратиться за помощью к программистам, чтобы перенастроить существующий или создать новый скрипт.

Итак, мы по максимуму описали все достоинства и подводные камни доступных методов подстановки цен в объявления. Они автоматизируют много рутинной работы и существенно сэкономят время специалистов. Вам остается только проанализировать все за и против и выбрать подходящий вариант.

Создание объявлений в Google Ads
Создание объявлений в Google Ads

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

29 мин.
Видео по теме
Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: