Объединение контактов

Импорт, методы трекинга (скрипт), API-методы (без учета сессий), интеграция с amoCRM

При добавлении контакта с помощью импорта, метода трекинга, API-методов действуют следующие правила:

  • создаем контакт, если он не существует
  • обновляем, если он существует
  • восстанавливаем контакт из удаленных, с сохранением истории и со значениями полей данных, переданные поля данных перезаписываем на те, что переданы в запросе, непереданные не изменяем, но восстанавливаем их значения
  • если переданы емейл и телефон контакта, и обоих идентификаторов нет в базе - создаем новый контакт с емейлом и телефоном
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный емейл, то:
    • если mainChannel = email, то телефон будет добавлен существующему контакту с емейлом
    • если mainChannel = phone, то будет создан новый контакт только с телефоном, емейл сохранится за существующим контактом
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный телефон, то:
    • если mainChannel = phone, то емейл будет добавлен существующему контакту с телефоном
    • если mainChannel = email, то будет создан новый контакт только с емейлом, телефон сохранится за существующим контактом
  • если передан емейл и телефон контакта, и при этом в базе уже есть оба идентификатора, но у разных контактов, то, в зависимости от значения параметра mainChannel, переданные основные поля контакта, поля данных, группы рассылок и теги будут присвоены тому контакту, идентификатор которого равен значению mainChannel

Поп-апы

В случае добавления контакта из поп-апа mainChannel по умолчанию равен email, поэтому действуют следующие правила:

  • создаем контакт, если он не существует
  • обновляем, если он существует
  • восстанавливаем контакт из удаленных, с сохранением истории и со значениями полей данных, имя перезаписываем на то, что передано из поп-апа, непереданные поля не изменяем, но восстанавливаем их значения
  • если переданы емейл и телефон контакта, и обоих идентификаторов нет в базе - создаем новый контакт с емейлом и телефоном
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный емейл, то:
    • при совпадении сессий существующего и нового контакта телефон будет добавлен контакту с емейлом
    • при несовпадении сессий существующего и нового контакта будет создан новый контакт только с телефоном, емейл сохранится за существующим контактом
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный телефон, то:
    • при совпадении сессий существующего и нового контакта емейл будет добавлен контакту с телефоном
    • при несовпадении сессий существующего и нового контакта будет создан новый контакт только с емейлом, телефон сохранится за существующим контактом
  • если переданы емейл, телефон и сессия, и при этом в базе уже есть оба идентификатора, но у разных контактов, то телефон и сессия будут присвоены существующему контакту с емейлом (если у существующего контакта уже была сессия и она отличается от новой, то контакт будет иметь две сессии)
  • если передан емейл и телефон контакта, и при этом в базе уже есть оба идентификатора, но у разных контактов, то переданные основные поля контакта и группы рассылок буду присвоены контакту с емейлом

Работа с учетом сессий (вне поп-апов)

При работе с сессией вне поп-апов действуют следующие правила:

  • создаем контакт, если он не существует
  • обновляем, если он существует
  • восстанавливаем контакт из удаленных, с сохранением истории и со значениями полей данных, имя перезаписываем на то, что передано, непереданные поля не изменяем, но восстанавливаем их значения
  • если переданы емейл и телефон контакта, и обоих идентификаторов нет в базе - создаем новый контакт с емейлом и телефоном
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный емейл, то:
    • при совпадении сессий существующего и нового контакта телефон будет добавлен контакту с емейлом
    • при несовпадении сессий существующего и нового контакта будет создан новый контакт только с телефоном, емейл сохранится за существующим контактом
  • если переданы емейл и телефон контакта, и при этом в базе уже есть переданный телефон, то:
    • при совпадении сессий существующего и нового контакта емейл будет добавлен контакту с телефоном
    • при несовпадении сессий существующего и нового контакта будет создан новый контакт только с емейлом, телефон сохранится за существующим контактом

Ниже с помощью примеров описаны еще несколько сложный кейсов с сессиями, так как общими формулировками невозможно полноценно объяснить логику работы:


Если переданы емейл 1, телефон 1 и сессия 1, при этом в базе существуют два контакта:

  • Контакт 1: емейл 1, сессия 1
  • Контакт 2: телефон 1, сессия 2

в таком случае:

  • если mainChannel = email, то получим:
    • Контакт 1 с полями: емейл 1, телефон 1, сессия 1 и сессия 2
    • Контакт 2 исчезнет
  • если mainChannel = phone, то получим:
    • Контакт 2 с полями: емейл 1, телефон 1, сессия 1 и сессия 2
    • Контакт 1 исчезнет

Если переданы емейл 1, телефон 1 и сессия 2, при этом в базе существуют два контакта:

  • Контакт 1: емейл 1, сессия 1
  • Контакт 2: емейл 2, сессия 2

в таком случае:

  • если mainChannel = email, то будут существовать:
    • Контакт 1 с полями: емейл 1, телефон 1, сессия 1, сессия 2
    • Контакт 2 с полями: емейл 2
  • если mainChannel = phone, то будут существовать:
    • Контакт 1 с полями: емейл 1, телефон 1, сессия 1, сессия 2
    • Контакт 2 с полями: емейл 2

Если переданы емейл 1, телефон 2 и сессия 2, при этом в базе существуют два контакта:

  • Контакт 1: емейл 1, телефон 1, сессия 1
  • Контакт 2: емейл 2, телефон 2, сессия 2

в таком случае:

  • если mainChannel = email, то будут существовать:
    • Контакт 1 с полями: емейл 1, телефон 2, сессия 1, сессия 2
    • Контакт 2 с полями: емейл 2
  • если mainChannel = phone, то будут существовать:
    • Контакт 1 с полями: телефон 1, сессия 1
    • Контакт 2 с полями: емейл 1, телефон 2, сессия 2
Последнее изменение: 2025.09.02 10:38 — Elizaveta Ivannikova