Как подружить Linkedin с вашей CRM

November 25, 2020

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

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

Проблема #1. Сделать CRM единым централизованым местом хранения всех контактов.

Если вы занимаетесь cold outreach, собираете контакты в Linkedin, складываете их в бесчисленное кол-во разных таблиц и вкладок, потом отправляете им сообщения, кому-то на почту, кому-то в Linkedin Messenger. Через время, кол-во таких табличек уже невозможно менеджить адекватно, и вы уже не понимаете, с кем, когда и в каком канале вы контактировали, какая по каждому из этих контактов была реакция, и какой их текущий статус.

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

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

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

Чаще всего для создания такой базы выбирают CRM. Важно отметить, что в таком случае, вся работа с базой происходит на уровне контактов, без создания сделок, и добавления их в pipeline. Соответственно вся фильтрация происходит по полям сущности "Контакт".

Процесс работы по такому флоу выглядит примерно следующим образом:

  1. С помощью фильтров в Linkedin сделали выборку контактов, которые соответствуют вашему ICP
  2. Спарсили результаты этой выборки в CSV файл. Для сбора результатов выдачи в таблицу можно использовать любой софт, к которому вы привыкли. Я не так давно, для этих целей, перешел с Phantombuster на TexAu, так как он более функционален и удобен, но этому наверное стоит посвятить отдельную статью. Для сбора результатов поиска обычного линкедин подходит - https://www.texau.com/automation/extract-profiles-from-linkedin-search, а для сбора результатов поиска Linkedin Sales Navigator нужно использовать https://www.texau.com/automation/scrape-linkedin-sales-navigator-leads-search-result, соответственно.
  3. Далее обязательно делаем качественную чистку всех контактов и переменных в полученной таблице. Подробнее о том как это делать, и почему это критически важно, будет детально рассмотрено ниже.
  4. Как только у нас есть финальная версия очищенной таблицы с подготовленными данными, мы сохраняем ее в формате CSV и делаем импорт этого файла в CRM систему. Очень важно на этом этапе настроить в CRM корректные правила работы с дубликатами. По умолчанию, все CRM системы идентифицируют дубликаты по полю email. Чаще всего, мы можем не найти email адрес по  по достаточно большому кол-ву контактов, поэтому я обычно нахожу и объединяю дубликаты по полю Linkedin URL. В таких CRM, как Pipedrive, Zoho такую возможность можно активировать, просто обратившись в поддержку. В результате, если у нас в каком-то очередном сборе появился человек, с которым мы уже ранее контактировали, его данные будут обновлены с уже существующим контактом, и в процессе последующей фильтрации в СRM мы его исключим из предстоящей рассылки.
  5. После того как файл успешно импортирован, следующая задача сделать экспорт всех загруженных контактов из CRM обратно в таблицу, но при этом, исключив те контакты, которые не должны попасть в нашу следующую рассылку. Вы можете исключать любые контакты, в соответствии с вашими задачами, но вот несколько сегментов, которые я рекомендую исключать всегда:
  • Контакты, с которыми мы уже вели коммуникацию менее чем X (дней/месяцев) назад.
  • Контакты, которые отписались от нашей рассылки или попросили больше не писать им. Такие контакты будут имееть статус "true" в поле unsubscribied.
  • Контакты, которые уже находятся в нашем Sales Pipeline, и по ним уже идет общение с представителем компании. Согласитесь, неприятно в таком случае отправить шаблонное холодное сообщение.

В результате такого экспорта, мы имеем CSV файл, с теми контактами, которые дальше можно добавлять в Linkedin (или Email) outreach инструмент.

Проблема #2. Все данные в Linkedin профилях хранятся в неподготовленном для системной работы виде.

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

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

Рассмотрим эти задачи подробнее:

Задача #1.

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

Например:

  • в поле First name значение "Michael J."
  • в поле Job Title - "Chief Executive Officer, Board member & AI Enthusiast"
  • в поле Company name - "Delvision GmbH"

Представьте, как будет выглядеть ваше "личное" сообщение с такими переменными?

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

Ниже основные примеры, на которые нужно всегда обращать внимание:

Задача #2.

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

К примеру, мы хотим сделать в нашей CRM сегмент CTO из Norway, из индустрии Healthcare, в определенном размере компании. А Linkedin нам отдал данные в виде Founder & ChiefTechOffcer, Oslo, Health Wellness and Fitness.

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

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

Проблема #3. Автоматическое обновление событий из Linkdein  в CRM

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

Например, вы хотите сделать выборку лидов по определенному ICP, которым вы уже отправили инвайт, но они его не приняли или выборку тех, кто уже законектился с вами в Linkedin, но еще не ответил, или тех кто ответил, но не стал MQL лидом. Вариантов может быть масса.

