---
title: "Tilda и Битрикс24 через n8n: лиды с UTM | Nodbot"
source_url: "https://nodbot.ru/workflows/tilda-form-to-bitrix24-lead/"
canonical_url: "https://nodbot.ru/workflows/tilda-form-to-bitrix24-lead/"
language: "ru"
content_type: "WorkflowTemplate"
section: "workflows"
generated_at: "2026-05-30"
word_count_source: 1369
---

# Интеграция Tilda и Битрикс24 через n8n: лиды с UTM без дублей

## AI summary

Problem/Solution-мануал по интеграции Tilda и Битрикс24 через n8n: настройка вебхука, передача данных из формы, crm.duplicate.findbycomm, UTM-поля, нормализация телефона и production-проверка.

## Best used for

Полноценный Problem/Solution-мануал для внедрения в n8n: импортировать workflow JSON, настроить webhook/API, проверить дубли, выполнить production-тесты и передать решение команде.

## Table of contents

- Проблема: почему простая передача формы Tilda в Битрикс24 создает дубли
- Архитектура workflow для интеграции Tilda и Битрикс24
- Контракт входных данных (JSON Payload)
- Нормализация телефона и UTM для Bitrix24 REST (Code Node)
- Готовый workflow JSON: скачать и импортировать
- Пошаговая настройка связки Tilda, n8n и Битрикс24
- Тесты перед production и проверка Bitrix24 API
- Production-риски при работе с REST API Битрикс24
- Полезные ссылки и смежные workflow
- Критерии готовности

## Key topics

- Tilda Bitrix24 integration
- n8n webhook
- crm.duplicate.findbycomm
- Bitrix24 REST API
- UTM fields
- phone normalization
- lead dedupe
- workflow JSON

## Source outline

