Top.Mail.Ru
UnionCreated using FigmalectureCreated using Figma

Канал для олдов интернет-маркетинга: новости, статьи, приколдесы про digital Присоединяйся!

7994 https://ppc.world/uploads/images/41/f7/61266fb09c280-cover-python.jpg 2021-08-26 Директ ppc.world 160 31

Как проверить конверсионность рекламы в Яндекс.Директе с помощью Python

Одна из основных задач PPC-специалиста — следить за конверсионностью рекламы. Александр Любивый из digital-агентства Bquadro показывает, как оптимизировать этот процесс с помощью Python.

Ещё больше полезных статей и свежих новостей в нашем Telegram-канале
Telegram Подписаться

Изначально я использовал Python для сбора BI-аналитики по Яндекс.Директу. Это помогло мне сделать процесс изучения статистики более удобным: я стал максимально быстро замечать отклонения в рекламе, а освободившееся время уделял ее доработкам.

Со временем я решил оптимизировать повторяющиеся задачи по отслеживанию конверсионности рекламы. Как результат — процесс оптимизации рекламы ускорился, стало удобнее следить за кампаниями (пара кликов — и все готово!), но самое главное, рутины стало меньше.

В этой статье я покажу, как проверяю конверсионность в РСЯ с помощью Python в разрезе ключевых слов и площадок показа. Если вы повторите мои действия, получите такие отчеты:

Что вам для этого понадобится:

  1. Токен для работы с API. Чтобы его получить, у вас должно быть приложение, которое Яндекс проверит и допустит к работе. Если у вас нет приложения, а провернуть все то, что я покажу в этой статье, хочется, воспользуйтесь нашим приложением — так процесс получения токена займет не более минуты. Сделать это можно здесь. Токен будет в адресной строке после “access_token=”.

  2. Видеоинструкции, которые я записал для вас: в первой показываю, как построить запрос к API Яндекс.Директ, а во второй — как вывести полученные данные в BigQuery, подключиться к DataStudio и визуализировать их.

  3. Готовые файлы, с помощью которых вы сами можете настроить получение статистики по ключевым словам и площадкам.

  4. Python-пакет Yadirstat, который позволяет с помощью одной строки кода получить информацию сразу в нескольких разрезах (разбираться в запросах не нужно).

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

Вводные данные

Чтобы построить аналитику для Яндекс.Директа без помощи коннекторов максимально разнообразно и глубоко, нам потребуется 4 составляющих:

  1. Запрос к API Яндекс.Директа.

  2. DataFrame.

  3. BigQuery.

  4. Data Studio.

Алгоритм выглядит так:

  1. Строим запросы к API Яндекс.Директа. Пишем на Python конкретные запросы. Например, вывод статистики за последние 5 дней или вывод статистики по ключевым словам за 90 дней.

  2. Запрос к API Яндекс.Директа упаковываем в DataFrame. Для чего это делается: мы не может просто так отправить полученную из API информацию в BigQuery, к тому же у нас есть пустующие ячейки, которые нужно заполнить. Изначально там стоит прочерк “--”, а BigQuery такие прочерки не воспринимает — из-за них столбцы имеют текстовый тип данных, что не позволяет манипулировать данными. После переноса информации в DataFrame и удаления прочерков, мы можем полноценно работать с данными, писать скрипты, считать статистику и т. д.

  3. Отправляем данные из DataFrame в BigQuery. Почему именно так: BigQuery — это простой инструмент интернет-маркетинга и он достаточно легко подключается к Data Studio, что нам и надо.

  4. Подключаемся к DataStudio и визуализируем полученные данные.

Для проверки конверсионности в РСЯ достаточно первых двух шагов: построить запросы к API Яндекс.Директа и упаковать ответы на них в DataFrame. Подробнее об этом далее.

Шаг 1. Создаем структуру запроса

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

Открываем запрос. В первом блоке оставляем все так, как есть.

Пример запроса

Ниже прописываем свой токен, логин клиента и убираем знак # в строке #“returnMoneyInMicros”: “false”, чтобы получать реальные данные денежных единиц.

Изменения в коде

Теперь фокусируемся на теле запроса.

Тело запроса
Пример нашего запроса

