Без рубрики

Пишем биддер для Google AdWords из 10 строчек

Андрей Педченко

Руководитель отдела контекстной рекламы Mello

Если Вы занимаетесь контекстной рекламой в Google AdWords, то уже успели задуматься об автоматизации управления рекламными кампаниями. Благо, имеется AdWords Editor, с которым многие процессы проходят гораздо быстрее, чем при работе в интерфейсе рекламной системы, хотя и там возможностей предостаточно. Но все еще есть задачи, которые нужно решать массово, а очевидного решения нет. На этот случай мы можем использовать скрипты javascript, тем самым облегчая свою работу и получая необходимый результат.

Посмотрев статьи о скриптах для AdWords в русскоязычных источниках нам не удалось найти материала, который не копировал бы справку AdWords Scripts и не отсылал пользователя к готовым решениям Google. Чаще всего приводятся «многоэтажные» коды для отслеживания битых ссылок, отключения неэффективных ключевых фраз, и выставления ставок в зависимости от температуры. Это все здорово, но слишком сложно для человека, ранее не вникавшего в программирование.

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

Биддеры как основной инструмент оптимизации рекламных кампаний уже давно устарели. Сейчас в почете оптимизация конверсий (CRO) и perfomance marketing. И это правильно. Тем не менее, периодически возникают задачи, которые нельзя решить в рамках новейших методик:

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

  2. Недостаточно данных для корректной работы оптимизаторов конверсии.

  3. Принципиальное нежелание рекламодателя по определенным запросам уходить из контекстный рекламы, независимо от их эффективности

В этих ситуациях вам поможет биддер. Знания в программировании необязательны. Кодим!

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

function main(){}

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

var kw1 = AdWordsApp.keywords()

С помощью команды «var» задаются переменные в javascript, «kw1» — это имя переменной, а все, что после знака равенства — это метод, позволяющий нам «вытягивать» ключевые слова из аккаунта. Понятное дело, — нужно задать критерий выборки ключевых фраз:

.withCondition(‘CampaignName = «Имя кампании»‘)

.get();

Этот фрагмент будет получать все ключевые фразы из указанной кампании. Чтобы «достать» все ключевики надо зациклить обозначенную выше операцию, делается это с помощью условия:

while(kw1.hasNext()){}

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

var kw2 = kw1.next();

Тем самым мы создаем переменную «kw2», в которую записываем каждое следующее ключевое слово. Создадим еще одну переменную, в которую будем записывать ставку, необходимую для попадания на первую страницу результатов поисковой выдачи:

var kw3 = kw2.getFirstPageCpc();

Для каждого «ключа» в эту переменную будет записываться своя ставка. Иногда (очень редко) у системы нет данных о том, какая ставка позволит попасть на первую страницу, в таком случае в переменную «kw3» не запишется никакого значения, и наша программа выдаст ошибку (данных обычно нет для низкочастотных или не встречавшихся ранее запросов). Чтобы обойти эту проблему пропишем условие, по которому в случае отсутствия рекомендуемой ставки будет задаваться произвольное значение, например 15 рублей (речь идет о валюте, указанной в настройках аккаунта):

if (kw3<=0){

kw3=15;}

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

kw2.setMaxCpc(kw3*1.05);

Всё! Это просто, и это работает. Теперь весь код целиком:

function main(){

var kw1 = AdWordsApp.keywords()

.withCondition(‘CampaignName = «Имя кампании»‘)

.get();

while(kw1.hasNext()){

var kw2 = kw1.next();

var kw3 = kw2.getFirstPageCpc();

if (kw3<=0){

kw3=15;}

kw2.setMaxCpc(kw3*1.05);}}

Таким образом, наш код будет получать необходимые минимальные ставки всех ключевых слов для занятия первой страницы, будет увеличивать это значение на 5%, и далее присваивать каждую новую ставку каждому ключевому слову. Всего 10 строчек! Можете проверить на любой из кампаний, для этого откройте аккаунт AdWords и перейдите в раздел скриптов в массовых операциях, нажмите кнопку добавления скрипта:

1.png

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

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

Далее скрипт закрываем и настраиваем периодичность его выполнения:

Возможно, сейчас Вы подумали: “А почему бы не использовать правила для автоматизации назначения ставок, которые предложены нам в интерфейсе AdWords?” Кто не знает, они находятся здесь:

Не используем мы их потому, что по этим правилам ставка может только повышаться до необходимого уровня, при таком подходе мы можем переплатить за клики. Например, вчера для конкретного ключевого слова для показов вверху первой страницы была ставка 50 рублей (и система выставила это значение), а сегодня уже 30 рублей, но наша ставка так и останется равной 50 рублям. Вы ведь не хотите переплачивать 20 рублей за каждый дополнительный клик?

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

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

Аккаунт 1 (18 января — 31 января):

Скрипт был внедрен 22 января. Данные берутся из аккаунта AdWords.

Для аккаунта с 5-ю кампаниями в поисковой сети средняя цена за клик снизилась с 30 до 5,5 рублей.

5.png

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

6.png

При этом дневной расход особо не изменился.

7.png

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

Доля выигранных показов в поиске также увеличилась.

8.png

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

9.png

Стоимость конверсии снизилась с 1078 рублей до 309 рублей, при этом возросло и число выполняемых целевых действий:

10.png

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

Аккаунт 2(1 января -14 февраля):

Скрипт был внедрен 23 января. Данные берутся из аккаунта Analytics.

Цена клика снизилась с 20 рублей до 5 рублей.

В количестве кликов особых изменений нет.

12.png

Количество конверсий не уменьшилось.

13.png

Но стоимость конверсии снизилась примерно с 600 рублей до 140 рублей.

14.png

Так как на сайте отслеживается не одно выполняемое действие , то суммарное число конверсий оценивается с помощью вычисляемого показателя calcmetric_calcmetric_sostav_target, аналогично, показатель calcmetric_calcmetric_cost_cr подсчитывает среднюю стоимость коверсии.

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

Аккаунт 3(1 января -14 февраля):

Скрипт был внедрен 21 января. Данные берутся из аккаунта AdWords. Конверсии не отслеживаются.

Среднее число кликов в день увеличилось с 22 до 104.

15.png

Цена клика уменьшилась с 15 рублей до 2-3 рублей.

16.png

Средняя занимаемая позиция зафиксировалась на уровне 1,9.

17.png

Процент полученных показов в поиске также начал расти.

18.png

Кликабельность не изменилась.

19.png

В общем пробуйте, программируйте, это очень хорошо работает. А много полезной информации можно найти на следующих сайтах:

http://www.freeadwordsscripts.com

https://gist.github.com/derekmartinla

http://www.rankhammer.com/blog

А прочитав справку AdWords Scripts, Вы узнаете как из приведенного в статье скрипта сделать биддер для удержания верхних строчек первой страницы:

https://developers.google.com/adwords/scripts/

.