Инструкция по настройке

Интеграция amoCRM с сайтом/Tilda/LPGenerator

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

Установка виджета

Чтобы установить интеграцию, вам необходимо быть авторизованным в аккаунте amoCRM.
- Кликните по кнопке ниже
- Выберите аккаунт, куда необходимо установить интеграцию
- Нажмите кнопку "Разрешить"
7 ДНЕЙ ДЕМО-ПЕРИОД
После этого откроется раздел "Интеграции" в вашем аккаунте amoCRM, и через несколько секунд появится модальное окно установленной интеграции.

Далее вам необходимо будет сделать следующие шаги:
- Ввести номер телефона для тех. поддержки
- Нажать кнопку "Сохранить", чтобы завершить установку интеграции в аккаунт amoCRM

Подключение сайта

Интеграция настраивается в разделе расширенных настроек amoCRM.
Для начала необходимо добавить сайт, который вы будете интегрировать с amoCRM -
нажимаем кнопку "Добавить сайт"
В открывшемся модально окне вводим
- домен сайта (без https)
- вводим описание сайта (необязательно)
- нажимаем кнопку "Добавить"
После этого добавится новая строка в таблице с сайтами.

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

Ниже на этой же вкладке расположены скрипты и инструкции для интеграции сайта.
Есть 3 способа подключения:

1. Скрипт для сайта
Разместите данный скрипт в теге <head> вашего сайта, и он будет "собирать" заявки из всех ваших форм, которые реализованы по веб-стандартам.
Рекомендуем использовать этот способ подключения, когда у вас сайт реализован не на Тильде, вам нужно интегрировать обычные формы связи (где телефон, email, имя) и нет рядом разработчика, который бы мог реализовать интеграцию через backend.
Это самый простой способ подключения, но не самый стабильный, т.к. скрипт подключается только на фронтенде и если на стороне клиента произойдет какая-то проблема в браузере, то заявка может не проброситься.
Интегрировать корзину интернет-магазина этим способом в большинстве случаев не получится.
2. Интеграция с CMS (Tilda, LPGenerator)
Для интеграции с CMS мы подготовили специальный скрипт для вебхука, который вам необходимо будет добавить в личном кабинете системы.

Для Tilda копируем WEBHOOK URL из раздела "Интеграция с Tilda" во вкладке интеграции "Настройки сайта"
Инструкция по подключению вебхука - https://help-ru.tilda.cc/formswebhook
интеграция amocrm с tilda
Для LPGenerator аналогично копируем WEBHOOK URL из раздела "Интеграция с LPGenerator" во вкладке интеграции "Настройки сайта"
Инструкция по подключению вебхука - https://lpgenerator.ru/blog/2018/04/03/webhook-samostoyatelnaya-integraciya-storonnih-servisov/
3. Backend интеграция
В данном разделе размещены вспомогательные скрипты, с помощью которых разработчики сайта могут реализовать проброс данных с сайта на наш сервер.
Данный способ подключения предпочтительнее, чем способ 1, т.к. тут разработчики могут пробрасывать формы любой сложности - корзина интернет-магазина, опросники, калькуляторы и т.д.

После того, как вы подключили сайт любым из перечисленных способов, вам необходимо оставить тестовую заявку, чтобы проверить, записалась ли она в логах интеграции.
Если все настроено корректно, то на вкладке "Лог запросов" вы увидите данные по оставленной заявке.
Для доступа к настройкам необходимо перейти в Расширенные настройки amoCRM. Учетная запись должна обладать правами администратора.

Настройка интеграции

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

  • Создание сделки
  • Создание контакта
  • Создание компании
  • Создание задачи
  • Создание примечания
  • Поиск дублей
  • Поиск открытых сделок
В виджете доступна возможность настроить поиск дублей не только по телефону и email, но и по другим пользовательским полям, созданным в карточке контакта и комапнии.
Функционал поиска открытых сделок стал еще более гибким. Поиск можно настроить по любым полям сделки, включая кастомные, для более точного и удобного использования.
Внутри модалки настроек каждого действия в правой области отображается раздел "Поля запроса" - это данные, которые прилетают с форм сайта и которые можно выбирать для подстановки в сущности или использовать в правилах обработчиков.
Вот пример, как выглядит модальное окно действия "Создание сделки":
Проброс UTM-меток в поля Статистики сделки произойдет автоматически - ничего настраивать не нужно.

Но если есть необходимость записать UTM-метку в какое-либо другое поле сущности, то можно воспользоваться настройкой поля через JSON и указать соотвествующие метки:
{{utm_source}}{{utm_medium}}{{utm_campaign}}{{utm_term}}{{utm_content}}
Запуск Sales-Bot после обработки запроса.

Можно настроить при "Создании сделки", выбрав соответствующий бот.

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

  • Обновление сделки
  • Обновление контакта
  • Обновление компании
Данные действия можно использовать, например, если необходимо обновить данные, при настроенном обработчике "Сделка найдена":
При соответствующей настройке, необходимо выбрать значение полей для обновления, как показана на примере:
А уже внутри настроек этих действий выбираются обработчики, которые должны запуститься при успешном/не успешном поиске данных.

Пример настройки:
ВАЖНО:
Для действий "Поиск дублей контактов" и "Поиск открытых сделок" необходимо настраивать обработчик таким образом, чтобы эти действий были единственными внутри обработчика.

Пример настройки

