Дубли данных при интеграции двух систем почти всегда происходят по одной из двух причин: отсутствие единого идентификатора для сопоставления записей или повторная обработка одного и того же события.
Определите единый ключ сопоставления
Артикул, телефон, email или внутренний ID — выберите одно поле, которое однозначно определяет запись в обеих системах, и используйте именно его для поиска перед созданием новой записи, а не создавайте всегда без проверки.
Проверяйте перед созданием, а не после
Правильный порядок: сначала запрос «существует ли уже такая запись», и только при пустом результате — создание. Многие интеграции делают наоборот, создавая сразу и разбираясь с дублями постфактум.
Используйте идемпотентные операции там, где возможно
Если API получателя поддерживает операцию «создать или обновить» по ключу (upsert), это снимает часть риска дублирования на уровне самого API, а не только на уровне вашей логики интеграции.
Логируйте каждое сопоставление
Запись о том, какая запись источника была сопоставлена с какой записью получателя, позволяет быстро найти причину, если дубль всё же появился — без лога расследование превращается в гадание.



