Собираем UTM-данные клиента внутри его карточки в ПланФиксе

Артём Колисниченко: Сегодня в рубрике «Рассказ от первого лица» основатель студии «Контентим» Владимир Калякин. Он пользуется системой уже 6 лет и, по его словам, любит ПланФикс за то, что на его базе можно реализовать почти любые «хотелки» и автоматизацию. В этой заметке Владимир расскажет, как собирать UTM-данные клиента внутри его карточки, если основная масса заявок приходит через бота в Telegram. Передаю слово Владимиру.

Владимир Калякин: Всем привет! Мы в студии «Контентим» реализовываем некое подобие сквозной аналитики внутри нашей любимой CRM ПланФикс, на данном этапе собирая все UTM-данные по клиентам внутри карточки клиента.

С обращениями, приходящими через заполнение формы на сайте, вопрос решился достаточно просто: сайт на WordPress, плагин «Easy UTM tracking with contact form 7»  позволяет передавать в письме все метки, которые мы с помощью функционала парсинга писем раскладываем по полям в карточке клиента.

UTM-метки письма с сайта
UTM-метки письма с сайта.

В последнее время 90% обращений приходит через бота в Telegram. На данный момент это самый удобный канал коммуникации — как для нас, так и для клиента. Проблема только в том, что мы теряем все метки при переходе из сайта в мессенджер, и соответственно, в CRM тоже.

Делимся своим решением проблемы

В Telegram есть технология «внешнего связывания», или deep linking, описанная тут. Её мы и будем использовать для переноса меток UTM в CRM.

Для начала мы реализовали скрипт для подмены ссылок. На сайте он подставляет всем ссылкам на бота (с определенным классом) конструкцию, сформированную из значений UTM, разделенных разрешенными знаками «_». Сами значения при этом мы берем из PHP-сессии. Получается, когда пользователь проходит на сайт по ссылке с utm-метками, данные прописываются в сессию.

Затем скрипт в коде дописывает ссылкам на телеграм-бота deep-link команду:

&start=_{utmsource}__{utmmedium}___{utmcompaign}
Скрипт дописывает ссылкам  на телеграм-бота deep-link команду
Скрипт дописывает ссылкам на телеграм-бота deep-link команду.

Получается что то вроде:

https://t.me/contenteambot/&start=_fb__cpc___test

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

/start _fb__cpc___test

Дальше остается лишь распарсить это описание. Можно конечно подождать, пока команда ПланФикса реализует обещанный функционал 😉 , а можно воспользоваться сторонним сервисом, типа Zappier.

Мы создали сценарий:

Автоматический сценарий ПланФикса передаёт utm-метки Telegram в Zappier
Автоматический сценарий ПланФикса передаёт utm-метки Telegram в Zappier.
По клику картинка откроется в большем размере.

При появлении задачи из Telegram он отправляет письмо в сервис Zapier в таком виде:

Пример письма в сервис Zapier
Пример письма в сервис Zapier.

Шаблон письма содержит описание задачи и идентификатор клиента, по которому будем возвращать данные обратно в ПланФикс.

Теперь остается настроить сервис Zappier на два шага (доступно в бесплатном тарифе): 

  • Шаг первый – парсинг письма – выделение ID клиента и полей аналитики.
    Тут надо заметить, что парсер у них весьма капризный в настройке, поэтому мы и ввели в UTM разделение данных разным количеством “_”. Как говориться, чтобы наверняка.
Выделение ID клиента и полей аналитики
Выделение ID клиента и полей аналитики.
По клику картинка откроется в большем размере.
  • Шаг второйUpdate Contact.
    Обновляем данные контакта с указанным идентификатором.
Обновляем данные контакта
Обновляем данные контакта.

В итоге данные из UTM-меток через Telegram попадают ровно в поля клиента в ПланФиксе.

Данные из UTM-меток в полях клиента
Данные из UTM-меток в полях клиента.

И напоследок отмечу: скрипт, который динамически меняет ссылки в коде сайта, написан сторонним программистом с трудозатратами примерно 2 часа. Если возникнут сложности — обращайтесь, поделимся!


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

Подписывайтесь на наши социальные сети: Facebook, ВКонтакте, Telegram, Twitter и YouTube-канал, чтобы не пропустить актуальные новости и новинки.

9 Comments

  1. Аватар

    Класс, Владимир. В последнее время все больше смотрим на возможности integromat как альтернативы zapier.
    Данный пример тоже решается в два шага:
    — ПланФикс шлет POST запрос на web-hook интегормата;
    — Интегромат получает POST запрос, по API заполняет поле в карточке контакта.
    В рамках бесплатного тарифа получится за месяц обработать 500 таких запросов.
    Один из плюсов не нужно использовать почту, для получения данных на входе (хотя возможно что и zapier позволяет настраивать webhooks).

    1. Аватар

      Кстати говоря, позволит ли integromat разобрать массив _xxx__yyy___zzz ? Ведь в Планфиксе мы можем получить только его, deeplink команды ограничены на использование символов типа =, чтобы явно разметить данные для вебхука.

      1. Аватар

        Я думаю что позволит. Но я пока не понял как выглядит этот массив.
        В webhook данные можно передавать в формате JSON, он автоматом парсится на выходе из webhook все уже разложено по полям.
        Далее уже можно делать разбор конкретного поля.

      2. Аватар

        Вариантов разложить данную строку на три элемента массива или на переменные несколько.
        Вариант 1. Самый «простой». Выделение подстроки текста начиная с метки и отсечением лишних подчеркиваний. Данные формулы сразу используем для подстановки в API запрос в XML-код.
        Например:
        {{replace(substring(1.Text; indexOf(1.Text; «_»); indexOf(1.Text; «__»)); «_»; emptystring)}} — выдаст fb
        {{replace(substring(1.Text; indexOf(1.Text; «__»); indexOf(1.Text; «___»)); «__»; emptystring)}} — выдаст cpc
        {{replace(substring(1.Text; indexOf(1.Text; «___»); length(1.Text)); «___»; emptystring)}} — выдаст test
        Вариант 2. Сначала разбираем по переменным (аналогичными «формулами»), а потом используем переменные для подстановки в подстановки в API запрос в XML-код.
        Минус этой схемы лишний шаг на разбор по переменным. Вполне возможно что разбор каждой переменной интегромат посчитает как отдельное выполнение, и на один запрос уйдет 4 вызова модулей.

    1. Аватар

      Я так понимаю что канал добавления телеграмм, а не почта. А для телеграмм «правил почты» — нет.
      Но теоретически можно же сделать вычисляемое поле задачи, которое из описания или из комментария вытащит метку и значение вычисляемого поля подставит в контакт.

Добавить комментарий