WhatsApp webhook может доставляться повторно, и это нормально для многих API. Проблема начинается, когда система каждый повтор считает новым событием.
В CRM могут появляться дубли сообщений, заявки создаются дважды, клиент получает повторный ответ, а менеджер видит хаос в диалоге.
Коротко: нужно хранить идентификаторы событий и обрабатывать webhook идемпотентно.Почему возникает проблема
Провайдер может повторить webhook, если сервер долго отвечает, вернул ошибку или связь оборвалась. Также разные типы событий могут относиться к одному сообщению.
Что проверить сначала
- есть ли уникальный id события или сообщения
- какой HTTP-ответ возвращает endpoint
- как быстро сервер отвечает на webhook
- не запускает ли очередь повторную обработку
- разделены ли message и status events
Как я решаю такую задачу
Я делаю webhook-обработчик устойчивым к повторам: быстро принять событие, записать id и обработать один раз.
- логирую входящие webhook-события
- выделяю уникальный ключ события
- добавляю таблицу или кеш обработанных id
- убираю повторное создание заявок
- тестирую retry и таймауты
Что подготовить для оценки
- ссылку на страницу, панель или систему
- что именно должно происходить в норме
- пример ошибки или скриншот
- когда проблема появилась
- тестовый доступ без лишних прав, если он нужен
Каким должен быть результат
Повторный webhook не должен создавать повторную заявку, повторный ответ или лишнее действие в CRM.
Чего лучше не делать
Не отключайте webhook целиком из-за дублей. Правильнее сделать обработку устойчивой к повторной доставке.
FAQ
Можно ли исправить без полной переделки?
Чаще всего да. Я сначала ищу точную причину сбоя и предлагаю минимальную правку, которая не ломает рабочую часть проекта.
Что нужно прислать для оценки?
Нужны ссылка или описание системы, пример ошибки, время появления проблемы и доступ к той части, где можно безопасно проверить причину.
Как понять, что задача решена?
Должен быть повторяемый тест: до правки ошибка воспроизводится, после правки сценарий проходит стабильно и результат можно проверить без догадок.
Нужна похожая задача?
Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Пришлите ссылку, пример ошибки и коротко опишите, как должно работать. Я посмотрю задачу, предложу план и скажу, какие доступы понадобятся.
Итог
WhatsApp webhook нужно проектировать с учетом повторной доставки, иначе дубли неизбежны.