<!-- source: https://nodbot.ru/integrations/dadata/; markdown: /llms/pages/generated/integrations-dadata.md; type: IntegrationGuide -->
---
title: "DaData и n8n: чистка лидов до CRM | Nodbot"
source_url: "https://nodbot.ru/integrations/dadata/"
canonical_url: "https://nodbot.ru/integrations/dadata/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 955
---

## AI summary

Problem/Solution-гайд по DaData и n8n: как очищать телефон, email, адрес, ФИО и реквизиты перед записью в CRM, использовать quality codes, не терять исходные данные и контролировать ошибки API.

## Best used for

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

## Key topics

- DaData API
- n8n HTTP Request
- clean API
- suggest API
- нормализация телефона
- адреса
- ИНН
- quality codes
- CRM enrichment

# DaData и n8n: нормализация телефонов, адресов и реквизитов перед CRM

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

Импортируйте JSON в n8n, замените credentials, URL API, поля CRM/БД и лимиты под вашу инфраструктуру.

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

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

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

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

- Готовый workflow JSON

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

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

- Production-риски

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

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

Проблема: формы, CRM и таблицы часто получают телефоны в разных форматах, адреса без индекса, email с пробелами и реквизиты без проверки. В итоге менеджеры вручную исправляют карточки, доставка ошибается, а аналитика не может нормально группировать лиды.

Решение: ставим DaData как слой качества данных в n8n: сохраняем raw-поля, отправляем их в clean/suggest API, проверяем quality codes, нормализуем телефон/email/адрес/ИНН и только после этого обновляем CRM или таблицу.


## Проблема: почему CRM без нормализации DaData быстро загрязняется

Главная ошибка — перезаписывать исходные данные очищенными без контроля качества. DaData может вернуть нормализованное значение, но вместе с ним нужно учитывать qc , qc_geo , полноту адреса и уверенность в распознавании. Иначе workflow красиво заполнит CRM, но фактически закрепит ошибку.

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


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

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

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

| Webhook / CRM trigger | получает сырой лид из формы, CRM или таблицы | raw-поля сохраняются отдельно |

| Prepare DaData request | собирает phone/email/address/inn | пустые поля не отправляются в API |

| DaData clean/suggest | нормализует данные и возвращает quality codes | таймаут, токен, лимиты, статус 4xx/5xx |

| Quality gate | решает auto-update или manual review | qc/qc_geo, confidence, обязательные поля |

| Update CRM | пишет normalized-поля и raw-поля | отдельные custom fields, история изменений |

| Audit and retry | логирует исход, ошибки и attempts | alert при 401/429/5xx |

Для B2B-лидов отдельно храните ИНН/КПП и название организации из DaData. Для B2C важнее нормализованный телефон, email и адрес доставки.


## Контракт входных данных для обогащения лида

```json
{
  "lead_id": "crm-10492",
  "name": "ООО Ромашка",
  "phone": "8 (916) 123-45-67",
  "email": "  SALES@EXAMPLE.RU ",
  "address": "москва тверская 7",
  "inn": "7707083893",
  "source": "tilda"
}
```

Не удаляйте raw-поля. Если клиент указал “корпус 2, вход со двора”, эта информация может быть важнее идеальной формальной строки адреса.


## Code Node: подготовка запроса в DaData и проверка качества

```javascript
const src = $json.body ?? $json;
const rawPhone = String(src.phone ?? '').trim();
const rawEmail = String(src.email ?? '').trim();
const rawAddress = String(src.address ?? '').trim();
const inn = String(src.inn ?? '').replace(/\D/g, '');
const phoneDigits = rawPhone.replace(/\D/g, '');
if (!phoneDigits && !rawEmail && !rawAddress && !inn) {
  throw new Error('No fields for DaData enrichment');
}
return [{ json: {
  lead_id: String(src.lead_id ?? ''),
  raw: { phone: rawPhone, email: rawEmail, address: rawAddress, inn, name: src.name ?? '' },
  dadata: {
    phone: phoneDigits ? [rawPhone] : [],
    email: rawEmail ? [rawEmail.toLowerCase()] : [],
    address: rawAddress ? [rawAddress] : [],
    party_query: inn || String(src.name ?? '').trim()
  },
  quality_policy: { auto_update_qc_max: 1, require_phone: true, manual_review_on_qc_geo: [3,4,5] },
  dedupe_key: phoneDigits ? `phone:${phoneDigits}` : `email:${rawEmail.toLowerCase()}`
}}];
```

Raw помогает расследовать спорные случаи и восстановить контекст заявки. Normalized нужен для поиска дублей, аналитики, доставки и автоматических правил. Перезапись без raw-поля делает ошибку необратимой.


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

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

```json
{
  "name": "Nodbot - DaData enrichment before CRM update",
  "nodes": [
    {
      "name": "Webhook lead input",
      "type": "n8n-nodes-base.webhook",
      "purpose": "Принять сырой лид"
    },
    {
      "name": "Prepare DaData request",
      "type": "n8n-nodes-base.code",
      "purpose": "Собрать clean/suggest request"
    },
    {
      "name": "Call DaData API",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Получить нормализованные данные"
    },
    {
      "name": "Quality gate",
      "type": "n8n-nodes-base.if",
      "purpose": "Проверить qc и полноту"
    },
    {
      "name": "Update CRM fields",
      "type": "n8n-nodes-base.httpRequest",
      "purpose": "Записать normalized и raw"
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "purpose": "Вернуть итог"
    }
  ],
  "connections": "Webhook lead input → Prepare DaData request → Call DaData API → Quality gate → Update CRM fields → Respond"
}
```


## Пошаговая настройка DaData API, n8n и CRM-полей

- Создайте DaData API token и храните его в credentials или ENV.

- Определите, какие поля CRM будут raw, а какие normalized.

- Импортируйте workflow JSON и настройте endpoint DaData под clean или suggest API.

- Настройте quality gate: что обновлять автоматически, а что отдавать на ручную проверку.

- Проверьте лимиты API и alert на 401, 429 и 5xx.


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

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

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

- Email с пробелами и верхним регистром.

- Адрес без индекса и с опечаткой.

- ИНН организации и название без ИНН.

- DaData вернул низкий quality code или пустой результат.


## Production-риски

- Перезаписали raw-адрес. Курьерский комментарий или уточнение клиента потерялись.

- Не проверили quality codes. CRM получила красивое, но неверное значение.

- DaData используется для дедупликации без бизнес-правил. Похожие записи могут быть ошибочно объединены.

- Токен в Code Node. API token должен быть в credentials/ENV.

- Нет backoff. При лимитах API workflow начинает падать пачками.


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

- DaData Clean API

- DaData Suggest API

- Workflow: обогащение лида через DaData

- Интеграция amoCRM и n8n

- Интеграция Битрикс24 и n8n


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

- Raw и normalized-поля разделены.

- Quality gate не пропускает сомнительные значения автоматически.

- Ошибки DaData логируются и отправляются в alert.

- CRM-дедупликация использует нормализованный телефон/email, но не объединяет записи без правила.

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

Nodbot настроит DaData + n8n: clean/suggest API, quality gate, raw/normalized-поля, дедупликацию и alert-ы по ошибкам.
