«Ivan@mail.ru» и «ivan@mail.ru» технически разные строки, хотя это один и тот же email — если CRM сравнивает email с учётом регистра, она создаст два разных контакта для одного человека.
Решение — приводите email к нижнему регистру
Перед сохранением и перед поиском существующего контакта конвертируйте email в нижний регистр — почтовые адреса нечувствительны к регистру у подавляющего большинства провайдеров, и сравнение должно это учитывать.
Проверьте, где именно теряется нормализация
Если нормализация есть при сохранении, но нет при поиске (или наоборот), дубли всё равно будут появляться — правило нужно применять последовательно на обоих этапах, а не только в одном месте кода.



