Интеграции
Как обрабатывать лимиты API при передаче записей в CRM: ошибка 429, Retry-After, очередь, безопасные повторы, приоритеты и контроль задержек синхронизации.

Коротко
Ограничение API не должно приводить к потере записей: операции передачи в CRM сохраняют в устойчивой очереди, отправляют с допустимой скоростью и повторяют по правилам внешнего сервиса. Ответ 429 обычно означает превышение частоты запросов, а не отмену самой брони. Клиентский статус записи и состояние её синхронизации необходимо разделять.
Разбор полезен командам, которые связывают онлайн-запись с CRM, аналитикой или уведомлениями. Здесь рассматривается перегрузка исходящей интеграции: задания известны, но принимающая система временно ограничивает обработку. Это отличается от поиска пропущенных webhook. Приведённые схемы являются требованиями к интеграции, а не описанием готового механизма очередей MySlot.
Главное в статье
Подтверждённая бронь и успешно обновлённая CRM являются разными результатами.
Лимит может действовать на аккаунт, приложение, метод или несколько параметров сразу.
Повторы должны учитывать Retry-After и контракт конкретного API.
Рост очереди оценивают по возрасту заданий и скорости обработки, а не только по количеству ошибок.
Повторная отправка операции требует защиты от дублей и устаревших изменений.
Раздел 01
Стандарт HTTP описывает 429 Too Many Requests как превышение допустимого числа запросов за определённый период. Ответ может содержать Retry-After с указанием ожидания. При этом сам стандарт не задаёт универсальный способ подсчёта или идентификации клиента: реальные ограничения необходимо читать в документации конкретного провайдера.
Нельзя переносить лимит одной CRM на другую или считать его постоянным для всех методов. Например, документация Shopify отдельно различает ограничения по стоимости запросов и по количеству обращений для разных API. Практический вывод для проектирования: параметры скорости и параллельности задаются по контракту интеграции, а не одной произвольной задержкой на весь проект.
Отделяйте ограничение частоты от неверных данных, отсутствия прав и сетевого тайм-аута. Бесконечный повтор некорректного запроса не исправит обязательное поле. А тайм-аут после отправки не доказывает, что операция не выполнена: прежде чем создавать новый объект, нужен предусмотренный контрактом способ проверить результат или безопасно повторить исходное действие.
Раздел 02
Сначала определите систему, которая подтверждает бронь. Если это сервис записи, временное ограничение CRM не должно освобождать занятый слот или показывать клиенту ошибку повторного оформления. Карточка может оставаться подтверждённой, а синхронизация иметь отдельное состояние: ожидает, повторяется, завершена или требует вмешательства.
Задание нужно сохранять надёжно вместе с изменением исходных данных либо через эквивалентную проверяемую схему. Иначе возможен промежуток: бронь уже записана, а процесс завершился до создания задания. Часто для этого применяют транзакционный журнал исходящих событий: отдельный обработчик читает сохранённые операции и отмечает результат передачи.
Минимальная карточка задания включает идентификатор брони, тип операции, версию исходных данных, адресата, число попыток, время следующего запуска и результат последней попытки. Для внешнего объекта хранится устойчивое соответствие идентификаторов. Секреты доступа и лишние персональные данные не должны попадать в диагностические сообщения.
При нескольких обработчиках задание должно переходить в работу управляемо: с блокировкой или арендой и восстановлением после сбоя. Повторная обработка всё равно возможна, поэтому очередь сама по себе не гарантирует отсутствие дублей. Для каждой изменяющей операции нужна отдельная стратегия идемпотентности, то есть безопасного повторения одного действия.
Раздел 03
| Ответ | Основное действие | Чего избегать |
|---|---|---|
| Ограничение частоты | Отложить отправку по правилам API | Немедленных повторов всеми обработчиками одновременно. |
| Неверные данные | Передать причину на исправление | Бесконечного повтора без изменения запроса. |
| Проблема доступа | Проверить авторизацию и права | Повторной отправки секретов в открытые журналы. |
| Неопределённый результат | Сверить выполнение или повторить идемпотентно | Создания второго заказа с новым идентификатором операции. |
Раздел 04
При наличии Retry-After соблюдайте указанное ожидание. Заголовок может содержать число секунд или HTTP-дату; обработчик должен понимать поддерживаемый провайдером формат. Если заголовка нет, применяйте документированную стратегию повторов, например увеличение интервалов с небольшой случайной добавкой, чтобы несколько процессов не возобновляли поток одновременно.
Ожидание относится к области ограничения, а не только к одному сообщению. Если квота общая для аккаунта, остальные обработчики не должны продолжать нагружать его прежним темпом. Разделите ограничения скорости и числа одновременных запросов, согласуйте их между исполнителями и учитывайте обращения других интеграций к тому же аккаунту.
Приоритеты определяются последствиями задержки. Изменение ближайшего визита может быть срочнее ночной выгрузки отчётов, но старые задания не должны оставаться без обработки навсегда. Кроме того, приоритет не разрешает нарушать зависимость: обновление внешней карточки нельзя выполнить раньше её создания, если API требует существующий объект.
Документация Microsoft Graph рекомендует использовать Retry-After, а при его отсутствии для соответствующих сценариев описывает экспоненциальное ожидание. Это пример подхода конкретного сервиса. Для CRM и платёжных API условия повторов, допустимые операции и предельные сроки нужно проверить отдельно.
Раздел 05
Возраст очереди
Измеряйте ожидание самого старого задания и распределение задержек. Небольшая очередь из зависших операций может быть опаснее большого потока, который быстро обрабатывается.
Баланс поступления и обработки
Сравнивайте скорость появления заданий с фактической пропускной способностью. Если входящий поток постоянно выше, повторы не решат проблему: нужно уменьшать запросы или пересматривать доступную квоту.
Ошибки по причинам
Разделяйте ограничение частоты, авторизацию, неверные данные и неопределённый результат. Общий счётчик красных ответов не показывает, кому и что исправлять.
Повторные побочные действия
Контролируйте дубли контактов, задач и уведомлений. Однократное обновление карточки не означает, что связанный сценарий не отправил клиенту несколько сообщений.
Операции на разборе
После установленного числа попыток или срока ожидания назначайте ответственного. Задание должно оставаться доступным для расследования и управляемого перезапуска, а не исчезать из статистики.
Раздел 06
Уточнить контракт
Зафиксируйте области квот, заголовки ожидания, особенности методов и способы проверки результата. Отдельно подтвердите поддержку ключей идемпотентности или альтернативной защиты от дублей.
Смоделировать ограничение
На тестовом контуре верните серию ответов 429. Проверьте, что очередь сохраняется после перезапуска, а брони не отменяются из-за временной недоступности CRM.
Проверить изменение во время ожидания
Перенесите или отмените бронь, пока прежнее обновление стоит в очереди. Устаревшая операция не должна восстановить уже отменённый визит; порядок или сверка версий должны обеспечивать актуальный результат.
Проверить неопределённый ответ
Смоделируйте выполнение операции с потерей ответа. Повторный запуск не должен создать вторую карточку, списание или уведомление.
Отработать восстановление
После снятия ограничения убедитесь, что очередь постепенно сокращается, текущие записи не голодают, а спорные операции видны ответственному. Не выпускайте весь накопленный объём одним всплеском.
Раздел 07
Поможет ли добавить больше обработчиков? Только если узкое место находится внутри интеграции. При общей внешней квоте увеличение параллельности может лишь ускорить её исчерпание. Сначала измерьте разрешённую и фактическую скорость.
Можно ли объединять несколько обновлений одной брони? Иногда можно передавать последнее состояние вместо промежуточных снимков. Но финансовые операции, история событий и зависимые действия не должны исчезать при таком объединении. Правило определяется смыслом операции, а не удобством очереди.
Нужно ли показывать клиенту ошибку CRM? Не обязательно, если бронь уже надёжно подтверждена в основной системе. Сотрудник видит задержку синхронизации, а клиент получает правдивый статус своего заказа. Если внешняя операция обязательна для подтверждения, интерфейс должен явно сохранять промежуточное состояние.
Важно
Попросите интегратора показать не только успешную передачу записи, но и восстановление после ограничения: сохранённое задание, паузу, повтор, отсутствие дубля и контроль устаревшей версии. Именно этот путь определяет надёжность в часы пик.
Вывод
Устойчивая интеграция управляет нагрузкой и сохраняет смысл операций при задержках. Очередь, ограничение скорости, безопасные повторы и наблюдаемость работают вместе; ни один из этих элементов не заменяет остальные.
Обсуждая интеграцию MySlot с CRM через API, согласуйте источник истины, квоты принимающей системы и сценарии восстановления. Конкретные лимиты, гарантии доставки и способы защиты от дублей должны быть подтверждены документацией и тестами выбранного решения.
Демо
Покажем демо MySlot и разберём ваш процесс: услуги, расписание, ресурсы, CRM, оплаты и уведомления.
MySlot
MySlot подойдёт, если вам нужно:
Похожие статьи
Интеграции
Пропущенные webhook: как восстановить записи в CRM без дублей
Как восстановить пропущенные webhook онлайн-записи: журнал обработки, сверка с источником, устаревшие события, защита от дублей и контроль результата в CRM.
ЧитатьИнтеграции
Дубли онлайн-записи: как защитить бронь при повторном запросе
Как защитить онлайн-запись от повторных запросов: ключ операции, потерянный ответ, контроль параметров, CRM, оплата и тесты интеграции без дублей.
ЧитатьИнтеграции
Webhook и API онлайн-записи: как автоматизировать CRM, сайт и внутренние системы
Как использовать webhook и API онлайн-записи: события бронирования, статусы, оплаты, CRM, сайт, BI-отчёты, повторная отправка и контроль ошибок.
ЧитатьЗапуск
MySlot поможет принимать записи, управлять расписанием, ресурсами, оплатами и передавать данные в CRM.