Для того, чтобы такую выборку реализовать, вам нужно иметь актуальную информацию, как минимум по трем полям в вашей CRM:

  • Linkedin Contacted (True/False)
  • Linkedin Connected (True/False)
  • Linkedin Replied (True/False)

Безусловно, обновлять все эти поля вручную, при каждом новом событии, практически не представляется возможным, даже при очень маленьком объеме контактов.

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

Я уже более 10 месяцев рекомендую всем и сам использую для этих целей Expandi.io

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

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

Expandi позволяет настроить автоматическую отправку вебхука по таким событиям:

Я чаще всего использую три основных:

  • Отправка инвайта
  • Принятый коннекшин реквест
  • Ответ лида на наше сообщение

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

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

Итак:

  1. регистрируемся в Integromat,
  2. переходим в раздел сценарии и выбираем "Создать новый сценарий",
  3. далее выбираем, какие сервисы понадобяться нам для интеграции. На этом этапе необходимо выбрать Webhook и вашу CRM

  1. Переходим далее, выбираем Custom webhook, и нажимаем "Добавить", вводим имя нашего вебхука, и получаем URL, на который нам нужно отправить этот вубхук.

  1. копируем этот URL из Integromat
  2. переходим в аккаунт Expandi (если вы его еще не используете, то сначала создайте аккаунт).
  3. Там в разделе меню Web Hooks, создаем новый Webhook, выбираем событие Connection Request Sent и вставляем полученный ранее URL

  1. и после создания Webhook, нажимаем кнопочку Test, для получения тестовой модели данных в Интегромате.
  2. Далее нажимаем "+" возле Webhook и выбираем второй модуль для интеграции, в моем примере - это Pipedrive → Update a person и  авторизуемся в pipedrive через integromat (add a connection)
  3. Далее идет один из самых важных моментов во всей интеграции, это указать по какому полю мы должны найти контакт в pipedrive, чтобы обновить в нем информацию.

Самый предпочтительный и надежный вариант делать это по полю Person ID для Pipedrive или Contact ID для Hubspot.

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

  • В момент экспорта базы из CRM, выгрузить в CSV поле Person ID или Contact ID
  • На этапе импорта этого CSV файла в Expandi, сделать меппинг полей, и присвоить полю Person ID значение dynamic placeholder

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

  1. Далее в разделе Placeholders выбираем поле Person ID, и выбираем что нам, в рамках этого сценария, необходимо обновить для этого контакта поле Linkedin Contacted значением True.

  1. Далее, в левом нижнем углу, переводим  опцию scheduling в значение ON, и выбираем запустить immediately.

Вуаля, теперь каждый отправленный инвайт будет обновлять у контакта поле Linkedin Contacted автоматически.

По полной аналогии создаем еще два сценария на события:

  • Контакт принял наш конекшин реквест
  • Контакт ответил на наше сообщение

Также, полностью аналогично, вы можете реализовать интеграцию с HubSpot CRM и ZohoCRM, самое главное не забывайте перед загрузкой в Expandi экспортировать из CRM ID контакта, чтобы потом можно было обновить поле правильному контакту.

Если ваш сценарий выдал ошибку, и остановился, то с большой долей вероятности произошло событие с контактом, по которому отсутствует поле Person ID. Такое может быть с теми контактами, с которыми вы общались в Linkedin, и не импортировали в Expandi. Чтобы избежать остановки сценария из-за таких ошибок, достаточно установить такой фильтр

Теперь давайте рассмотрим ситуацию, в которой по каким-то причинам у вас в Expandi нет поля с ID контакта. Из таких ситуаций тоже можно выйти, ниже я покажу как это сделать на примере интеграции с Hubspot CRM.

Этап создания вебхука аналогичен, и ничем не отличается. На втором этапе, после авторизации в Hubspot мы выбираем модуль Search for CRM Objects, в нем выбираем Object Type to Search - Contacts, и в Output Properties указываем что мы хотим в результате получить contact ID.

Далее указываем, что необходимо фильтровать по Properties, и в настройках фильтра выбираем поиск по полю, в котором у вас записано значение Linkedin профайл URL - в моем случае это поле называется Linkedin profile, и выбираем из данных которые пришли в вебхуке, поиск по значению contact: profile_link.

В результате этого этапа мы имеем значение Contact ID для контакта, который нам надо обновить. И выбираем третьим этапом функцию Update a record, в которой уже указываем полученный Contact ID

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

Integromat невероятно гибкий по возможностям инструмент, гораздо функциональнее своего аналога Zapier, по факту, я с его помощью автоматизировал множество процессов внутри компании, это можно сказать полноценный zero-code инструмент для работы с бекендом и любым API.

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

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

Последние публикации

Все статьи