Как с помощью чат-ботов и Python избавиться от рутины в отделах интернет-маркетинга

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

Привет! Меня зовут Никита Сверчков, я занимаюсь автоматизацией и аналитикой в команде интернет-маркетинга ГК «Везёт». В этой статье мы поговорим о проблемах, которые были решены с помощью автоматизации, и об инструментах, которые нам в этом помогли.

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

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

Инструменты автоматизации

Сейчас наша инфраструктура выглядит так:

Схема работы с данными

Прежде всего мы выгружаем данные из разных источников в наше хранилище. Часть этой работы берет на себя myBI Connect — удобный и недорогой сервис, работающий с основными инструментами интернет-маркетинга. В некоторых случаях пришлось писать и собственные скрипты для выгрузки данных на Python, например для:

  • FraudScore, чтобы формировать отчеты в BI по фрод-установкам;
  • Braze для анализа эффективности push- и in-app-сообщений в BI;
  • Турбо-страниц «Яндекс.Директ» для отправки заявок в CRM или на почты менеджеров, также заявки нужны для построения воронки до зарегистрированного водителя;
  • Лидформ Facebook, Instagram, ВК, «Однокласников» — то же самое, что и с турбо-страницами.

Также сохраняем данные с некоторых «Гугл Таблиц». Они понятны и привычны для большинства коллег, все значения этих таблиц выгружаются с помощью Python-библиотеки pygsheets.

Кстати, если говорить о Python, то это основа всей нашей автоматизации, так как язык очень удобен для работы с данными: совместно с библиотеками Pandas, Numpy и SQL мы выполняем большую часть задач.

А вот Telegram очень хорош для вывода важных оповещений с помощью ботов. Создать их и получить API-токен для управления из того же Python не составит труда, нужно лишь написать @BotFather. Более подробнее об этом можете найти в инструкции:

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

Отчётность

Если бы мы создавали список «Топ-10 способов неэффективной траты времени», то на первом месте определенно были бы отчеты, а именно ручное их создание. Да что уж говорить — рейтинг самых нудных задач возглавляли бы тоже они.

Представьте: каждые две недели вы 3-4 рабочих дня только и делаете, что копируете цифры из рекламных кабинетов, систем аналитики и CRM в сводную excel-таблицу.

Инструменты создания отчетов до автоматизации

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

Пример автогенерация отчета с демо-данными, наши дни

Теперь скрипт генерирует все отчеты за 1 час и отправляет уведомления коллегам на почты. Ранее на эти задачу суммарно уходило около 6-8 полных дней двух наших специалистов ежемесячно.

Бот проверки номеров в «Яндекс.Директ» и Google Ads

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

Пример номера телефона в «Яндекс.Директ»
Номер телефона в «Google Ads»

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

Решением стал телеграм-бот Андрей, который сверяет номер телефона во всех объявлениях с «Google Таблицей», содержащей список городов и соответствующих им номеров.

Оповещение от бота проверки номеров телефона

Обнаружив ошибку в номере, Андрей отправляет отчет в Telegram-канал наших специалистов по контекстной рекламе.

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

Бот отправки заявок

Бот Семён у нас отвечает за доставку заявок заказчикам и за оповещение, если что-то пошло не так. А пойти не так что-то может, особенно если заявки нужно доставлять с более чем ста лендингов на разные email, а также сразу в несколько CRM.

Куда и что доставлять Семён так же узнает из единой «Google Таблицы». Если не получилось отправить заявку на email, или после отправки в CRM она не появилась у менеджера соответствующего города, то мы получаем уведомление.

Отчет об отправленных заявках на email

Проблемы с бюджетом

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

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

Получается матрица из более 5000 позиций бюджета! У каждого из элементов этой матрицы свой строгий KPI.

Структура нашей рекламы

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

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

Прогноз бюджета

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

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

Пример таблицы с бюджетом (демо-данные). Расшифровка колонок для «Google Ads»: google_app — реклама приложения, google_drive — привлечение водителей, google_click — реклама сайта пассажиров, google_med — медийная реклама

Бот контроля остатков

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

Стас сообщает о выходе рекламы за рамки бюджета

А вот коллега Стаса, Вероника, напоминает о направлениях, где бюджет заложен, но реклама почему-то не запущена — такое тоже бывает и во многом тормозит выполнение KPI.

Вероника формирует отчет в «Гугл Таблице» и скидывает ссылку на него в Telegram
Пример одного из отчетов Вероники со списком незапущенной вовремя рекламы

Бот проверки названия кампаний и UTM-меток

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

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

Пример названия кампании с расшифровкой параметров

За исполнением этих правил следит уже знакомый вам бот Андрей. Он проверяет все названия рекламных кампаний и UTM-метки на наличие обязательных параметров и сообщает нам о найденных ошибках.

Пример оповещения Андрея об ошибках в названии кампаний и UTM-метках

Бот контроля «Google Таблиц»

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

Таблица с общей информацией о городах (демо-данные)

Так как доступ на изменение таблиц есть у многих коллег, а формат данных в них очень строг (иначе боты не смогут их понять), то и контроль крайне необходим. Решением стал бот Антон. Он проверяет чтобы в колонках с бюджетом были цифры, а в полях с почтами региональных маркетологов — email-адреса. Также он оповещает о расхождениях с историческими данными.

При появлении некорректных данных в таблицах приходит такое уведомление
Пример отчета Антона

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

Три закона бототехники

Правила, которые мы со временем сформулировали:

  1. Бот оповещает только заинтересованное лицо и не беспокоит своими уведомлениями других коллег.
  2. Бот не дублирует функции BI и систем Web-аналитики. Его задача — точечно указывать на проблемы.
  3. Бот пишет только тогда, когда возникает проблема. То есть он не отправляет уведомления, если ошибок не обнаружено.

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

