Dopasowywanie kontaktów

Dopasowywanie kontaktów automatycznie rozpoznaje, że dwa przychodzące rekordy należą do tej samej rzeczywistej osoby — nawet gdy docierają różnymi kanałami (numer WhatsApp, adres e-mail, ID Instagram). Cel: jeden rekord klienta na osobę, bez duplikatów.

Czym jest dopasowywanie kontaktów?

Dopasowywanie kontaktów (często „identity resolution" lub „wykrywanie duplikatów") to logika, która pozwala platformie zdecydować: „Ta przychodząca wiadomość WhatsApp z +48 600 123 456 należy do tej samej osoby, której e-mail [email protected] już znamy". Wynikiem jest jeden rekord klienta, a nie cmentarz pół-profilów.

Dlaczego dopasowywanie jest niezbędne

Bez dopasowywania szybko kończy się tak:

  • Anna jest na liście e-mail jako [email protected]
  • Anna jest kontaktem WhatsApp pod +48 600 …
  • Anna zapisała się przez formularz newslettera jako „Anna K."
  • Trzy rekordy, jedna realna osoba — bez dopasowywania, wszystkie trzy są adresowane osobno.

Konsekwencje: zduplikowane wiadomości marketingowe, źle wyliczone lifetime value, rozproszona historia obsługi, problemy RODO przy wnioskach osób, których dane dotyczą.

Sygnały dopasowywania

Platformy zwykle używają tych identyfikatorów:

SygnałSiłaUwaga
Numer telefonu (format E.164)Bardzo silnyUnikalny, jeśli formatowany jednolicie.
Adres e-mailBardzo silnyUnikalny, ale literówki się zdarzają.
ID platformy (WhatsApp ID, Telegram ID, handle Instagrama)Bardzo silnyWystawiany przez dostawcę, niezmienny.
ImięSłabyWiele Ann w systemie — przydatne tylko w kombinacji.

Porównanie trzech trybów

TrybCo dzieje się przy kolizjiKiedy stosować
Auto-merge (domyślnie)Istniejący kontakt jest aktualizowany zamiast tworzenia nowego. Starszy kontakt pozostaje podstawowy; brakujące pola są uzupełniane.Domyślnie dla większości MŚP. Daje czysty rekord klienta bez pracy ręcznej.
Zezwól na duplikatyTworzone są oba kontakty. Platforma sygnalizuje w odpowiedzi, że mogą istnieć duplikaty (lista sugestii).Rzadkie — np. konfiguracje marketplace, gdzie każda rejestracja ma być oddzielnym kontem.
Blokuj duplikatyPlatforma odrzuca utworzenie (HTTP 409) i zwraca istniejący kontakt.Gdy chcesz ścisłej unikalności — np. w B2B sales.

Reguły scalania (co dzieje się przy scalaniu)

  • Starszy kontakt pozostaje podstawowy. Oba ID dalej rozwiązują się do ocalałego rekordu.
  • Wygrywają wartości niepuste. Przy konflikcie decyduje starsza data utworzenia.
  • Pola lepkie: is_blocked i is_archived pozostają „true", jeśli którykolwiek z rekordów je miał — scalanie nigdy nie może po cichu odblokować kontaktu.
  • Historia migruje: Rozmowy, wiadomości, notatki, tagi, pola niestandardowe i metody kontaktu lądują u ocalałego.
  • Notatka systemowa w dzienniku audytu: Co zostało scalone, co było w konflikcie — w pełni udokumentowane.

Co dzieje się ze starymi ID

Zewnętrzne integracje, webhooki i CRM-y często odwołują się do starych ID kontaktów. Po scaleniu te stare ID nie mogą zwracać 404. Rozwiązanie: API transparentnie rozwiązuje stary ID na ocalały, dodatkowo zwraca pole merged_from i ustawia nagłówek X-Merged-Into. Istniejące integracje nie psują się.

Przypadek brzegowy kanału: pierwszy kontakt na nowym kanale

Ważny wyjątek: gdy przychodzi wiadomość WhatsApp z numeru, który już znamy — ale kontakt nie ma jeszcze ID WhatsApp —, to nie jest duplikat. To nowa metoda kontaktu na istniejącym kontakcie. Auto-merge stosuje się niezależnie od trybu.

Scalanie ręczne

Nie wszystkie duplikaty są wykrywane automatycznie. Imiona podobne fonetycznie, zamienione miejscami imię/nazwisko, świadomie rozdzielone konta — te wymagają scalania ręcznego. Widok „Znajdź duplikaty" pokazuje kandydatów pogrupowanych po sygnale dopasowywania, z opcją scalania zbiorczego.

Dopasowywanie kontaktów w SendSeven

SendSeven obsługuje wszystkie trzy tryby (Auto-merge domyślnie, Zezwól, Blokuj), nadpisywanie per żądanie przez pole duplicate_mode, ręczne scalanie w UI oraz przez REST API (POST /contacts/{id}/merge). Sygnały dopasowywania to telefon, e-mail, ID platformy i imię (jako słaby sygnał na liście sugestii). Wszystkie scalenia są rejestrowane w dzienniku audytu; stare UUID-y pozostają rozwiązywalne.