Перейти к содержанию

Обогащение лидов через DaData и n8n: телефон, компания и quality gate

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

Открыть мой план
Шаблон для внедрения

Импортируйте JSON в n8n, замените DaData API key, secret и CRM endpoint. Перед production проверьте quality gate на реальных лидах.

Проблема: обогащение лидов через DaData кажется безопасным, пока workflow не начинает перезаписывать уже проверенные телефоны, названия компаний и реквизиты в CRM. Один неточный match по названию может превратить качественную карточку клиента в спорную запись.

Решение: делать enrichment через n8n с quality gate: сначала нормализовать телефон и ИНН, затем запросить DaData API, посчитать confidence score и обновлять CRM автоматически только при достаточной уверенности. Спорные данные должны попадать в ручную проверку, а не прямо в карточку продаж.

Это практический скрипт n8n для обогащения CRM: payload, Code Node, workflow JSON, тесты, риски и понятный критерий, когда можно доверять данным DaData.

Схема обогащения лида через DaData и n8n с quality gate
Workflow не пишет найденные данные в CRM напрямую: между DaData и CRM стоит quality gate.

Проблема: почему автоматическое обогащение лидов может испортить CRM

Типичная ошибка — воспринимать подсказку как истину. DaData хорошо помогает найти организацию по ИНН или названию, но в реальном потоке лидов бывают сокращения, филиалы, старые компании, телефоны из коллтрекинга и заявки от посредников. Поэтому интегратор должен отделить “подсказку для оператора” от “данных, которыми можно обновить CRM без человека”.

Особенно опасно перезаписывать поле company, ответственного или юридическое лицо после первого успешного enrichment. Правильная автоматизация продаж сохраняет исходные данные формы, добавляет enriched-блок рядом и показывает источник/уверенность.

Архитектура workflow DaData → n8n → CRM

НодаРольЧто проверить
Webhook inputПринимает lead payload из CRM, Tilda или Битрикс24lead_id, телефон, ИНН, email, источник
Normalize and scoreГотовит телефон, ИНН и базовый scoreРегулярка телефона, 10/12 цифр ИНН, пустые значения
DaData clean phoneПроверяет и стандартизирует номерAPI key/secret, лимиты, страна и формат
DaData suggest partyИщет компанию по ИНН или названиюНе брать первый match без confidence gate
Quality gateРешает: auto update или manual reviewПорог score и список полей, разрешённых к обновлению
CRM update / review taskОбновляет карточку или создаёт задачуНе перезаписывать проверенные поля без правила

Контракт входных данных для enrichment

Передавайте в enrichment только поля, которые реально участвуют в решении: идентификатор лида, телефон, email, ИНН, название и ссылку на CRM. Полный комментарий клиента и лишние персональные данные здесь не нужны.

{
  "lead_id": "crm-10492",
  "name": "ООО Ромашка",
  "phone": "+7 (495) 123-45-67",
  "email": "sales@romashka.example",
  "inn": "7707083893",
  "source": "tilda_form",
  "crm_url": "https://crm.example.ru/leads/10492"
}

Если ИНН отсутствует, workflow может искать компанию по названию, но такой результат должен иметь меньший score. Если нет ни ИНН, ни нормального телефона, лучше создать задачу “проверить данные”, чем писать случайные подсказки в CRM.

Нормализация телефона, ИНН и confidence gate (Code Node)

Этот Code Node не вызывает DaData напрямую. Он готовит стабильный объект для HTTP Request и решает, есть ли смысл обогащать запись автоматически.