Заключение

Хотелось бы рассказать и про сквозную аналитику, но ее построение в сервисе заказа такси заслуживает отдельной истории, а рассказ про ботов и автоочетность в интернет-маркетинге подошел к концу. Спасибо всем кто дочитал — вы большие молодцы!

Напишите в комментариях, что вы бы автоматизировали в своей работе? Какие боты могли бы помочь вам?

0
41 комментарий
Написать комментарий...
Вероника Павлова

если это не топ-статья, then I don't know what it is!

Ответить
Развернуть ветку
Аарон Малис

Гуси-гуси, га-га-га, русский с инглишем тудэй? Ну а хули, евридей! 

Ответить
Развернуть ветку
Pepe Elefes

если это не жоғарғы-статья, онда оның не екенін білмеймін!

Ответить
Развернуть ветку
Nazar Tresvyatsky

Отличная статья, Никита! Прочитал и аж слезу пустил, вспоминая, как мы всё это "рожали". Жду появления моего бота))

Привет всей digital-команде «Везёт» ❤️  

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Андрей Фролов

Автоматизация это круто (почти всегда). Надеюсь, люди не в обиде за то, что их заменили ботами

Ответить
Развернуть ветку
1 комментарий
Vitold S.

Первое, что теперь надо писать боту Зови человека или звонить в тех поддержку. По сути просто усложнили взаимодействие с тех поддержкой. Все равно чаще всего боты непродуманные (удобные исполнителю, а не заказчику). Пройдет еще лет 10 когда компании догадаються заказыватььвнешний аудит. Короче печально все это.

Ответить
Развернуть ветку
Ekaterina Yuzefovich

Супер! Пример отлично проделанной работы. Эффект и польза несомненны.

Ответить
Развернуть ветку
Тимур Эмир

А что если ботов зовут также, как и сотрудников, которые выполняли эту работу)

Ответить
Развернуть ветку
Сергей Михельсон

Т.е. раньше это были скрипты, а теперь боты, ну ок )

Ответить
Развернуть ветку
Artem Krupenko

Делаем бота, чтобы он позвал другого бота. Бюрократия ботов 😁

Ответить
Развернуть ветку
Natalya Sturza

Классная статья, спасибо ребят :) 

Ответить
Развернуть ветку
Polina Kovard

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

Ответить
Развернуть ветку
Katya Smetanina

Теперь и мне захотелось своего бота))) 

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Alex Kasakow

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

Ответить
Развернуть ветку
Max van Dyk

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

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Victor Chernov

Шикарная автоматизация, хорошая статья!

Ответить
Развернуть ветку
Delov Dmitriy

Отличные примеры автоматизации рутинных действий! 

Ответить
Развернуть ветку
EveryStraus _

Спасибо за кейс, интересно! Справедливости ради, автоматизационные фичи также доступны во внешних сервисах и инструментах вроде биддеров и оптимизаторов конверсий.

Ответить
Развернуть ветку
Александр Прилипко

Демонстрация конкурентного преимущества в чистом виде

Ответить
Развернуть ветку
Елена Гладышева

Идея автоматизации мне нравится, спасибо автору

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Uzabila

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

Ответить
Развернуть ветку
srgTs

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

Ответить
Развернуть ветку
Александр Прилипко

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

Ответить
Развернуть ветку
Uzabila

Боты обиделись, но научились ставить минусы...

Ответить
Развернуть ветку
Polina Kovard

В качестве бота Антон мне нравится больше )))))

Ответить
Развернуть ветку
Эдуард Богомаз

0_0

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Shepard

Всё же шанс глюка GDC ниже, чем шанс человеческого фактора.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Pavel Osadchuk

неплохо

Ответить
Развернуть ветку
Алексей Nein

У меня предметный вопрос. 
Есть ли у Вас сложные отчеты со сложным оформлением? Типа три-четыре группировки по горизонтали и несколько по вертикали с не прогнозируеммыми временными рядами и итогами по ним? это моя головная боль. пока что спасает самописный плагин для pandas и pivot table. ибо на xlsxwriter это всё писать слишком дубово. может у вас какие-то иные механизмы задействованы?

Ответить
Развернуть ветку
Никита Сверчков
Автор

Не до конца понял ваш вопрос, можете написать в лс более подробнее?

Ответить
Развернуть ветку
Виталий

Вам не кажется, что Бот Антон - который проверяет Доксы на валидность данных, вообще излишен, можно сделать это стандартной проверкой по столбцу.
Данные - Настроить проверку данных. 
Ну то есть, тогда не искать ошибку, а сразу ругнуть пользователя, чтобы поправил.
Или мы чего то еще не знаем про Антона ?))

Ответить
Развернуть ветку
Никита Сверчков
Автор

Вы правы, у Антона есть и более сложная миссия, — он следит за согласованностью данных между «Гугл Таблицами» и DWH. Например, он проверяет, чтобы все города, по которым когда-либо шла реклама, присутствовали в таблицах.

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

Ответить
Развернуть ветку
Pavel Chuprunov

Ничего не понятно, но очень интересно!

Ответить
Развернуть ветку
Дмитрий Кудрявцев

Откройте для себя уже волшебный мир No_Code, начните с Integromat, например.

Ответить
Развернуть ветку
Sergei Kazitcin

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

Для небольших компаний, которые ограничены в различного рода ресурсах, это вполне оправданное решение, но для серьезных компаний, в которых есть необходимые специалисты, подобное решение абсолютно не оправдано, я про "No_Code"... но это на мой взгляд ;)

Ответить
Развернуть ветку
38 комментариев
Раскрывать всегда