Объединение контактов
Импорт, методы трекинга (скрипт), 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