const src = $json.body ?? $json;
const rawPhone = String(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}`;

const phoneOk = /^7\d{10}$/.test(digits);
const inn = String(src.inn ?? '').replace(/\D/g, '');
const innOk = /^(\d{10}|\d{12})$/.test(inn);
const email = String(src.email ?? '').trim().toLowerCase();
const companyQuery = innOk ? inn : String(src.name ?? '').trim();

const score = [
  phoneOk ? 30 : 0,
  innOk ? 40 : 0,
  companyQuery.length >= 3 ? 20 : 0,
  email.includes('@') ? 10 : 0
].reduce((a, b) => a + b, 0);

return [{
  json: {
    lead_id: src.lead_id,
    phone_normalized: phoneOk ? `+${digits}` : null,
    inn,
    email,
    company_query: companyQuery,
    confidence_score: score,
    enrichment_mode: score >= 70 ? 'auto_update' : 'manual_review',
    dadata: {
      clean_phone_url: 'https://cleaner.dadata.ru/api/v1/clean/phone',
      suggest_party_url: 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party'
    }
  }
}];

Порог 70 — пример. Для B2B-лидов с ИНН его можно поднять до 80–90, а для входящих заявок без реквизитов оставить ручную проверку. Главное — фиксировать правило в workflow, а не держать его в голове интегратора.

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

Полный workflow JSON находится в архиве сайта и доступен по кнопке в начале статьи. Внутри есть HTTP Request для DaData, ветка quality gate и пример обновления CRM.

{
  "name": "Nodbot - DaData lead enrichment with quality gate",
  "nodes": [
    { "name": "Webhook input", "type": "n8n-nodes-base.webhook", "purpose": "Принять lead_id, телефон, email, ИНН и название компании" },
    { "name": "Normalize and score", "type": "n8n-nodes-base.code", "purpose": "Подготовить телефон, ИНН и confidence_score" },
    { "name": "DaData clean phone", "type": "n8n-nodes-base.httpRequest", "purpose": "Очистить и проверить телефон" },
    { "name": "DaData suggest party", "type": "n8n-nodes-base.httpRequest", "purpose": "Найти организацию по ИНН или названию" },
    { "name": "Quality gate", "type": "n8n-nodes-base.if", "purpose": "Разделить auto_update и manual_review" },
    { "name": "Update CRM or create review task", "type": "n8n-nodes-base.httpRequest", "purpose": "Обновить CRM только при достаточной уверенности" }
  ],
  "connections": "Webhook → Normalize → DaData phone/party → Quality gate → CRM update or review"
}

Пошаговая настройка DaData API, n8n и CRM

  1. Создайте DaData credentials в n8n: API key и Secret key храните в credentials или ENV.
  2. Импортируйте workflow JSON и замените CRM endpoint на ваш URL обновления лида.
  3. Решите, какие поля можно обновлять автоматически: например, phone_validated, company_inn, company_name_suggested.
  4. Настройте ветку manual review для score ниже порога: задача менеджеру, комментарий или отдельный статус.
  5. Запустите тестовый payload с ИНН, без ИНН и с плохим телефоном.
Карточка CRM после обогащения лида через DaData в n8n
Хороший результат: исходные поля сохранены, enriched-значения подписаны источником и score.

Тесты перед production и проверка DaData API

Проверяйте не только HTTP 200 от DaData. Важно увидеть, какие именно поля workflow собирается обновить и почему score достаточный. Для каждого теста сохраните execution, чтобы потом объяснить менеджерам логику принятия решения.

curl -X POST "https://YOUR-N8N-DOMAIN/webhook/dadata-enrich-lead" \
  -H "Content-Type: application/json" \
  --data @dadata-enrich-lead-payload.json
  • Лид с валидным ИНН и телефоном должен уйти в auto_update.
  • Лид только с названием компании должен уйти в manual_review или получить низкий score.
  • Плохой телефон не должен перезаписывать рабочий номер в CRM.
  • Ошибка лимита DaData должна попасть в alert/retry, а не в тихий success.

Production-риски обогащения данных

  • Перезапись хороших данных. Никогда не заменяйте проверенные поля без признака источника и даты обогащения.
  • Первый match принят автоматически. Для названий компаний это риск, особенно при франшизах и филиалах.
  • DaData token попал в лог. Не отправляйте headers и полный response в публичные алерты.
  • Нет лимитов и backoff. Массовая переработка базы может быстро упереться в ограничения API.
  • Нет ручной очереди. Все спорные лиды должны быть видны человеку, иначе они просто теряются.

Полезные ссылки и смежные workflow

Официальная документация: DaData API подсказок по организациям. Внутри Nodbot полезны страницы Tilda → Битрикс24, Tilda → amoCRM, retry и DLQ для HTTP Request и HTTP Request node.

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

  1. В workflow есть порог confidence score и ветка manual review.
  2. Исходные данные формы не удаляются и не перезаписываются без trace.
  3. DaData credentials не видны в HTML, workflow notes и alert-сообщениях.
  4. Тесты покрывают валидный ИНН, неточный company name, плохой телефон и лимит API.
  5. Менеджер видит enriched-поля, источник и дату последней проверки.

Нужно обогатить CRM без хаоса в данных?

Nodbot настроит DaData enrichment через n8n с quality gate, ручной очередью и безопасным обновлением CRM-полей.

Обсудить enrichment workflow