Интеграции
Как восстановить пропущенные webhook онлайн-записи: журнал обработки, сверка с источником, устаревшие события, защита от дублей и контроль результата в CRM.

Коротко
Для восстановления пропущенных событий онлайн-записи нужны журнал обработки и сверка с источником актуальных данных. Повторная доставка webhook помогает вернуть сообщение, но не доказывает, что CRM уже получила правильный результат. Цель восстановления — согласованное состояние брони без повторных оплат, сообщений и других побочных действий.
Материал полезен командам, которые связывают календарь, CRM и внешние сервисы. Он не повторяет общий обзор API: здесь разобран период после сбоя, когда часть событий потеряна, часть обработана и некоторые пришли с задержкой. Это требования к интеграции, а не описание гарантированных возможностей API MySlot.
Главное в статье
Успешная доставка сообщения и успешное обновление записи являются разными результатами.
Сроки повторов и доступность истории нужно выяснять у каждого поставщика отдельно.
Запоздалое событие не должно перезаписывать более новое состояние брони.
Восстановление состояния CRM не означает повтор всех клиентских коммуникаций.
Завершение сверки подтверждается отсутствием необъяснённых расхождений, а не пустой очередью.
Раздел 01
Рассмотрим учебный сценарий: клиент перенёс визит, календарь сохранил новую дату, но CRM продолжает показывать старую. Причиной может быть недоставка события, ошибка обработчика после приёма или отказ самой CRM. Повторять всё с самого начала без диагностики опасно: часть действий уже могла завершиться.
Разделите путь на этапы: событие создано источником, принято интеграцией, сохранено для обработки, применено к целевой записи и проверено. Для каждого этапа нужен наблюдаемый результат. Код успешного ответа внешнему сервису не следует использовать как доказательство, что все последующие действия закончились.
Зафиксируйте границы инцидента: какие объекты, типы событий и интервалы времени затронуты. Если неисправна только синхронизация контактов, не запускайте массовое восстановление платежей и расписания. Чем точнее область проверки, тем меньше риск повторно выполнить незатронутые действия.
Раздел 02
Stripe описывает повторную доставку, возможные дубли и отсутствие гарантии порядка событий. GitHub, напротив, прямо указывает, что не повторяет неуспешные доставки автоматически, и предлагает ручное либо программное восстановление. Эти примеры показывают, почему свойства одного сервиса нельзя переносить на другой.
Для своей интеграции выясните срок хранения истории, идентификаторы событий, возможность запросить актуальный объект, ограничения API и механизм повторного запроса. Не стройте регламент на предположении «сервис когда-нибудь пришлёт ещё раз». Если история недоступна, потребуется другой способ сверить известные записи и обнаружить пропуски.
В документации Stripe отдельно отмечено, что время создания не следует использовать как универсальный порядок событий или способ отличить дубль. Для проектируемого календаря вывод такой: стратегию определения свежести состояния нужно выбирать по контракту источника. Это может быть версия объекта либо получение актуального состояния, но не произвольная сортировка всех сообщений по времени поступления.
Раздел 03
Журнал нужен для ответа на конкретный вопрос: какое изменение применено к какой записи и с каким результатом. Это не повод бессрочно копировать все клиентские данные.
Идентификаторы источника
Поставщик, событие и связанный объект. Идентификатор попытки доставки не обязательно совпадает с идентификатором самого события.
Версия и контекст
Тип сообщения, поддерживаемая версия схемы и доступная информация о свежести объекта. Эти данные нужны, чтобы не применять старый формат как новый.
Состояние обработки
Принято, ожидает, обрабатывается, применено либо требует разбора. Разделяйте технический приём и завершение бизнес-действия.
Целевой результат
Идентификатор записи в CRM и подтверждённое состояние после изменения. Один текст «успех» без связи с объектом затрудняет проверку.
Ошибка и следующий шаг
Причина, число попыток и ответственный за нерешённый случай. Бесконечные повторы без видимого результата не являются восстановлением.
Раздел 04
| Ситуация | Что проверить | Допустимое действие |
|---|---|---|
| Сообщение не дошло | Есть ли оно в истории источника | Запросить повтор или включить объект в сверку. |
| Приём был, обработка упала | Какой этап уже завершён | Продолжить незавершённый этап с защитой от повторов. |
| Событие устарело | Актуальное состояние или версию | Не возвращать целевой объект к старым условиям. |
| Данные расходятся | Кто управляет спорным полем | Применить правило владельца данных или передать на разбор. |
Раздел 05
Определите владельца каждого поля. Например, календарь может управлять датой визита, а CRM — заметкой менеджера. Восстановление не должно копировать объект целиком поверх всех полей: так можно удалить более свежую работу сотрудника, которая не относится к произошедшему сбою.
Разделите обновление текущего состояния и выполнение действий. Возврат правильной даты в CRM не требует снова отправлять старое приглашение, создавать ещё одну задачу или инициировать платёж. Для каждого эффекта нужен собственный способ установить, выполнялся ли он и следует ли его выполнять сейчас.
Если источник позволяет получать изменённые объекты, проходите выбранный диапазон с сохранением контрольной точки и обработкой всех страниц ответа. Учитывайте изменения, которые происходят во время сверки: используйте поддерживаемые источником границы или перекрывающийся повторный проход с защитой от дублей. Конкретная схема зависит от доступного API.
Удалённые и отменённые записи требуют отдельного внимания. Они могут отсутствовать в обычной выборке активных визитов, поэтому сверка только существующих активных объектов не найдёт все расхождения. Уточните наличие истории отмен, отметок удаления или способа проверить ранее известные идентификаторы.
Раздел 06
Зафиксируйте область проверки
Определите начало и конец проблемного периода, затронутые объекты и каналы. Не удаляйте журнал ошибок после восстановления соединения.
Сначала получите список расхождений
Сравните данные без изменений и разделите случаи: отсутствует запись, неверная дата, лишняя активность, конфликт полей. Для каждого должен быть объяснимый способ исправления.
Проверьте небольшую выборку
Начните с нескольких тестовых или безопасно согласованных объектов. Убедитесь, что исправление не запускает повторные сообщения и не затирает данные другого владельца.
Обработайте оставшиеся объекты
Соблюдайте ограничения источника и сохраняйте прогресс. Неразрешимые случаи выделяйте в отдельную очередь, а не считайте успешно завершёнными.
Повторите контрольную сверку
Проверьте новые изменения и остаточные расхождения. Закрывайте инцидент после объяснимого результата по объектам, а не сразу после получения успешного ответа сервера.
Раздел 07
Смоделируйте потерянное сообщение, повтор одного события и запоздалое изменение даты после уже выполненной отмены. Затем остановите обработчик после сохранения части результата и запустите снова. Приёмочный тест должен показать конечную бронь и целевую запись, а не только зелёную отметку доставки.
Измеряйте возраст необработанных событий, число расхождений, время восстановления и количество случаев, переданных сотруднику. Пустая очередь не доказывает согласованность: часть событий могла вообще не попасть в неё. Отдельная сверка обнаруживает ошибки, которые невозможно увидеть только по журналу доставленных сообщений.
При обсуждении MySlot запросите контракт событий и способы получить актуальное состояние брони, список изменений и историю отмен. Уточните, какие данные доступны для восстановления и как ведут себя повторные запросы. Если нужных методов нет, объём автоматической сверки ограничен; это следует зафиксировать до запуска, а не компенсировать обещаниями полного восстановления.
Важно
Проверьте сценарий «перенос, затем отмена, затем позднее сообщение о переносе». После восстановления CRM не должна снова показывать действующий визит, а клиент не должен получить новое подтверждение отменённой записи.
Вывод
Надёжное восстановление интеграции возвращает согласованное состояние, а не просто повторяет старые сообщения. Для этого нужны журнал этапов, владельцы полей и отдельный контроль побочных действий.
Обсудите доступность истории и сверки до подключения API. Затем проверьте пропуски, повторы и устаревшие события на конкретных бронированиях: именно такие тесты показывают, сможет ли команда восстановить процесс после реального сбоя.
Демо
Покажем демо MySlot и разберём ваш процесс: услуги, расписание, ресурсы, CRM, оплаты и уведомления.
MySlot
MySlot подойдёт, если вам нужно:
Похожие статьи
Интеграции
Webhook и API онлайн-записи: как автоматизировать CRM, сайт и внутренние системы
Как использовать webhook и API онлайн-записи: события бронирования, статусы, оплаты, CRM, сайт, BI-отчёты, повторная отправка и контроль ошибок.
ЧитатьИнтеграции
Дубли онлайн-записи: как защитить бронь при повторном запросе
Как защитить онлайн-запись от повторных запросов: ключ операции, потерянный ответ, контроль параметров, CRM, оплата и тесты интеграции без дублей.
ЧитатьАвтоматизация
Журнал изменений онлайн-записи: аудит действий, статусы и CRM
Как вести журнал изменений онлайн-записи: автор действия, время, старое и новое значение, оплаты, переносы, права доступа, расследования и CRM.
ЧитатьЗапуск
MySlot поможет принимать записи, управлять расписанием, ресурсами, оплатами и передавать данные в CRM.