контекстная реклама    веб-аналитика    книги    продуктивность    обо мне
4 заметки с тегом

контекстная реклама

В 2015 году я написал заметку про сводные отчёты по показателям качества. Она разлетелась по интернету, многие взяли технику на вооружение.
Я автоматизировал создание таких отчётов и написал скрипт. Он забирает данные за 30 дней, экспортирует в Google Docs и отправляет на почту письмо со ссылкой на отчёт.

Итоговый отчёт

Пример в Google Docs.
Листы:
Source — отчёт по ключам с показателями качества и их факторами.
Pivot Table  — служебная сводная табличка.
LowQS — ключевые слова с QS < 4, отсортированные по бюджету.
Percentage — сводные данные по показателям качества на уровне аккаунта.

Что нового

Добавлена разбивка на составляющие показателей качества, можно видеть вес каждого фактора. Возможность забирать эти данные появилась в версии API AdWords v201607. Факторы, определяющие показатель качества:
CreativeQualityScore: качество объявления,
SearchPredictedCtr: ожидаемый ctr.
PostClickQualityScore: качество страницы приземления.
Красным подкрашены показатели ниже среднего.

Как настроить

  1. Добавляем код скрипта в AdWords: Массовые операции → Скрипты → «+Скрипт».
  2. Делаем копию докса, ставим ссылку на копию в верхнем блоге скрипта Settings.
  3. Указываем в Settings почту получателя отчётов.
  4. При желании ставим на расписание.

Текст письма написан на английском, если нужен русский — можно поменять.

Что дальше

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

Скопировать скрипт с Github

В контексте есть очевидные вещи, которые точно идут на пользу: все нужные расширения объявлений, высокий показатель качества, правильная разметка. Ставки или семантика — более сложные области, на которые влияет множество факторов. Расширения — must have.
Я сделал скрипт для AdWords, который проверяет наличие трёх базовых расширений в кампаниях: быстрых ссылок, номеров телефонов и уточнений.
Скрипт проходится по аккаунту и проверяет расширения. В итоге получается табличка с условным форматированием. Красным помечены места, где нет расширений.
Есть версии скрипта для отдельного аккаунта и MCC. Версия для MCC создаёт лист для каждого аккаунта и подсвечивает вкладку красным цветом, если в аккаунте есть проблемы с расширениями. Для больших аккаунтов со 100+ кампаниями скрипт можно ставить на расписание и выполнять раз в 2 недели.
Страница на GitHub.

Скрипт для уровня аккаунта:

var SHEET_URL = ""; //укажите URL Гугл-таблицы
var SHEET_NAME = "Sheet1"; // если нужно, измените имя листа по умолчанию

function main() {

  var sheet = SpreadsheetApp.openByUrl(SHEET_URL).getSheetByName(SHEET_NAME);
  sheet.clearContents();
  sheet.appendRow(['Название кампании', 'Статус', 'Быстрые ссылки', 'Номера телефона', 'Уточнения']);

  var campaignIterator = AdWordsApp.campaigns().get();

  while (campaignIterator.hasNext()) {

    var campaign = campaignIterator.next();

    var campaignStatus = campaign.isEnabled() ? 'Включена' : campaign.isPaused() ? 'На паузе' : 'Удалена';

    var sitelinksIterator = campaign.extensions().sitelinks().get();
    var sitelink;
    if (sitelinksIterator.hasNext()) {
      sitelink = 'есть';
    } else {
      sitelink = 'нет';
    }

    var phoneNumberIterator = campaign.extensions().phoneNumbers().get();
    var phoneNumber;
    if (phoneNumberIterator.hasNext()) {
      phoneNumber = 'есть';
    } else {
      phoneNumber = 'нет';
    }

    var calloutIterator = campaign.extensions().callouts().get();
    var callout;
    if (calloutIterator.hasNext()) {
      callout = 'есть';
    } else {
      callout = 'нет';
    }

    sheet.appendRow([campaign.getName(), campaignStatus, sitelink, phoneNumber, callout]);
  }

  var range = sheet.getRange("C:E");
  var numRows = range.getNumRows();
  var numCols = range.getNumColumns();
  for (var i = 1; i <= numRows; i++) {
    for (var j = 1; j <= numCols; j++) {
      var currentValue = range.getCell(i, j).getValue();
      if (currentValue == "нет") {
        range.getCell(i, j).setBackground("lightcoral");
        sheet.setTabColor("lightcoral");
      }
    }
  }
}

Скрипт для MCC

var SHEET_URL = ""; //укажите URL Гугл-таблицы
var mccAccount = AdWordsApp.currentAccount();

