Обработчик вебхука
Как мы сделали так, чтобы при изменении лида в LPTracker выполнялся целый список событий в других системах

Как он работает и для чего нужен?
Сотрудник или другая интеграция вносит изменения в карточку лида в LPTracker
Меняет шаг воронки или заполняет поля, добавляет комментарий, звонок или проводит оплату
LPTracker присылает сведения об изменениях в лиде на наш модуль
Полную информацию о лиде и отдельно - список того, что изменилось
Нужно ли совершить какое-либо действие?
Модуль проверяет, соответствует ли лид условиям для совершения какого-либо заранее определенного действия
Совершаем целевое действие
Если лид соответствует условиям, то совершаем это действие. Если нет - то пропускаем. Кстати все приходящие события обрабатываются параллельно.
Над чем мы особенно постарались
  • Обработка возникающих ошибок
    Чтобы не возникали таймауты в передаче данных на вебхук со стороны LPTracker и система непрерывно функционировала. Кроме того, все события, поступающие на вебхук обрабатываются асинхронно (параллельно)
  • Логирование основных операций
    осуществляемых обработчиком вебхука, чтобы быстро обнаруживать неисправности в логике и реализации.
  • Удобство управления
    Все условия, при которых меняются условия событий меняются в одном месте.
  • Системный подход
    Который значительно экономит время на подключение новых сервисов и систем и позволяет быстро вносить изменения в логику автоматизированного бизнес-процесса
Нужно решить решить похожую задачу или хотите себе такое же решение?
Вопрос:
А разве не хватает штатного функционала автоворонок? Зачем всё так усложнять?
Отвечаем:
Действительно, автоворонки в LPTracker позволяют решить большую часть задач, связанных с взаимодействием с клиентом. Но, к сожалению, функционал автоворонок в LPTracker, как и в других сервисах, является ограниченным, поскольку разработчикам предполагается только автоматизация внутри сервиса.

Например, из автоворонки невозможно задействовать сторонний сервис (например, Яндекс. Метрику или Chat2Desk) или сделать POST-запрос для выполнения действия в сторонней системе. Кроме того, в качестве условия автоворонки нельзя задать, например, дату входящую в определенный динамический диапазон или задействовать определенную логику если поле является пустым (или не пустым, тут уже как вам нужно).

Поэтому наш модуль не отменяет использование автоворонок, а дополняет и расширяет перечень возможных условий срабатывания и возможных действий.
Вопрос:
Разве с обработкой событий об изменении лида могут быть какие-то сложности? Ведь звучит все очень просто
Отвечаем:
В LPTracker - может быть установлен только один URL для обратных вызовов при создании/редактировании лида.

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

Если lptracker получает несколько раз ответ об ошибке обработки запроса или ответ вообще не поступает, то в этом случае отправка данных прекращается на 5 минут. Если через 5 минут ситуация повторяется, то передача событий изменения лида приостанавливается на час. Всё это время все события изменения лида не поступают, а произошедшие события - теряются. Поэтому так важно, чтобы обработчик вебхука правильно реагировал на возникающие ошибки и выполнял операции обработки запросов асинхронно (параллельно).

Кроме того, когда вся логика расположена в одном месте это элементарно удобнее, чем россыпь отдельных файлов.
Вот какие сценарии можно реализовать на базе нашего модуля:
  • По аналогии с автоворонками осуществлять любые действия при соответствующем изменения карточки лида.
    Например, отправить клиенту шаблонное сообщение в WhatsApp или Telegram при выставлении определенного шага воронки: сообщение-визитку или приветственное сообщение для нового клиента.

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

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

    Например, так мы сделали в модуле автоматической генерации коммерческого предложения. Как только карточка лида заполнена всеми необходимыми полями для генерации документа, мы отправляем набор необходимой информации в модуль генерации документа, откуда он грузится в облачное хранилище (S3) и напрямую в карточку лида.
  • Синхронизировать движение лида в CRM с другими системами или рассчитать какие-либо нестандартные метрики.
    Такой сценарий синхронизации движения заявки по воронке мы реализовали в нашем кейсе интеграции сервисов LPTracker и Chat2Desk, а так же в кейсе с сервисом партнерской программы PRMOnline.

    При смене шага воронки у лида в LPTracker мы автоматически прокидываем шаг воронки в виде тега для чата в Chat2Desk. Таким образом, менеджер знает статус заявки по каждому чату, который есть в Chat2Desk не проверяя вручную карточку каждого чата и лида.

    Возможность автоматически передавать данные о шагах воронки и оплатах полезна так же при интеграции систем сквозной аналитики (ROIStat, CallTouch и иных сервисов с аналогичных функционалом).
  • Осуществлять CRM-маркетинг
    Мы реализовали этот сценарий в нашей интеграции LPTracker с бэком мобильного приложения: при изменении шага воронки или некоторых полей мы автоматически отправляем клиенту соответствующее уведомление.

    Так же, мы автоматически можем отправить клиенту в WhatsApp дату и время назначенной консультации или визита курьера либо автоматически отправить автоматически сгенерированное коммерческое предложение.
  • Фильтровать и дублировать события, приходящие на вебхук LPTracker или учитывать события из других систем
    Например, если в дополнительно используемой системе необходимо так же выполнить какое-либо действие при изменении лида в LPTracker.

    Или наоборот, учитывать события из внешних систем для обновления лида. Например, если клиент пишет в корпоративный WhatsApp - с помощью универсального модуля интеграции автоматически создается лид, а переписка подтягивается в карточку лида LPTracker.
  • Генерировать документы со сложными условиями (когда используется большое количество данных из карточки и условий)
    Например, если в ходе консультирования клиента установлены определенные условия, которые нужно отобразить в коммерческом предложении, то Менеджеру достаточно заполнить несколько полей-категорий и при их изменении вебхук автоматически отправит документ на генерацию, загрузит его в карточку и в облачное хранилище и отправит ссылку клиенту. Подробнее можете почитать в описании кейса.
Можно ли сделать еще лучше? Конечно можно, вот вещи над которыми мы работаем:
  • Работаем над очередями, чтобы в случае временной недоступности одного из сервисов, участвующих в обработке событий важные действия не канули в небытие и выполнились когда сервис вновь станет доступен.
    События, при которых целиком становится недоступен сервис происходят достаточно редко (сервисы ложатся примерно на час раз в 2-3 месяца). Но тем не менее это все равно происходит.

    Поэтому мы хотим сделать так, что если становится недоступен LPTracker, все запросы на создание лида будут повторены как только lptracker вновь станет доступен. Или если мы отправляем автоматические сообщения клиентам через Chat2Desk, то в этом случае все они будут отправлены как только сервис снова поднимут.
  • Работаем над веб-интерфейсом управления интеграцией
    с помощью которого вы сами сможете самостоятельно изменить список и условия отслеживаемых событий при редактировании лида и необходимых в случае соответствия этим условиям действий. Например, чтобы была возможность изменить условия отправки сообщений в WhatsApp или их текст.
  • Работаем над системой сбора и отдельного хранения всех возможных идентификаторов клиента, чтобы можно было найти ID лида или номер телефона по любому из имеющихся идентификаторов
    Сейчас эта проблема решается путем формирования из идентификатора адреса электронной почты (например, у нас есть ID клиента в VK: XXXXXX, мы формируем из него электронную почту типа ХХХХХХ@vk.id) и добавляем эту почту в лид в качестве контактных данных.

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