Вау-эффект для руководителей, или делаем удобную отчетность для бизнеса с уведомлениями в Telegram

Меня зовут Александр Поляков, у меня рекламное агентство, и я не программист. В этой статье расскажу, как сделал Telegram-бот с отчетами для клиентов.

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

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

Чтобы настроить такого робота я использовал Google Sheets, Python и бессерверные вычисления на Amazon.

Пример ежедневного дайджеста, который присылает робот в Телеграм. Александр Поляков
Пример ежедневного дайджеста, который присылает робот в Телеграм. Александр Поляков

Бот присылает сразу ссылку на визуализацию и на "сырые" данные в Google Sheets — на случай, если потребуется детально разобраться в том, откуда взялся тот или иной результат.

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

В статье расскажу о том, что требуется для запуска такого робота.

Буду рад вопросам. Если увижу, что подобная отчетность интересна сообществу, я опишу каждый шаг детально в следующих материалах.

Вот, что я использую для запуска такого бота

1. CRM или любой другой источник данных о сделках,

2. Загрузку данных из рекламных кабинетов по API,

3. AWS Lambda, чтобы не настраивать сервер,

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

Структура подготовки данных и визуализации Александр Поляков
Структура подготовки данных и визуализации Александр Поляков

Чтобы всё настроить, я прохожу следующие шаги:

1. Проверка того, что у нас есть CRM и в ней есть все данные

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

  • статусы сделок (выигранная, проигранная, обращение в сервис или отдел продаж, произошел визит к клиенту или нет и др.)
  • суммы сделок или иной результат
  • информация о том, что является источником сделки. Это могут быть атрибуты UTM, ClientID Яндекс.Метрики, номер телефона + данные коллтрекинга,
  • прочие атрибуты сделок: использованные промокоды, идентификатор пользователя Амплитуд и т. д.

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

В моей практике такой базой данных может быть Google Таблица, Google BigQuery или DynamoDB.

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

3. Проверка наличия необходимых данных в рекламных кабинетах

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

  • 🚫 Шуруповёрты рег. общая. — а как расшифровывается рег? это сети или поиск?
  • ✅ (site.ru)_(shurupovert_awareness)_(regions)_(search) — понятна посадочная, поиск или сети, условия нацеливания.

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

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

Можно загружать данные вручную, но обычно я автоматизирую процесс с помощью Python.

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

Зумкит поддерживает выгрузку статистики на уровне кампаний, групп объявлений и ключевых фраз для Яндекс.Директа, Google Ads, ВКонтакте, Facebook Ads и MyTarget. Скоро добавлю поддержку Яндекс.Маркет и рекламного кабинета TikTok.

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

Документация:

5. Собираем сведенные данные из CRM и рекламных кабинетов

Дальше надо объединить данные о расходах и о результатах. Само объединение можно сделать как в Python — быстрый способ, так и в Google Sheets при помощи специальных формул.

6. Визуализируем полученные данные в Google Data Studio или Google Sheets

Чаще всего я использую Google Data Studio. Она простая в изучении и использует собственный встроенный процессор для подсчета формул в Google Таблицах. Также в Google Data Studio можно сделать отдельную вёрстку для мобильных устройств.

В Google Sheets просмотр не такой удобный, как в Студии Данных, зато можно рядом с графиком разместить "сырые" данные, на основе которых он построен, чтобы сразу можно было оценить причины той или иной аномалии.

7. Зарегистрировать телеграм-бота и произвести настройки

Бота можно зарегистрировать через @BotFather, об этом есть много материалов. Но есть несколько важных моментов.

  1. Чтобы обойтись без отдельного сервера, я создаю выделенную AWS Lambda микропрограмму в облаке Amazon. Функция активируется через HTTP-вебхук, который отправляет Телеграм на сервер Амазона.
  2. Так как каждый владелец бота должен вести учет пользователей самостоятельно и хранить их базу, чтобы обеспечить быстродействие, я использую другой сервис из облака Amazon — DynamoDB.

И AWS Lambda и DynamoDB — бесплатные сервисы до определённого уровня нагрузки, мне обходятся около двух долларов в месяц.

8. Создать настройку прав для пользователей бота

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

Я использую простую авторизацию: чтобы получить доступ к определенному набору данных, боту надо отправить секретную строку. Если строка принадлежит определённому проекту, доступ разрешен и пользователь начинает получать отчеты, если нет — бот молчит.

Чем такая отчетность полезнее коробочных решений

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

Быстро заметили крупный заказ и предложили скидку

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

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

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

Нашли работающие кампании для автосалона

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

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

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

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

Если у вас будут вопросы или потребуется помощь по настройке Lambda или визуализации данных, можете обращайтесь ко мне лично в Фейсбуке:

Мой сайт с контактной информацией:

Мой сервис для бесплатного получения данных из рекламных кабинетов:

Документация по API Zoomkit

4848
23 комментария

Расскажите подробнее про 7 пункт, пожалуйста, как все организовано.
По 8 пункту: используется по сути пароль без логина? Почему решили права доступа не привязывать к номеру телефона или username?

4
Ответить

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

То есть вы должны раз в какой-то период времени опрашивать телеграм на предмет новых пользователей, отправленных боту команд и обрабатывать информацию. Согласитесь — неудобно, а для пользователя будет бросаться в глаза "шов", он написал команду, а бот ему ответил через период обновления, например 20 минут.

Но в телеграме можно сделать так, чтобы бот отправлял все обновления сам на сервер, по HTTP протоколу. Это называется webhook.  Метод документации — /setWebhook

Мы можем настроить HTTP шлюз прямо на Амазоне. То есть Телеграм  будет присылать все обновления прямо в Амазон. Этот запрос будет является тригером для запуска AWS Lambda функции обновления базы данных прользователей. Она берет сообщение, ищет в нём команду и интерпретирует ее. Например если отправить боту /start он включится, а если /stop, перестанет присылать уведомления.
Можно отправить /register и бот будет ждать авторизационного ключа.
Всё поведение бота является реакцией на определенный апдейт, который присылает сам Телеграм.

>8 пункту: используется по сути пароль без логина? решение показалось изящным, одна строка, а не две или три. Плюс в принципе все пользователи являются деанонимизированными — то есть в случае необходимости отключить пользователя можно можно прямо в DynamoDB, ключ авторизации поменять тоже можно там же.

Получилось ответить? 

3
Ответить

Телеграм это прошлый век. Кому он сдался

3
1
Ответить

А что нынче в трендах?

1
Ответить

Хочу!

2
Ответить

Ты знаешь где меня найти ;)

2
Ответить

Как расходы из рекламных кабинетов по апи обновляются без сервера? Или в зумкит крон под капотом?

Ответить