Skip to main content

Merging multiple profiles

Description

Combining multiple profiles into a new profile or existing one.

caution
  • The profiles generated by merging are not imports. Import trigger does not work on them.
  • Email: localhost - as an absent field, it is created if necessary and is not copied to another profile.
  • Not localhost email is copied like any other field, but in order to avoid any conflicts, it disappears from the source profile, changes to empty (that is, localhost).

URL

Method: POST

https://example.com/api/v1.1/profiles/merge

Request parameters

ParameterTypeExampleRequiredDescription
tokenstring"abcdefghijklmnqrstuvwxyz"YesAPI token
dataJSON object
"data":{
   "_fname": "John",
   "_lname": "Doe"
}
NoProfile data that will change after merging
db_idint1YesDatabase ID
skip_triggersbooltrueNoSkip trigger events
By default – false
sourcearray
"source": [
   {
      "db_id": 1,
      "email": "test1@mail.ru"
   },
   {
      "db_id": 2,
      "email": "test2@mail.ru"
   }
]
YesContains matching data about the profiles to be merged
destinationJSON object
"destination":{
      "db_id": 3,
      "email": "test3@mail.ru"
}
YesContains the matching data of the profile resulting from the merge
matchingstring"email"
"email_profile"
"email_sub"
"phone"
"phone_sub"
"profile_id"
"push_sub"
"custom"
"custom_sub"
"email_phone"
"email_phone_sub"
No, if matched by email from the profile or subscriptionsProfile matching mode
By default - email

For each type of matching, certain fields must be passed in the request body. Learn more about these fields here.
field_namestringcustom_IDYes, if
"matching": "custom"
Name of custom database field if matching : custom . In the data collection form, a field with the same name is required for search.
field_valueint/stringcustom_stringYes, if
"matching": "custom"
Value of custom database field if matching : custom .
subscriptions
booltrueNoCopy and merge subscriptions. Subscriptions to resource categories and data from subscription fields will also be copied.
By default – true
historybooltrueNoCopy history and activity flags
By default – true
static_segments
booltrueNoWhether to make changes to static segments or not (source-profiles will leave the segments, and destination-profile will enter)
By default – true
overwritebooltrueNoWhether to copy the fields of source profiles or not.

If the destination profile has empty fields, in any case, these fields will be filled with the profile fields the priority of which is the highest.
deletebooltrueNoWhether to remove source profiles after merging or not

Copying profile fields

moving(1).png

Request example

{
"matching": "custom",
"field_name": "field_1",
"source": [
{
"db_id": 1,
"field_value": "1",
"data": {
"_fname": "Profile1",
"_lname": "LnameProfile1"
}
},
{
"db_id": 1,
"matching": "email",
"email": "test2@mail.ru",
"data": {
"_fname": "Profile2",
"_lname": "LnameProfile2"
}
}
],
"destination": {
"db_id": 2,
"matching": "email",
"email": "test3@mail.ru",
"data": {
"_fname": "Profile3",
"_lname": "LnameProfile3"
}
},
"subscriptions": true,
"static_segments": true,
"history": false,
"token": "abcdefghijklmnqrstuvwxyz"
}

Response example

{
"destination_id": {
"db_id": 2,
"profile_id": "60a7855930b8bc8535b2acfb"
},
"error": 0,
"error_text": "",
"source_ids": [
{
"db_id": 1,
"profile_id": "60a7839330b8bc86a5bc5f62"
},
{
"db_id": 1,
"profile_id": "60a7845230b8bc8535b2acf7"
}
]
}

Response parameters

ParameterTypeDescription
destination_idJSON objectContains data about the profile resulting from the merge:
db_id - database ID
profile_id - profile ID
source_idsJSON objectContains data about merged profiles as a list:
db_id - database ID
profile_id - profile ID
errorintError code
error_textstringError text