Коннектор опроса

Сделки amoCRM — вебхуками, которые не теряются

Вебхуки amoCRM уходят без подписи и без повторов: отличить их от чужого запроса нечем, а пропущенное изменение восстановить нельзя. HookPilot опрашивает API сам, держит курсор по updated_at и отдаёт изменения в ваш бэкенд как обычные подписанные вебхуки с восемью попытками доставки.

Без карты можно проверить отправку через API в один эндпоинт. Для источника или подключения и получателя — Starter от 2 900 ₽/мес.

Как подключить

Одно подключение опрашивает одну сущность. Сделки и контакты заводятся отдельными подключениями.

  1. 1

    Заведите в amoCRM интеграцию и получите долгосрочный токен доступа: Настройки → Интеграции → ваша интеграция → Ключи и доступы.

  2. 2

    Создайте в HookPilot подключение с коннектором «Опрос HTTP API (JSON)» и адресом https://ваш-аккаунт.amocrm.ru/api/v4/leads?order[updated_at]=asc

  3. 3

    Добавьте заголовок авторизации Authorization со значением Bearer и вашим токеном. Заголовок хранится зашифрованным и обратно не показывается.

  4. 4

    Заполните пути: список лежит в _embedded.leads, идентификатор в id. Курсор: имя параметра filter[updated_at][from], значение из поля элемента updated_at. Задайте тип события lead.updated и подпишите эндпоинты.

Как устроен опрос

Курсор по updated_at

amoCRM отдаёт время изменения меткой Unix, и фильтр принимает ровно её. Курсор переставляется на updated_at последнего доставленного элемента, поэтому обрыв на середине батча не теряет остаток.

Пустой ответ без тела

Когда под фильтр ничего не попало, amoCRM отвечает кодом 204 без тела. Для опроса это штатная ситуация: подключение остаётся рабочим, курсор не двигается, событий не создаётся.

Сортировка обязательна

Параметр order[updated_at]=asc нужен, чтобы курсор шёл по возрастанию. С сортировкой по убыванию курсор сразу прыгнет на самое свежее изменение и перешагнёт всё, что было до него.

Токен под шифрованием

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

Событие не пришло

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

Подключение в ошибке с кодом 401

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

Событий нет, хотя сделки меняются

Проверьте путь до списка: у amoCRM он вложенный, _embedded.leads, а не leads. Если путь не совпал со структурой ответа, список считается пустым и ошибки при этом не возникает.

Приходят одни и те же сделки

Курсор не настроен или указан не на то поле. Имя параметра должно быть filter[updated_at][from], а значение браться из поля элемента updated_at, иначе каждый опрос начинается с нуля.

Частые вопросы

Остальное в базе знаний или в поддержке.

База знаний
Почему не использовать вебхуки самой amoCRM?

Они приходят без подписи, поэтому отличить их от подделки нечем, и уходят однократно: если ваш сервер ответил ошибкой, изменение потеряно. Здесь событие сначала сохраняется, а дальше доставляется с повторами и подписью X-HookPilot-Signature, которую можно проверить.

Как часто можно опрашивать?

Расписание задаётся от минуты до суток, по умолчанию раз в пять минут. amoCRM ограничивает частоту запросов к API, поэтому минутный интервал имеет смысл только при действительно плотном потоке изменений.

Придут ли изменения, сделанные роботом или импортом?

Да. Опрос смотрит на поле updated_at, а не на источник правки, поэтому массовый импорт тоже станет потоком событий. На времени импорта имеет смысл временно увеличить интервал опроса.

Другие интеграции

Платёжные системы, маркетплейсы и любая система с подписанными вебхуками или HTTP API.