Большинство сайтов на WordPress в какой-то момент сталкиваются с одной и той же проблемой: заявки приходят на почту и теряются. Менеджер забыл, ушёл в отпуск, фильтр спама съел письмо — потенциальный клиент остался без ответа. Интеграция Contact Form 7 с Bitrix24 закрывает этот разрыв, но сделать её надёжно — нетривиально. Разберу, как.
Почему «простой webhook» — это путь к боли
В CF7 есть встроенный hook wpcf7_before_send_mail, и первая мысль каждого разработчика: «возьму payload, отправлю POST в Bitrix24, готово». Работает на трафике 5 заявок в день. Ломается на 200.
Реальные проблемы, которые я ловил у клиентов:
- Bitrix24 упал на 10 минут — все заявки этих 10 минут просто потеряны. Никаких retry.
- Двойные клики — лид создан дважды, менеджеры тратят час на дедупликацию.
- Файлы из формы не уходят — клиент прикрепил скан паспорта, в CRM пусто.
- UTM-метки не передаются — маркетолог не понимает, какой канал даёт заявки.
- Ошибки тихо съедаются — никто не знает, что половина заявок не доходит.
Архитектура надёжной интеграции
За семь лет я сложил архитектуру в четыре уровня. Каждый уровень закрывает конкретный класс проблем.
Уровень 1 — Дедупликация по хешу payload
Перед отправкой считаем md5 от важных полей (email, телефон, сообщение) и проверяем, не было ли такой же отправки за последние 5 минут. Если была — игнорируем. Это убирает 90% случаев двойного клика.
Уровень 2 — Проверка дублей в CRM по контактам
Перед созданием лида делаем REST-запрос crm.lead.list с фильтром по email/телефону. Если контакт уже есть и его лид моложе 24 часов — добавляем комментарий к существующему лиду вместо создания нового.
Уровень 3 — Retry-очередь с экспоненциальным backoff
Если REST вернул ошибку (5xx, timeout, rate limit) — заявка попадает в собственную таблицу wp_tn_b24_queue со статусом pending. Cron каждые 5 минут забирает pending-задачи и пытается переотправить. Интервалы: 1 → 2 → 5 → 15 → 60 → 240 минут. Шесть попыток за четыре часа покрывают любые типичные сбои инфраструктуры.
Уровень 4 — Логирование и алерты
Каждая отправка пишется в БД с payload, ответом CRM и временем ответа. На отдельной странице админки — фильтрабельный лог. При трёх подряд ошибках — Telegram-алерт на личный канал. Клиент видит проблему до того, как менеджер заметит отсутствие заявок.
Когда брать готовый плагин, а когда писать кастом
Готовый CF7 Bitrix24 Integration покрывает 90% сценариев: маппинг полей, файлы, retry, логи. Это четыре уровня выше — уже в коробке. Стоит $29 в год за один сайт, окупается одной не потерянной сделкой.
Кастомная разработка нужна, когда:
- Нужна нестандартная логика роутинга — например, заявки из разных стран в разные воронки.
- Интеграция с несколькими CRM одновременно (Bitrix24 + AMO + Roistat).
- Кастомная логика обогащения данных перед отправкой (например, IP → город → менеджер).
- Это не CF7, а Elementor Forms / WPForms / Gravity с нюансами.
Что делать прямо сейчас
Если у вас сайт на WordPress, формы CF7 и Bitrix24 — начните с готового плагина и проверьте Free-версию. Если уже видно, что нужна retry-очередь и логи — берите Pro. Если сценарий нестандартный — опишите задачу, оценим за 24 часа.
