Дубли данных в процессах: откуда берутся и в каком порядке их сводить
Один и тот же клиент обычно живёт в четырёх местах: карточка в CRM, переписка в мессенджере, контрагент в учётной системе, адрес доставки в таблице склада. Каждая система считает его своим и хранит под собственным ключом. Разберём, откуда берутся дубли, как измерить их долю за один день и в каком порядке сводить — чтобы не получить обратную ошибку и не склеить двух разных людей.
Коротко
- Дубли — не сбой, а нормальный результат работы без правил на входе: в кейсе с базой 318 тыс. контактов дублями оказались 73 тыс., то есть примерно каждый четвёртый.
- По данным Plauti (2021, анализ 12 млрд записей Salesforce), больше 45% новых записей в CRM — дубликаты, а у записей, приходящих из интеграций, доля доходит до 80%.
- Дубль бьёт не по диску, а по процессу: два звонка клиенту, две скидки, две задачи у разных менеджеров и отчёт, в котором клиентов вдвое больше, чем есть.
- Порядок наведения обратный интуиции: сначала правило на входе и единый ключ, потом разовая чистка, только потом регулярная сверка.
- Склейка без человека опасна: десять контактов с одной корпоративной почтой — это десять учителей одной школы, а не один клиент.
Что считают дублем, а что — разными людьми
Дубль — это две записи об одном объекте: клиенте, контрагенте, адресе доставки. Бывают полные копии (запись целиком продублирована импортом) и частичные, где совпадает только часть полей: телефон один, а имя записано иначе. Рядом стоит третья категория, которая всё портит, — похожие, но разные записи: тёзки, супруги с общим телефоном, сотрудники одной компании с общей корпоративной почтой.
Ошибка возможна в две стороны, и вторая дороже. Оставили дубль — клиент получает два звонка с одним предложением, скидку дважды, а руководитель видит удвоенную базу. Склеили разных людей — один человек видит чужие заказы и счета, и это уже не неудобство, а инцидент. Поэтому дедупликация — это не «убрать лишние строки», а решение о том, кто именно считается одним клиентом.
Как один клиент превращается в четыре записи
Возьмём обычный маршрут заказа. Человек оставил заявку на сайте, потом написал в мессенджер, менеджер выставил счёт в учётной системе, склад записал адрес в свою таблицу. Четыре касания — четыре записи, и ни одна из систем не знает, что речь об одном человеке. Причина не в халатности: у каждой системы свой ключ. В CRM это внутренний идентификатор карточки, в учётной системе — ИНН и наименование, в мессенджере — номер телефона, в почте — адрес.
Пока ключи не связаны, «склейка» держится на памяти менеджера. Это работает, пока клиентов десятки и менеджер один. На сотнях карточек память кончается, и появляются симптомы, которые обычно замечают поздно: клиент говорит «мне уже звонили», а в CRM он числится новым.
Шесть источников дублей, которые встречаются чаще всего
- Импорт из файла: выгрузили старую базу, залили рядом с новой — совпадения никто не проверял.
- Интеграции: каждая форма на сайте, телефония и чат создают запись, даже если клиент уже есть в базе.
- Разные написания одного и того же: «+7 (910) 582-82-06», «89105828206» и «8 910 582 82 06» — три карточки.
- Несколько отделов или филиалов: у каждого своя база и свой взгляд на то, кто «их» клиент.
- Смена данных клиента: новая фамилия, адрес или паспорт обновились не во всех системах.
- Разные роли одного лица: физлицо и ИП, плательщик и получатель — формально разные записи.
Сколько дублей бывает на самом деле
Публичные оценки расходятся в разы, потому что считают разное: одни — долю новых записей, другие — долю всей базы. По данным Plauti, которая в 2021 году разобрала больше 12 млрд записей в Salesforce своих клиентов, дубликатами оказались более 45% новых записей; у записей, приходящих из интеграций — маркетинговых сервисов и веб-форм, — доля доходила до 80%, у импортируемых файлов была заметно ниже — 19%. Это данные вендора по своему пулу клиентов и одной платформе, а не отраслевой стандарт.
Второй ориентир — разбор реальной базы amoCRM на 318 тыс. контактов, описанный интегратором в 2022 году. Предварительная оценка давала около 10% дублей, после скриптовой проверки и ручного разбора нашли и объединили 73 тыс. записей — почти четверть базы. Ещё одна цифра оттуда же объясняет, почему тему не откладывают: при слиянии двух банков пересечение клиентских баз доходит до 10%, а внутри систем дублирование бывает заметно выше.
Что дубль делает с процессом
Сам по себе лишний ряд в таблице безобиден. Вред появляется, когда на запись опирается действие: звонок, счёт, задача, рассылка. Тогда дубль умножает не данные, а работу — и делает это незаметно, потому что каждая из копий выглядит нормально.
- Клиент получает два звонка с одним предложением и делает вывод о компании, а не о базе.
- Менеджеры разных отделов ведут одного клиента параллельно: время потрачено дважды, между людьми — конфликт.
- Автоматика срабатывает на каждой карточке отдельно: два письма, два счёта, две задачи на склад.
- Аналитика врёт вверх: клиентов «больше», повторные продажи «растут», конверсия искажена.
- Растут расходы на сам учёт: в разобранном кейсе дубли упирались в лимиты тарифа, и компании пришлось бы докупать 15 лицензий — около 150 тыс. рублей в год.
Последний пункт обычно и запускает проект. Пока платить не пришлось, дубли кажутся косметикой; как только счёт приходит, выясняется, что проблема не в тарифе, а в правилах ввода, которые не менялись годами.
Единый ключ: что считать главным идентификатором
Порядок начинается с ответа на вопрос: по какому признаку мы считаем, что это один и тот же клиент? Универсального ответа нет, есть иерархия надёжности. И главное: внутренний идентификатор должен быть свой, не зависящий от телефона или почты, — иначе смена номера снова разорвёт историю.
| Признак | Надёжность | Где ломается |
|---|---|---|
| Телефон в едином формате | Высокая, если нормализован | Меняется; бывает общим у семьи или в офисе |
| Email в нижнем регистре | Средняя | Корпоративные адреса общие у нескольких сотрудников |
| ИНН для юрлиц | Высокая | Есть не у всех клиентов, бывают опечатки |
| ФИО и дата рождения | Низкая | Тёзки и однофамильцы совпадают полностью |
| Внутренний ID системы | Высокая внутри одной системы | Между системами не связан — это и есть исходная проблема |
Рабочая схема — два уровня. Первый: внутренний мастер-ключ, который присваивается один раз и не меняется никогда. Второй: набор атрибутов для сопоставления — нормализованный телефон, почта, ИНН — по которым новая запись ищет свою пару. Как такой контур устроен в проектах, разобрано в разделе подход.
Порядок наведения: правила, чистка, сверка
Интуиция подсказывает начать с чистки: взять выгрузку, найти дубли, слить. Через полгода они возвращаются, потому что вход не изменился. Правильный порядок обратный: сначала правило на входе, потом разовая чистка уже по этому правилу, потом регулярная сверка.
- Инвентаризация: перечислить системы, где живут клиенты, и ключ каждой из них.
- Нормализация на входе: телефон в один формат, почта в нижнем регистре, обрезанные пробелы.
- Запрет на создание: система ищет совпадение до сохранения и предлагает существующую карточку.
- Пилот на выборке 1–2 тыс. записей: проверить правила на живых данных и вручную разобрать спорные пары.
- Разовая чистка с журналом: что с чем склеено, кто подтвердил, как откатить.
- Регламент владения полями: у каждого ключевого поля один источник правды, остальные системы его принимают.
- Регулярная сверка и метрика: доля дублей, доля записей без ключа, число слияний за период.
Как измерить долю дублей за один день
Полная сверка «каждый с каждым» не нужна и не по средствам: в разборе на Хабре приведён расчёт, где сравнение двух баз по миллиону записей даёт триллион операций — почти 12 дней непрерывной работы даже при микросекунде на сравнение. Поэтому считают не всё, а выборку: берут 1–2 тыс. записей, нормализуют ключ, группируют по нему и смотрят долю групп больше одного. Этого достаточно, чтобы понять масштаб и защитить бюджет проекта.
Полная чистка по тому же принципу занимает часы, а не месяцы: в кейсе с 318 тыс. контактов скриптовая проверка шла больше 30 часов, зато ручное объединение, по оценке исполнителей, заняло бы больше месяца и остановило бы остальные работы. Разница между «посчитать» и «склеить» — в проверке пар человеком: её нельзя ускорить, можно только сузить.
Где остаётся человек
Склейка необратима, поэтому автоматизация здесь готовит, а не решает: находит пары, считает уверенность, показывает различия полей и предлагает, какую карточку оставить. Человек подтверждает спорные случаи и отвечает за результат. Всё остальное — нормализация, поиск совпадений, блокировка повторного создания, журнал слияний — делается машиной без участия людей и без риска.
Связка с соседними темами: как устроен обмен между CRM и каналами — в статье про связку CRM и мессенджеров; с чего начинать описание процесса — в материале про карту бизнес-процесса. Посмотреть, как это выглядело в проектах, можно в разделе кейсы, состав работ — в разделе услуги.
Хотите узнать, сколько дублей в вашей базе и что исправить первым? Начнём с разбора систем и ключей.
Получить диагностикуИсточники
- Plauti. 80% of all new integration data in CRMs is duplicate (архивная копия статьи, январь 2022) — анализ более 12 млрд записей Salesforce за 2021 год: свыше 45% новых записей — дубликаты, у интеграций — 80%, у импорта — 19%; данные вендора по своему пулу клиентов
- PRO CRM: как нашли 73 тысячи дублей из 318 тысяч контактов в amoCRM (vc.ru, 12.10.2022) — описание проекта: 318 тыс. контактов, предварительная оценка 10% дублей, по факту 73 тыс. объединённых записей, проверка скриптом более 30 часов, риск докупки 15 лицензий примерно на 150 тыс. рублей в год
- HFLabs на Хабре. Поиск дубликатов в клиентском MDM на миллиард записей (01.10.2024) — устройство поиска дублей в банковском MDM: отсутствие единого ID между системами, пересечение клиентских баз при слиянии банков до 10%, оценка стоимости сравнения «каждый с каждым»