{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Вау-эффект для руководителей, или делаем удобную отчетность для бизнеса с уведомлениями в 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

0
23 комментария
Написать комментарий...
Андрей

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

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

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

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

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

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

>8 пункту: используется по сути пароль без логина? 

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

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

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

Да, спасибо большое!

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

Хочу!

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

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

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

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

Ответить
Развернуть ветку
Имбирный Краб

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

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

Думаю мне пора об этом написать

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

пора закончить писать телеграм с двумя "м"

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

Нечего сказать д сь до буквы, хотя видишь, что В ПЕРВОМ СООБЩЕНИИ Я НАПИСАЛ ПРАВИЛЬНО.

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

"Телеграмма"!

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

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

Ответить
Развернуть ветку
Дмитрий Перепёлкин

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

Ответить
Развернуть ветку
Трафик Директян

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

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

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

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

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

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

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

Список пользователей вам надо хранить самостоятельно. Таковы тонкости работы телеграм. 

На самом деле это очень логично, так как помимо идентификаторов у пользователей должны быть какие-то ещё атрибуты, иначе нам уже как бы не нужен бот… если мы всем рассылаем одно и то же сообщение, то мы делаем телеграм-канал.  

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

У меня в базе такие поля: 

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

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

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

За исключением добывания id все остальное не исключается. Хотя конечно ваш способ более гибкий. Другое дело, что узнать пароль, проще чем подделать id.

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

Классная связка инструментов получилась! Надеюсь, скоро обратимся сделать себе что-то похожее. Нужно с бюджетом у себя все посчитать. 
А пока надо utm-метки проверить)

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

Обращайтесь, конечно. Кстати в Зумкит есть Инструменты для проверки разметки

Ответить
Развернуть ветку
Дарья Добродеева

Аналитика пушка-бомба! Огонь-огонь! Очень крутая штука, как для агентств, так и для вдумчивых клиентов.  А кто там про Телегу спрашивал и тренды, посмотрите стату по рекламным бюджетам в него ежемесячную)

Ответить
Развернуть ветку
Павел Коган

А как-то настроили связь конкретной сделки с кликом по рекламе?

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

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

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

А вот о переходе на сайт нам достаётся уже огромное количество информации: если переход из органической выдачи, мы можем получить реферер из сессии пользователя, если переход происходил по рекламе: то в дополнение к рефереру все ссылки содержат разметку utm_source, utm_medium, utm_campaiign и т д. В utm_content мы передаём широкий спектр параметров включая позицию показа (над или под поисковой выдачей и место на котором мы находились 1,2.... в момент клика), регион местонахождения и т д

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

Добавлю, еще. При формировании сделок в CRM через формы на сайте или системой телефонии мы настраиваем передачу в поля сделки неизменяемого поля ClientID — это служебный идентификатор Яндекс.Метрики, который при необходимости можно использовать для более сложной аналитики.

PS: кроме переходов по рекламе у пользователей есть еще один вариант взаимодействия с ней, который будет бедным на атрибуты. Это звонок по телефону, который расположен возле рекламы.
Чаще всего мы знаем только то, что этот звонок был + мы присваимваем разные телефоны разным лендингам и разным рекламным системам, а значит можем знать по рекламе какого из сайтов был звонок и в какой поисковой системе. Это очень "бедные" данные. Гугл выдаёт детальный отчет для таких размещений (ведь у Google Ads работает свой коллтрекинг): можно посмотреть объявление которое видел пользователь, запрос, который он вводил и даже длительность разговора, а вот в Яндексе такие данные получить пока нельзя. Всё что мы можем знать — позвонили через номер телефона в объявлении. Ни текста объявления ни запроса пользователя посмотреть нельзя.

У меня получилось ответить?

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

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

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