Определите единицу учета
Разделите контакт, обращение и заказ. Для технической доставки используйте ID события или внешний ID заказа. Для объединения контактов согласуйте нормализацию телефона и email. Не удаляйте запись только из-за совпадения: сначала выясните, не содержит ли она отдельной договоренности или оплаты.
Далее по теме: Повторные API-запросы в Laravel: как не создавать дубликаты.
Проверьте причину повтора
Сопоставьте время создания, источник, внешний ID и журналы интеграции. Дубль может возникать через повторный клик, retry, два коннектора или ручное внесение. Устраните причину на соответствующем уровне, а не только регулярно очищайте CRM. Во время исправления сохраните связь между основной и повторной записью.
Далее по теме: Офлайн-конверсии Google Ads с CRM: что подготовить к интеграции.
Согласуйте влияние на отчеты
Определите, как дубликаты влияют на количество лидов, продаж и офлайн-конверсии. Не передавайте второй раз результат того же бизнес-события. Для исторических записей сначала подготовьте отчет кандидатов на объединение и проверьте исключения. Массовое удаление по одному полю может уничтожить полезную историю.
Можно ли объединять все заявки по телефону?
Контакты можно сопоставлять по согласованному правилу, но самостоятельные обращения и заказы обычно следует хранить отдельно.