function main() {

  var sheet = SpreadsheetApp.openByUrl(SHEET_URL);

  var accountSelector = MccApp.accounts()
    .withCondition("Impressions > 10")
    .forDateRange("LAST_MONTH")
    .orderBy("Clicks DESC");

  var accountIterator = accountSelector.get();

  while (accountIterator.hasNext()) {
    var account = accountIterator.next();
    var accountName = account.getName();

    MccApp.select(account);

    sheet.insertSheet(accountName);
    var activeSheet = sheet.getActiveSheet();

    var campaignIterator = AdWordsApp.campaigns().get();
    activeSheet.clearContents();
    activeSheet.appendRow(['Название кампании', 'Статус', 'Быстрые ссылки', 'Номера телефона', 'Уточнения']);

    while (campaignIterator.hasNext()) {

      var campaign = campaignIterator.next();

      var campaignStatus = campaign.isEnabled() ? 'Включена' : campaign.isPaused() ? 'На паузе' : 'Удалена';

      var sitelinksIterator = campaign.extensions().sitelinks().get();
      var sitelink;
      if (sitelinksIterator.hasNext()) {
        sitelink = 'есть';
      } else {
        sitelink = 'нет';
      }

      var phoneNumberIterator = campaign.extensions().phoneNumbers().get();
      var phoneNumber;
      if (phoneNumberIterator.hasNext()) {
        phoneNumber = 'есть';
      } else {
        phoneNumber = 'нет';
      }

      var calloutIterator = campaign.extensions().callouts().get();
      var callout;
      if (calloutIterator.hasNext()) {
        callout = 'есть';
      } else {
        callout = 'нет';
      }

      activeSheet.appendRow([campaign.getName(), campaignStatus, sitelink, phoneNumber, callout]);

    }

    var range = sheet.getRange("C:E");
    var numRows = range.getNumRows();
    var numCols = range.getNumColumns();
    for (var i = 1; i <= numRows; i++) {
      for (var j = 1; j <= numCols; j++) {
        var currentValue = range.getCell(i, j).getValue();
        if (currentValue == "нет") {
          range.getCell(i, j).setBackground("lightcoral");
          activeSheet.setTabColor("lightcoral");
        }
      }
    }
  }

}

Отчёт о коэффициентах конверсий по часам и дням недели показывает эффективность рекламных кампаний в зависимости от времени.

Польза

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

Аддон Google Analytics для Google Docs позволяет получать данные из Analytics в Google Docs в один клик. Теперь не нужно делать выгрузки из GA и вручную копировать данные. Достаточно один раз настроить шаблон отчёта в Google Docs и обновлять его за 2 минуты.

Шаблон отчёта состоит из четырёх листов: Report Configuration — лист для настройки отчёта GA, создаётся автоматически; Report — Source — лист с отчётом GA, который будет использоваться как источник для сводной таблицы; Pivot — сводная таблица; Final Report — лист с итоговым представлением.
Отчёт Google Analytics строится на двух метриках и двух расширениях.
Metrics: Sessions, GoalXXCompletions
Dimensions: ga:hour, ga:dayOfWeek

Алгоритм создания шаблона отчёта

1. Подключаем аддон Google Analytics для Google Docs

Переходим в раздел меню Add-ons → get add-ons. В поиске находим Google Analytics и устанавливаем.

2. Строим кастомный отчёт на Google Docs

Add-ons → Google Analytics → Create new report.
Выбираем метрики: Sessions и GoalXXCompletions, измерения: ga:hour и ga:dayOfWeek.
В листе настройки отчёта указываем номер цели: Goal1Completions. Если оцениваем не весь трафик, а сегмент, добавляем его в строку Segment: раздел справки о сегментах.

3. Создаём сводную таблицу Google Docs на основе отчёта

Выбираем данные из кастомного отчёта и создаём сводную таблицу: Data — Pivot Table Report.

Настраиваем сводные таблицы:
Rows — ga:dayOfWeek
Columns — ga:hour
Values — ga:sessions. Summarize by Sum.

Копируем значения из сводной таблицы на новый лист, на котором будет итоговое представление. Google Docs пока не умеет делать calculated fields в сводных таблицах, поэтому следующим шагом меняем values на ga:goal1Comletions, результат копируем на лист с итоговым представлением.

4. Готовим итоговое представление

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

Добавляем таблицу «отклонение от нормы»: в качестве нормы я использовал средний показатель конверсии за период отчёта.

5. Добавляем условное форматирование

Чем краснее цвет, тем хуже показатели, зеленее — лучше.

Коэффициенты конверсий по часам и дням недели

Отклонение от нормы

Отчёт готов. Можно посмотреть сводные данные за дни: «как работает вторник» или часы: «все дни с 19:00 до 20:00».
Обновление отчёта занимает 2 минуты. Нужно запустить отчёт для нового периода или нового сегмента, после чего скопировать данные из обновлённого пивота на лист с итоговыми представлениями. Всё делается не выходя из интерфейса Google Docs, в качестве бонуса за использование Spreadsheets — условное форматирование и сводные таблицы.

Абсолютные данные конверсий по дням тоже могут быть интересными. Обычная табличка с числами в данном случае не так показательна. Интересный вариант — treemap по абсолютным значениям конверсий в разрезе дней с помощью сервиса infogr.am.

Теперь мы видим какие большие понедельник и вторник — дни «флагманы», как мало конверсий в субботу и воскресенье, и как посредственна среда. Treemap хорошо работает для большой выборки. В одном из следующих постов я построю treemaps по другим данным, строить их очень увлекательно.