Рассмотрим настройку интеграции на примере следующей задачи:
Необходимо реализовать алгоритм обработки заявок, когда у заявки заполнены email и телефон:
  1. сначала нужно проверить есть ли дубли контакта в amoCRM по телелефону/email'у
  2. если есть дубль, то проверить наличие открытых сделок у контакта
  3. если открытые сделки есть - создать у сделки задачу для текущего ответственного с временем выполнения 30 минут и текстом "Повторная заявка"
  4. если открытой сделки нету - создать сделку и задачу
  5. если дубля нет - создать контакт, сделку и задачу
Вот так будет выглядеть итоговый набор настроенных обработчиков:
Только 1й обработчик "Поиск дублей" оставляем с включенным флагом "Активен", т.к. в этом обработчике есть действие "Поиск дублей контактов" и это действие запускает другие обработчики - "Поиск открытой сделки" (если найден дубль) и "Контакт не найден" (если дубль не найден).
Напоминаем
Что действие "Поиск дублей контактов" должно быть единственным элементом действия внутри обработчика.
Действие "Поиск открытых сделок" в одноименном обработчике настраивается аналогично.
Указываем, какие обработчики запускать, если сделка найдена/не найдена.
Напоминаем
Что действие "Поиск открытых сделок" должно быть единственным элементом действия внутри обработчика.
Остальные обработчики просто содержать действия создания сущностей. Для примера рассмотрим обработчик, которому дали название "Контакт не найден":
Обработчик не активен, т.к. запускается из действия "Поиск дублей контактов".
И данный обработчик содержит 3 действия: создание контакта, создание сделки и создание задачи.
В результате настроек можем протестировать проброс заявок с сайта и увидим в логах запись, что заявка успешно обработалась, видим ссылки на созданные/найденные сущности и видим какие обработчики и по каким условиям запускались.

Backend интеграция

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

Чтобы отправить заявку на нашу интеграцию, необходимо с вашего сервера отправить следующий запрос:

Method: POST
URL: (ссылку WEBHOOK URL необходимо взять из настроек сайта в интеграции)
Content-Type: application/json
Тело запроса:
{
  "form": [ //передаваемые данные
    {
      "key": String, //имя поля
      "value": String|Number|Object; //значение
    }
  ],
  "clientID": { //метрика
    "gclientid": String, // Google analytics ClientID
    "roistat": String, // Roistat"
    "_ym_uid": String, // Yandex metric ClientID
  },
  "utm": { //UTM-метки
    "utm_source": String|Number,
    "utm_medium": String|Number,
    "utm_content": String|Number,
    "utm_term": String|Number,
    "utm_campaign": String|Number
  },
  "host": String, // домен вашего сайта (my-site.ru) - обязательный параметр
  "token": String// токен безопасности из настроек -обязательный параметр
}
Давайте рассмотрим пример, как можно отправить запрос по данной структуре с помощью PHP
// пример структуры данных, которую необходимо отправить
// обязательно нужно передавать host и token
$leadData = [
    'form' => [
        ['key' => 'phone', 'value' => '79999999999'], // передаем телефон
        ['key' => 'name', 'value' => 'Алексей'], // передаем имя
        // ... аналогично передаем любые данные, где key - название поле, а value - значение
        // пример объекта для создания заказа в МС
        [
            'key' => 'order',
            'value' => [
                "products": [
                    [
                        "name" => "Кроссовки Nike",
                        "quantity" => "2",
                        "amount" => "6400",
                        "externalid" => "Hc4f6gOxnAmdIPSNgcvR", // ID товара в системе МойСклад
                        "price" => "3200"
                    ],
                    [
                        "name" => "Джоггеры Ninja",
                        "quantity" => "1",
                        "amount" => "2990",
                        "externalid" => "kc4f6gOxnAmdd43NgcvR", // ID товара в системе МойСклад
                        "price" => "2990"
                    ]
                ],
                "amount" => "6400",
                "delivery" => "Самовывоз из шоурума",
                "delivery_price" => "500",
                "delivery_address" => "RU: Poasdint: м. Тульская, Духовской переулок, 17с1 (Самовывоз Phenomenal studio)101000, Москва",
                "delivery_comment" => "Позвонить заранее",
            ]
        ]
    ],
    'utm' => [ // передаем UTM-метки
        "utm_source" => "your_site_value",
        "utm_medium" => "your_site_value",
        "utm_content" => "your_site_value",
        "utm_term" => "your_site_value",
        "utm_campaign" => "your_site_value",
    ],
    'clientID' => [ // передаем ID для аналитики
        "gclientid" => "your_site_value", // Google analytics ClientID
        "roistat" => "your_site_value", // Roistat"
        "_ym_uid" => "your_site_value", // Yandex metric ClientID
    ],
    'host' => "yourdomain.ru", // домен вашего сайта (ОБЯЗАТЕЛЬНО)
    'token' => "XXX", // сюда вводите токен из настроек сайта на стороне amoCRM (ОБЯЗАТЕЛЬНО)
];

// отправляем данные на интеграцию
sendToGnzs($leadData)

// функция отправки данных на интеграцию
function sendToGnzs($leadData) {
    $url = 'YOUR_WEBHOOK_URL';
    $headers = ['Content-Type: application/json'];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($leadData));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, '', '');
    $result = curl_exec($ch);
    curl_close($ch); 
}
Если все сделано верно, то в ответ на ваш запрос должен прийти код 200 (без тела ответа).
А на стороне интеграции внутри amoCRM, в разделе "Лог запросов" вы сможете увидеть новую запись с вашим отправленным запросом.
Тех.поддержка Telegram