<!-- source: https://nodbot.ru/integrations/bitrix24/; markdown: /llms/pages/generated/integrations-bitrix24.md; type: IntegrationGuide -->
---
title: "Битрикс24 и n8n: CRM-интеграция без дублей | Nodbot"
source_url: "https://nodbot.ru/integrations/bitrix24/"
canonical_url: "https://nodbot.ru/integrations/bitrix24/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 1074
---

## AI summary

Problem/Solution-гайд по Битрикс24 и n8n: как принимать заявки, нормализовать phone/email, искать дубли через REST API, создавать лид или сделку, сохранять UTM, ставить задачи и не терять события при ошибках API.

## Best used for

Страница нужна интеграторам и владельцам n8n, которые хотят внедрить связку без дублей, ручного хаоса и потери данных.

## Key topics

- Битрикс24 REST API
- n8n CRM integration
- duplicate lookup
- UTM
- webhook
- лиды и сделки
- retry
- DLQ

# Битрикс24 и n8n: интеграция CRM без дублей, потери UTM и ручного ввода

Обновлено: 2026-05-30

Используйте JSON как основу: замените credentials, URL порталов, поля CRM и правила дедупликации.

- Проблема и сценарии внедрения

- Архитектура интеграции

- Контракт данных

- Code Node и нормализация

- Готовый workflow JSON

- Пошаговая настройка

- Тесты перед production

- Production-риски

- Полезные ссылки

- Критерии готовности

Проблема: Битрикс24 часто подключают к формам, Telegram и сайтам как “просто отправить лид”. Через неделю CRM наполняется дублями, UTM оказываются в комментариях, менеджеры не видят задачи, а webhook-ошибки теряются в execution history.

Решение: строим интеграционный слой на n8n: единый контракт лида, нормализация телефона и email, поиск дублей до создания сущности, запись UTM в отдельные поля, retry/DLQ для REST API и контрольные уведомления ответственному.


## Проблема: почему простая интеграция Битрикс24 и n8n создаёт дубли

Главная ошибка — создавать лид сразу после входящего webhook. Один клиент может оставить форму дважды, написать с другого email, перейти из VK или Tilda с новым UTM, а менеджер может уже вести сделку по тому же телефону. Без проверки дублей автоматизация продаж превращается в генератор ручной работы.

Вторая проблема — отсутствие контракта данных. Если форма передаёт phone , Telegram — contact.phone_number , а сайт — tel , то в Битрикс24 попадают разные форматы одного номера. Поэтому production-интеграция начинается не с crm.lead.add , а с нормализации и правил маршрутизации.


## Архитектура связки Битрикс24, n8n, форм и уведомлений

| Блок | Задача | Production-проверка |

| --- | --- | --- |

| Webhook / Form input | принимает Tilda, VK, Telegram или сайт | секретный путь, JSON body, source и form_id |

| Normalize lead | чистит телефон, email, UTM и комментарий | единый формат +7, lowercase email, пустые поля |

| Duplicate lookup | ищет совпадения по PHONE/EMAIL | поиск до создания лида, не после |

| Create or update CRM item | создаёт лид/сделку или обновляет найденную | pipeline, status, responsible, UTM_* |

| Task and notification | ставит задачу и уведомляет менеджера | SLA, ссылка на карточку, без персональных данных в alert |

| Retry / DLQ | сохраняет сбои REST API | 429/5xx отдельно от 400/422 |

Для новых порталов Битрикс24 заранее решите, используются ли лиды или сразу сделки/контакты. В workflow это должен быть явный переключатель, а не скрытая логика в HTTP Request.


## Контракт лида и сделки для Bitrix24 REST API

```json
{
  "source": "tilda",
  "external_id": "lead-10492",
  "name": "Мария",
  "phone": "+7 (925) 111-22-33",
  "email": "maria@example.ru",
  "comment": "Нужна интеграция CRM и сайта",
  "utm_source": "yandex",
  "utm_medium": "cpc",
  "utm_campaign": "bitrix24_n8n",
  "page": "https://example.ru/crm"
}
```

Минимальный обязательный ключ — телефон или email. Но для аналитики нужны UTM, страница, форма и внешний ID события: без них невозможно объяснить, откуда пришёл лид и почему он был обновлён, а не создан заново.


## Code Node: нормализация и контроль качества