Отчёт по часам и дням недели на Google Docs показывает как конвертируется трафик в разное время. Аналогичным способом можно изучать стоимости целей в зависимости от времени и абсолютные показатели целей и продаж. Настраиваем шаблон отчёта, обновляем за 2 минуты и анализируем не выходя из Google Docs.

Следующие шаги

На основе отчёта корректируем ставки по дням и часам и расписание показов в Яндекс.Директе и Google AdWords, если не используется автоматическая система управления ставками. Через неделю строим отчёт повторно и смотрим как изменились конверсии по дням и часам, сравниваем показатели по кампаниями/источникам до и после корретировок.

Открываю цикл постов о контекстной рекламе, веб-аналитике и построении отчётности.
Я добавил в шапку блога навигацию по тегам, чтобы статьи не потерялись.
Сегодняшний пост о работе с показателями качества Google AdWords.

Показатель качества AdWords отражает качество объявлений, ключевых слов и страниц приземления. В интерфейсе AdWords нельзя оценить эффективность аккаунта, кампании или группы объявлений с точки зрения показателей качества, они доступны только на уровне ключевых слов. Для того, чтобы провести диагностику качества аккаунта и рекламных кампаний, нужно использовать сводные таблицы Excel. Идея метода описана в книге Google AdWords Бреда Геддса. Я протестировал метод на нескольких аккаунтах AdWords, упростил процесс создания представлений сводных таблиц и добавил группировку показателей качества.

Зачем использовать

  1. За 30 минут провести диагностику качества аккаунта AdWords, понять насколько он здоров.
  2. Найти места возможного улучшения качества кампаний и аккаунта.
  3. Получить список проблемных кампаний и групп для оптимизации.

Сводная таблица по показателям качества покажет сколько показов и кликов было за период с конкретным показателем качества.
В процентном отношении:

И в абсолютном:

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

Алгоритм создания отчёта по показателям качества

1. Создаём отчёт по ключевым словам с показателями качества

Переходим в отчёт «ключевые слова» всех кампаний. Выставляем нужный период. В нашем примере мы будем смотреть данные за последние 30 дней. Если вы строите отчёт впервые, рекомендую ставить больший период, после чего посмотреть данные за меньшие периоды: последний, месяц, последние две недели.

Показываем в отчёте все ключевые слова.

Если ещё не добавлен столбец «показатель качества», добавляем его: «столбцы» → «настроить столбцы» → «атрибуты» → «показатель качества». По умолчанию столбец не показывается.

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

Применяем к отчёт фильтр: показываем только ключевые слова поисковых кампаний.

2. Выгружаем отчёт в xlsx и создаём источник для сводной таблицы.

Жмём на кнопку «загрузить отчёт» → выбираем формат xlsx.

Если вы хотите посмотреть динамику изменений показателей в одном представлении, то нужно сегментировать отчёт по дате. В нашем примере мы построим отчёт за последние 30 дней без разбивки по дате.

Открываем отчёт в Excel и удаляем первую строку.

Добавляем фильтр для строки с заголовками столбцов. Из колонок «ключевое слово» и «статус» убираем «итого» и blanks.

Из колонки «показы» убираем строки со значением «0».

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

3. Строим сводную таблицу Excel

Выделяем все данные на листе. Нажимаем на кнопку Insert → Pivot table.

Размещаем сводную таблицу на новом листе Excel.

Выбираем нужные нам ячейки. Располагаем так: значения — сумма показов и сумма кликов, строки — показатель качества, кампания, группа объявлений.

Настраиваем отображение ячеек: Value Field Settings → Summarize values by Sum.

Мы получили первое представление с абсолютными данными по показам и кликам в разрезе показателей качества.

Делаем новое представление для показа данных в процентном отношении. Для этого нужно скопировать сводную таблицу и вставить её на новый лист, после чего кликнуть по таблице правой кнопкой → show values as → % of Grand Total.

Чтобы сделать представление нагляднее, объединяем строки в группы: средний, низкий, высокий. 1-4 — низкие показатели качества, 5-6 — средние, 7—10 — высокие.

Этот аккаунт здоров: больше 60% показов приходятся на ключевые слова с высоким показателем качества, только 3,34% — показы с некачественных ключевых слов. Тем не менее, есть возможности для улучшения качества аккаунта: 35% показов мы получаем с ключевых слов среднего показателя качества. Наша следующая задача — увеличить долю показов с ключевых слов с высоким показателем качества. От показов с низкокачественных ключевых слов нужно избавляться.
Разворачиваем строки с низким показателем качества до уровня кампаний и групп объявлений. Эти группы нужно оптимизировать. Копируем их на отдельный лист Excel.

На уровень ниже кампаний в сводную таблицу можно добавить ключевые слова и посмотреть с какими ключевыми словами есть проблемы.

Создание отчёта занимает 20 минут, анализ в разных разрезах — ещё 30.
С готовым списком кампаний и групп идём в AdWords. Теперь мы знаем в каких частях аккаунта есть проблемы с показателями качества, эти группы объявлений оптимизируем. Я рекомендую строить отчёт по показателям качества регулярно, чтобы отслеживать как меняются доли показателей качества, и насколько увеличивается доля показов и кликов по ключевым словам с высокими показателями качества.