Сначала сохраните заявку у себя
Если отправлять лид в CRM прямо из формы и не сохранять его локально, временный сбой API превращается в потерянную заявку. Надёжная схема: форма → локальная запись → очередь отправки → CRM.
Какие поля нужны интеграции
| Поле | Зачем |
|---|---|
| internal_id | идентификатор заявки на сайте |
| external_id | связь с объектом CRM |
| created_at | время создания |
| source/utm | источник лида |
| status | queued/sent/error |
| attempts | число повторов |
| last_error | краткая причина сбоя |
| crm_id | идентификатор созданного лида/сделки |
Пример передачи JSON в CRM
$payload = [
'external_id' => 'site-lead-12345',
'name' => 'Иван',
'phone' => '+79990000000',
'source' => 'website',
];
$result = apiJsonRequest(
'POST',
'https://crm.example/api/leads',
['Authorization: Bearer ' . getenv('CRM_TOKEN')],
$payload
);
if ($result['status'] >= 200 && $result['status'] < 300) {
// сохранить crm_id и status=sent
} else {
// status=error, увеличить attempts, повторить позже
}Как не создавать дублей
Используйте устойчивый ключ: internal_id/external_id, а не только телефон. Повтор запроса после timeout не должен создавать второй лид. Если CRM не поддерживает идемпотентность, перед созданием делайте поиск по external_id или храните соответствие локально.
Что делать с 429 и 5xx
Не отправляйте запрос в бесконечном цикле. Для временных ошибок используйте очередь и увеличивающийся интервал повторов. 4xx обычно требуют исправления данных или авторизации, а не повтора.
Минимальный мониторинг
| Событие | Что контролировать |
|---|---|
| Новые заявки | queued больше допустимого времени |
| CRM API | 4xx/429/5xx |
| Дубли | одинаковый external_id |
| ождение | локальная заявка без crm_id |
| Webhook CRM | необработанные event_id |
| Авторизация | истечение/обновление token |
Скачать примеры для веб-разработки
Как избежать повторных заявок при интеграции с CRM
Задайте уникальный идентификатор заявки на стороне сайта и сохраняйте его при повторной отправке. Запрос в CRM должен иметь контролируемый таймаут; при сетевой ошибке повторяйте отправку с тем же идентификатором, а не создавайте новую заявку бесконтрольно. Учитывайте ограничения API, срок действия токена и правила обновления полей клиента.
На приёмке проверьте двойной клик по кнопке, перезагрузку страницы, недоступность CRM и восстановление очереди. Отдельно согласуйте, где хранятся персональные данные и кому доступны журналы передачи.