#Когда возникает проблема и к чему относится
Проверяем подписку update_lead, доставку уведомления и обработку новых значений полей на стороне принимающей системы. Для администратора amoCRM и разработчика интеграции: вебхук сообщает о событии, но не обязан содержать полную историю всех полей. При необходимости актуальные значения получают отдельно через API с авторизацией OAuth.
#Как отличить основные причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет подписки на изменениеВ настройках интеграции могло остаться событие создания вместо обновления. | Отсутствует полученное событие даже в тесте | Проверить update_lead и состояние подписки |
| Вебхук доставлен, но не обработанАдрес приёмника, защита и логика разбора данных контролируются сторонней системой. | HTTP-ответ сервера с ошибкой либо запись в журнале без изменения базы | Проверить обработчик, подпись и очередь |
| Поле не включено в обработкуОбработчик мог ожидать старое поле, имя или формат значения. | Событие приходит, другие поля синхронизируются | Проверить сопоставление идентификатора поля |
#Пошаговая диагностика и решение
- Зафиксируйте одно воспроизводимое изменениеОткройте тестовую сделку в разделе «Сделки», запишите её ID, текущее значение проблемного пользовательского поля и время по часовому поясу аккаунта. Измените только это поле на тестовое значение, дождитесь сохранения и обновите карточку; если значение осталось прежним уже в amoCRM, вебхук здесь ни при чём, сначала проверьте право редактирования.
- Отделите отсутствие события от отсутствия данныхПопросите администратора интеграции открыть журнал входящих запросов на сервере-получателе и найти запись по времени и ID тестовой сделки. Проверяйте не содержание чужих сделок, а факт POST-запроса, код HTTP-ответа и время. Если запроса нет, исследуйте подписку и доступность адреса; если был, переходите к обработчику.
- Сверьте зарегистрированные события вебхукаАдминистратор либо разработчик с разрешённым доступом проверяет список подписок интеграции: для изменения сделки требуется событие update_lead, а не add_lead или status_lead. Официальный интерфейс API для просмотра — GET /api/v4/webhooks с действующим OAuth; не запускайте пример с чужими токенами и не показывайте заголовки авторизации в отчёте.
- Проверьте механизм цифровой воронки отдельноЕсли уведомление было настроено не API-подпиской интеграции, а действием в цифровой воронке, откройте «Сделки» → настройку нужной воронки и проверьте, в каком этапе стоит действие «API: отправить webhook». Оно запускается при предусмотренных событиях этапа, а не при любом произвольном изменении поля; для универсального update_lead рассмотрите подходящую интеграционную подписку.
- Проверьте приёмник без доступа к секретамИнтегратор открывает журнал веб-сервера и приложения на своей стороне: ищет 404/403, ошибки проверки подписи, тайм-ауты, сбои очереди и неверный адрес destination. Если сервер возвращает 200, но ничего не меняет, сопоставьте ID сделки и пользовательского поля с ожидаемой схемой. Не отправляйте токен или персональные данные на общедоступный проверочный адрес.
- Получите фактическое значение поля безопасноЕсли вебхук только сигнализирует об изменении, получатель должен по ID сделки запросить свежую карточку через документированный API и прочитать custom_fields_values. Разработчик проверяет этот запрос в тестовой среде с минимальными правами. Если значение отсутствует, выясните, не изменено ли поле контакта вместо сделки и не отфильтрован ли нужный тип.
- Повторите проверку и зафиксируйте исправлениеПосле исправления одной настройки дважды измените только тестовое поле и проверьте, что оба события видны в журнале, обработаны без дублей и нужное значение появилось в целевой системе. Верните временно отключённые проверки безопасности и удалите отладочные записи с чувствительными данными по правилам хранения.
#Как убедиться, что проблема решена
Две последовательные правки тестового поля должны доходить до приёмника; целевое значение совпадает с карточкой amoCRM, остальные поля не искажаются.
#Если исправление не помогло
Если webhook отсутствует, передайте интегратору время и ID подписки; при ошибке после приёма приложите обезличенный HTTP-код и фрагмент журнала без ключей.