```javascript
const src = $json.body ?? $json;
const rawPhone = String(src.phone ?? src.tel ?? '').trim();
let digits = rawPhone.replace(/\D/g, '');
if (digits.length === 11 && digits.startsWith('8')) digits = `7${digits.slice(1)}`;
if (digits.length === 10) digits = `7${digits}`;
if (!/^7\d{10}$/.test(digits)) throw new Error(`Invalid phone for Bitrix24: ${rawPhone}`);
const email = String(src.email ?? '').trim().toLowerCase();
return [{ json: {
  dedupe: { type: 'PHONE', value: `+${digits}`, email, key: `bitrix24:${digits}:${email || 'no-email'}` },
  fields: {
    TITLE: `Новая заявка: ${src.name ?? 'без имени'}`,
    NAME: String(src.name ?? '').trim(),
    PHONE: [{ VALUE: `+${digits}`, VALUE_TYPE: 'WORK' }],
    EMAIL: email ? [{ VALUE: email, VALUE_TYPE: 'WORK' }] : [],
    COMMENTS: String(src.comment ?? '').trim(),
    SOURCE_ID: 'WEB',
    UTM_SOURCE: src.utm_source ?? '', UTM_MEDIUM: src.utm_medium ?? '',
    UTM_CAMPAIGN: src.utm_campaign ?? '', UTM_CONTENT: src.utm_content ?? '', UTM_TERM: src.utm_term ?? '',
    UF_CRM_LANDING_PAGE: src.page ?? '', UF_CRM_EXTERNAL_ID: src.external_id ?? ''
  }
}}];
```

Если сначала создать лид, а потом искать совпадения, CRM уже загрязнена. Правильный порядок: нормализация, duplicate lookup, решение update/create, только затем запись в Битрикс24.


## Готовый workflow JSON: скачать и импортировать

Скачать готовый workflow JSON Скачать тестовый payload

```json
{
  "name": "Nodbot - Bitrix24 integration blueprint with dedupe and UTM",
  "nodes": [
    {
      "name": "Webhook input",
      "type": "n8n-nodes-base.webhook",
      "purpose": "Принять заявку из формы, Telegram или другого источника"
    },
    {
      "name": "Normalize Bitrix24 lead",
      "type": "n8n-nodes-base.code",
      "purpose": "Собрать fields и dedupe key"
    },
    {
      "name": "Find duplicate by phone/email",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Вызвать поиск дублей через REST API"
    },
    {
      "name": "Create or update CRM item",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Создать лид/сделку или обновить найденную сущность"
    },
    {
      "name": "Notify manager",
      "type": "n8n-nodes-base.telegram",
      "purpose": "Отправить короткий alert со ссылкой"
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "purpose": "Вернуть безопасный ответ источнику"
    }
  ],
  "connections": "Webhook input → Normalize Bitrix24 lead → Find duplicate by phone/email → Create or update CRM item → Notify manager → Respond"
}
```


## Пошаговая настройка Битрикс24, webhook и n8n

- Создайте входящий webhook или приложение Битрикс24 с минимальными CRM-правами.

- Заведите пользовательские поля для landing page, external_id и служебного source.

- Импортируйте workflow JSON, замените URL портала, credentials, pipeline/status и responsible_user_id.

- Настройте маппинг UTM в отдельные поля, а не в комментарий.

- Прогоните тесты на повторный телефон, пустой email, кириллицу в UTM и ошибку REST API.


## Тесты перед production

```bash
curl -X POST "https://YOUR-N8N-DOMAIN/webhook/integration-bitrix24-n8n" \
  -H "Content-Type: application/json" \
  --data @integration-bitrix24-n8n-payload.json
```

- Отправьте один payload дважды и проверьте, что дубль не создан.

- Проверьте формат телефона +7, 8 и номер со скобками.

- Отключите API-токен и убедитесь, что событие попало в DLQ или alert.

- Проверьте, что менеджер видит задачу в нужной воронке и сроке.

- Сравните UTM в карточке CRM с исходным payload.


## Production-риски

- Webhook с полными правами. Утечка URL превращается в доступ к CRM-операциям; ограничивайте права и храните секреты в credentials/ENV.

- Дубли ищутся только по email. В российских лидах телефон часто надёжнее, а email может быть пустым.

- Разные режимы CRM. Если лиды отключены, crm.lead.add не подходит: нужна сделка/контакт или smart process.

- Нет retry на 429/5xx. Временная ошибка API не должна терять заявку.

- UTM в комментарии. Так маркетинг не сможет строить отчёты.


## Полезные ссылки и смежные материалы

- Bitrix24 REST: поиск дублей по коммуникациям

- Workflow Tilda → Битрикс24 с UTM

- Создание задач Битрикс24 из email

- Webhook idempotency через Postgres


## Критерии готовности

- Повторная заявка не создаёт вторую сущность без бизнес-правила.

- UTM и source лежат в отдельных полях Битрикс24.

- Ошибки REST API классифицируются и не теряются.

- У workflow есть владелец, тестовый payload и описание полей.

- Права webhook минимальны и не дают лишнего доступа к CRM.

Nodbot настроит n8n-интеграцию под вашу CRM-структуру: поля, воронки, дубли, UTM, retry, DLQ и мониторинг.