Указываем даты. Если вы хотите задать произвольный период, в DataRangeType нужно поставить CUSTOM_DATE и указать даты начала и окончания периода в параметрах DateFrom и DateTo. Если же вам нужны, например, последние 90 дней, поставьте в DataRangeType LAST_90_DAYS, а DateFrom и DateTo уберите.

Указываем даты

Указываем название столбцов, которые нужны в отчете. Здесь действуют те же ограничения, что и в Яндекс.Директе. То есть просто так запросить какую угодно статистику нельзя. Если в отчетах Яндекс.Директа система просто не дает выбрать некоторые столбцы, то в работе с API необходимо выбрать нужный вид отчета и столбцы, которые можно использовать с этим отчетом, иначе вы получите ошибку. В справке Яндекса можно узнать, какой тип отчета нужен и какие столбцы в этих отчетах вы сможете использовать.

Указываем название столбцов

Если нужно, включаем НДС. То есть в IncludeVAT вместо NO пишем YES.

Включение НДС

Выставляем фильтр по кликам (будет показываться статистика, по которой больше 0 кликов) и фильтр по типу площадки (только Ad_Network).

Фильтр по кликам и площадке

Далее идет кусок с ответами сервера. Его оставляем без изменений.

Ответы сервера

Шаг 2. Упаковываем ответ на запрос в DataFrame

Я предпочитаю делить процесс построения запросов к серверу Яндекс.Директа на две части:

  • запрос к серверу;

  • файл с логинами, токенами, операциями с таблицами.

Это позволяет удобно работать с учетными данными клиентов и получать данные по всем клиентам сразу, не превращая код в кашу.

Ответ на запрос к API упаковываем в функцию, в которую будем передавать токен, логин, DateFrom и DateTo.

Первый файл

Здесь нам нужен запрос к серверу и упаковка его ответа в DataFrame.

Запрос мы уже подготовили в первом шаге. Теперь нам нужно избавиться от “--” и сделать из данных полноценный DataFrame.

Код выглядит так:

Код первого файла

Алгоритм действий:

  1. Открываем или создаем файл в режиме записи (название можно дать любое).

  2. Записываем в файл ответ сервера с нашей статистикой (в нашем случае это переменная req).

  3. Закрываем файл.

  4. Сразу же читаем этот файл с помощью pd.read_csv.
    В скобках указываем название файла (у нас это “cashe.csv”), индекс нашего хедера (можно оставить без изменений), разделители между данными (sep), какая у нас индексируемая колонка, делаем из “--” отсутствие данных (na_values). После скобок с помощью fillna заменяем отсутствующие данные на 0.

  5. Возвращаем наш DataFrame как переменную f.

Второй файл

Импортируем наш файл и библиотеки.

Импортированный второй файл

Убираем ограничения на отображение информации.

Снятие ограничений на отображение

Записываем свои логин и токен в переменные.

Записанный логин и токен

Просим наш соседний файл дать информацию по ключам (обращаемся к функции rsy_keys из соседнего файла и передаем в нее токен и логин): data = rsy_keys(my_token,my_login).

Информацию получили:

Полученная информация

Теперь необходимо оставить только строки с ключами, у которых стоимость конверсий выше среднего уровня на 50%.

Ключи с высокой конверсией

Смотрим ключевые слова, по которым было потрачено больше, чем 150% стоимости конверсии и не было конверсий.

Неконверсионные ключи

В итоге видим следующее:

Аналогично получаем статистику по площадкам:

  1. В первом файле прописываем еще один запрос (он будет называться “rsy_placement”);

  2. В запросе изменяем столбцы (запрашиваем не ключи, а плейсмент) и тип отчета. Используем кастомный отчет “ReportType”: “CUSTOM_REPORT”.Измененные столбцы

  3. Прописываем код для получения неэффективных площадок:

Неэффективные площадки

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

  • ключевые слова, у которых стоимость конверсии выше среднего уровня на 50%;

  • ключевые слова, по которым расходы составили свыше 150% средней конверсии и которые до сих пор не принесли конверсии;

  • площадки, на которых стоимость конверсии в 1,5 раза выше среднего уровня;

  • площадки, на которых расходы составили больше 150% средней конверсии и которые до сих пор не принесли конверсии.

Если остались вопросы, пишите в комментариях.

 

Последние комментарии

Ваша реклама на ppc.world

от 10 000 ₽ в неделю

Узнать подробнее

Лучшие статьи этого месяца

Сообщить об опечатке

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