Интеграция Tilda и Битрикс24 через n8n: лиды с UTM без дублей ¶ Обновлено: 2026-05-30 Сохранить в мой план Открыть мой план Шаблон для внедрения Скачать workflow JSON Скачать test payload Скопировать curl Импортируйте JSON в n8n, замените Bitrix24 webhook URL, ID пользовательских полей и правило создания/обновления лида. Содержание Проблема: почему простая передача формы Tilda в Битрикс24 создает дубли Архитектура workflow для интеграции Tilda и Битрикс24 Контракт входных данных (JSON Payload) Нормализация телефона и UTM для Bitrix24 REST (Code Node) Готовый workflow JSON: скачать и импортировать Пошаговая настройка связки Tilda, n8n и Битрикс24 Тесты перед production и проверка Bitrix24 API Production-риски при работе с REST API Битрикс24 Полезные ссылки и смежные workflow Критерии готовности Проблема: Tilda отправляет форму в webhook быстро, но Битрикс24 не должен получать новый лид при каждом повторном POST. Иначе менеджеры видят одинаковые заявки, UTM-аналитика расходится, а автоматизация продаж начинает обзванивать одного человека несколько раз. Решение: надежная интеграция Тильды и Битрикс24 через n8n принимает данные из формы, нормализует телефон, ищет дубли через REST API Битрикс24 и только потом делает crm.lead.add или обновляет найденную сущность. Это не “прокладка webhook → CRM”, а контролируемый слой качества данных. Страница рассчитана на интегратора: здесь есть готовый workflow JSON, payload для теста, Code Node с регуляркой, таблица архитектуры, production-риски и чек-лист запуска. n8n принимает webhook Tilda, нормализует контакт, ищет дубль в Битрикс24 и создаёт или обновляет лид с UTM. Проблема: почему простая передача формы Tilda в Битрикс24 создает дубли ¶ Простая настройка вебхука работает только до первого повторного лида. Пользователь мог дважды нажать кнопку, вернуться с другой рекламной кампании, оставить форму без email или написать телефон в формате 8 925... . Если каждый такой запрос превращается в новый лид, CRM быстро теряет доверие у отдела продаж. У Битрикс24 есть отдельная логика дублей и разные режимы CRM. Поэтому задача workflow — заранее подготовить поля, проверить phone/email как коммуникации и не смешивать UTM, комментарий, страницу заявки и системные поля в один текстовый блок. Архитектура workflow для интеграции Tilda и Битрикс24 ¶ Нода Роль Что проверить Webhook input Принимает POST формы Tilda Production URL, секрет, JSON body, корректный ответ Tilda Normalize and map fields Готовит phone/email и fields для Битрикс24 Регулярка телефона, lowercase email, UTM-поля Find duplicate Вызывает поиск дублей по коммуникациям Телефон и email переданы в формате, который понимает CRM Create or update lead Создаёт или обновляет лид TITLE , PHONE , EMAIL , UTM_* , пользовательские поля Respond Возвращает безопасный ответ webhook Без токенов, персональных данных и stack trace Встроенный “просто отправить форму” не показывает, где именно сломался процесс. Ручная схема в n8n удобнее: видно нормализованный телефон, результат поиска дубля, тело запроса к Bitrix24 API и финальный ответ CRM. Контракт входных данных (JSON Payload) ¶ Зафиксируйте контракт входных данных до публикации формы. Чем стабильнее payload, тем меньше ручных правок в Битрикс24 после запуска рекламы. { "name": "Ирина", "phone": "+7 (925) 400-11-22", "email": "irina@example.ru", "comment": "Хочу получить расчет внедрения CRM", "utm_source": "yandex", "utm_medium": "cpc", "utm_campaign": "bitrix24_integration", "utm_content": "lead_form_main", "utm_term": "интеграция тильды и битрикс24", "formid": "consultation-main", "page": "https://example.ru/bitrix24" } Обязательный минимум — телефон. Email, комментарий и UTM полезны, но не должны заменять ключ дедупликации. Если телефон не проходит нормализацию, workflow должен остановиться до обращения в CRM. Нормализация телефона и UTM для Bitrix24 REST (Code Node) ¶ Code Node ниже подготавливает объект fields для REST API: коммуникации оформлены массивами PHONE и EMAIL , UTM передаются в стандартные поля, а дополнительные значения уходят в пользовательские поля. const src = $json.body ?? $json; const rawPhone = String(src.phone ?? src.Phone ?? '').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 lead: ${rawPhone}`); } const email = String(src.email ?? src.Email ?? '').trim().toLowerCase(); const name = String(src.name ?? src.Name ?? 'Новый лид из Tilda').trim(); return [{ json: { dedupe: { phone: `+${digits}`, email, key: `tilda-bitrix24:${digits}:${email || 'no-email'}` }, fields: { TITLE: `Tilda: ${name}`, NAME: name, PHONE: [{ VALUE: `+${digits}`, VALUE_TYPE: 'WORK' }], EMAIL: email ? [{ VALUE: email, VALUE_TYPE: 'WORK' }] : [], COMMENTS: String(src.comment ?? src.message ?? '').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_TILDA_FORM_ID: src.formid ?? src.form_id ?? '', UF_CRM_LANDING_PAGE: src.page ?? src.referer ?? '' }, received_at: new Date().toISOString() } }]; Для поиска дубля используйте phone/email из dedupe . В Битрикс24 метод поиска дублей по коммуникациям работает с телефоном и email, поэтому важно не отправлять туда сырые значения из формы. Готовый workflow JSON: скачать и импортировать ¶ Полный JSON находится в архиве сайта и доступен по кнопке в начале статьи. Импортируйте его в n8n, затем замените Bitrix24 webhook URL вида https://YOUR_PORTAL.bitrix24.ru/rest/USER_ID/WEBHOOK_CODE/ . Скачать готовый workflow JSON Скачать тестовый payload { "name": "Nodbot - Tilda to Bitrix24 lead with UTM and dedupe", "nodes": [ { "name": "Webhook input", "type": "n8n-nodes-base.webhook", "purpose": "Принять POST формы Tilda и вернуть короткий ответ" }, { "name": "Normalize and map Bitrix24 fields", "type": "n8n-nodes-base.code", "purpose": "Нормализовать телефон, email, UTM и собрать Bitrix24 fields" }, { "name": "Find duplicate in Bitrix24", "type": "n8n-nodes-base.httpRequest", "purpose": "Вызвать crm.duplicate.findbycomm по телефону/email" }, { "name": "Create or update Bitrix24 lead", "type": "n8n-nodes-base.httpRequest", "purpose": "Создать crm.lead.add или обновить найденный лид" }, { "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "purpose": "Вернуть Tilda безопасный 200 OK" } ], "connections": "Webhook input → Normalize → Find duplicate → Create/update lead → Respond" } В новых проектах можно заменить создание лида на универсальные методы CRM, но для классического режима с лидами сценарий выше проще объяснить менеджерам и легче отлаживать. Пошаговая настройка связки Tilda, n8n и Битрикс24 ¶ В Tilda включите отправку формы в webhook и убедитесь, что передаются телефон, email, комментарий, UTM и formid . В n8n импортируйте workflow JSON и замените путь webhook на production URL. В Битрикс24 создайте входящий webhook с правами на CRM и сохраните его URL в credentials или ENV. Проверьте ID пользовательских полей для form_id и landing page; не пишите их только в комментарий. Настройте ветку: если дубль найден — update/comment, если не найден — create lead. Отправьте один payload дважды и убедитесь, что повтор не создал второй лид. Идеальный результат: телефон, email, UTM, form_id и страница заявки лежат в отдельных полях, а не только в комментарии. Тесты перед production и проверка Bitrix24 API ¶ Проверяйте не только успешный HTTP-ответ. В executions должны быть понятны три вещи: нормализованный телефон, найденный дубль и результат записи в Битрикс24. Для production отдельно проверьте ответы 400 , 401 , 403 и 429 . curl -X POST "https://YOUR-N8N-DOMAIN/webhook/tilda-form-to-bitrix24-lead" \ -H "Content-Type: application/json" \ --data @tilda-form-to-bitrix24-lead-payload.json Минимальный набор тестов: повторный payload, телефон в формате 8... , заявка без email, UTM с кириллицей и пустой комментарий. Все эти случаи должны давать предсказуемый результат. Production-риски при работе с REST API Битрикс24 ¶ Webhook Битрикс24 лежит прямо в ноде. Утечка URL даёт доступ к CRM-операциям. Храните его в credentials или ENV. Дубль ищется после создания лида. Тогда CRM уже загрязнена. Поиск должен идти до create. UTM потерялись в комментарии. Маркетинг не сможет построить нормальный отчёт по источникам. Лимиты REST API. Массовый импорт лидов через тот же workflow без backoff может упереться в ограничения. Разные режимы CRM. В некоторых порталах лиды отключены; тогда нужно создавать сделку/контакт, а не crm.lead.add . Нет владельца workflow. При смене формы никто не знает, какие поля можно переименовывать безопасно. Полезные ссылки и смежные workflow ¶ Официальные документы для внедрения: поиск дублей в Bitrix24 REST , раздел Leads в Bitrix24 CRM и Webhook для форм Tilda . Смотрите также внутри Nodbot: Установка n8n — базовая подготовка сервера. n8n в Docker Compose — self-hosted запуск для production. Битрикс24 в n8n — общая страница интеграции. Tilda → amoCRM — соседний сценарий для другой CRM. Retry и DLQ для HTTP Request — защита от временных ошибок API. Критерии готовности ¶ Повторная отправка формы не создаёт второй лид без бизнес-правила. Телефон нормализуется одинаково для +7 , 8 , пробелов и скобок. UTM, form_id и landing page записываются в отдельные поля. Ошибки REST API уходят в alert или DLQ. Webhook URL не хранится в публичном тексте workflow. У workflow есть владелец, описание и тестовый payload. Нужно внедрить без риска дублей? Команда Nodbot может настроить связку Tilda, n8n и Битрикс24 под вашу CRM-структуру: поля, статусы, дубли, UTM, тесты и мониторинг. Обсудить интеграцию Битрикс24

## Test payload

```json
{
  "name": "Ирина",
  "phone": "+7 (925) 400-11-22",
  "email": "irina@example.ru",
  "comment": "Хочу получить расчет внедрения CRM",
  "utm_source": "yandex",
  "utm_medium": "cpc",
  "utm_campaign": "bitrix24_integration",
  "utm_content": "lead_form_main",
  "utm_term": "интеграция тильды и битрикс24",
  "formid": "consultation-main",
  "page": "https://example.ru/bitrix24"
}
```

## Key implementation snippet

```javascript
const src = $json.body ?? $json;
const rawPhone = String(src.phone ?? src.Phone ?? '').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 lead: ${rawPhone}`);
}

const email = String(src.email ?? src.Email ?? '').trim().toLowerCase();
const name = String(src.name ?? src.Name ?? 'Новый лид из Tilda').trim();

return [{
  json: {
    dedupe: {
      phone: `+${digits}`,
      email,
      key: `tilda-bitrix24:${digits}:${email || 'no-email'}`
    },
    fields: {
      TITLE: `Tilda: ${name}`,
      NAME: name,
      PHONE: [{ VALUE: `+${digits}`, VALUE_TYPE: 'WORK' }],
      EMAIL: email ? [{ VALUE: email, VALUE_TYPE: 'WORK' }] : [],
      COMMENTS: String(src.comment ?? src.message ?? '').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_TILDA_FORM_ID: src.formid ?? src.form_id ?? '',
      UF_CRM_LANDING_PAGE: src.page ?? src.referer ?? ''
    },
    received_at: new Date().toISOString()
  }
}];
```

## Importable workflow structure

```json
{
  "name": "Nodbot - Tilda to Bitrix24 lead with UTM and dedupe",
  "nodes": [
    { "name": "Webhook input", "type": "n8n-nodes-base.webhook", "purpose": "Принять POST формы Tilda и вернуть короткий ответ" },
    { "name": "Normalize and map Bitrix24 fields", "type": "n8n-nodes-base.code", "purpose": "Нормализовать телефон, email, UTM и собрать Bitrix24 fields" },
    { "name": "Find duplicate in Bitrix24", "type": "n8n-nodes-base.httpRequest", "purpose": "Вызвать crm.duplicate.findbycomm по телефону/email" },
    { "name": "Create or update Bitrix24 lead", "type": "n8n-nodes-base.httpRequest", "purpose": "Создать crm.lead.add или обновить найденный лид" },
    { "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "purpose": "Вернуть Tilda безопасный 200 OK" }
  ],
  "connections": "Webhook input → Normalize → Find duplicate → Create/update lead → Respond"
}
```

## Retrieval hints

- Использовать HTML как canonical source.
- Markdown удобен для LLM-ответов, извлечения workflow-контракта, кода и чеклистов.
- Для ссылок пользователю отдавать canonical URL.
