Сначала сохраните заявку у себя

Если отправлять лид в CRM прямо из формы и не сохранять его локально, временный сбой API превращается в потерянную заявку. Надёжная схема: форма → локальная запись → очередь отправки → CRM.

Какие поля нужны интеграции

ПолеЗачем
internal_idидентификатор заявки на сайте
external_idсвязь с объектом CRM
created_atвремя создания
source/utmисточник лида
statusqueued/sent/error
attemptsчисло повторов
last_errorкраткая причина сбоя
crm_idидентификатор созданного лида/сделки

Пример передачи JSON в CRM

PHP
$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 API4xx/429/5xx
Дублиодинаковый external_id
ождениелокальная заявка без crm_id
Webhook CRMнеобработанные event_id
Авторизацияистечение/обновление token

Скачать примеры для веб-разработки

RuJul Web Development Examples — один ZIP

Связанные материалы

Как избежать повторных заявок при интеграции с CRM

Задайте уникальный идентификатор заявки на стороне сайта и сохраняйте его при повторной отправке. Запрос в CRM должен иметь контролируемый таймаут; при сетевой ошибке повторяйте отправку с тем же идентификатором, а не создавайте новую заявку бесконтрольно. Учитывайте ограничения API, срок действия токена и правила обновления полей клиента.

На приёмке проверьте двойной клик по кнопке, перезагрузку страницы, недоступность CRM и восстановление очереди. Отдельно согласуйте, где хранятся персональные данные и кому доступны журналы передачи.