Customer properties synchronization

Accurate, up-to-date customer data is essential for making effective use of Marketing. Bloomreach supports running multiple systems in parallel to maintain customer properties, but this flexibility introduces a risk: without safeguards, some property values can get lost or overwritten by outdated information. This can happen during imports or during postponed tracking by the mobile SDK. Customer properties synchronization prevents this.

Why customer properties synchronization matters

Consider the following example.

An import starts at 8:00 and finishes at 10:00. The import contains a snapshot of your system's data as it looked at 8:00. Because the import takes 2 hours to run, Marketing could receive fresher data through real-time tracking during that window. Without synchronization, the import would overwrite that fresher data with the older snapshot once it completes.

How synchronization works

Customer properties synchronization timestamps every customer update and import. This means Marketing tracks not just a customer's properties, but also the time of each property's last update.

By comparing timestamps during updates, Marketing only overwrites a property when the incoming value is newer:

  • If an update has a newer timestamp, Marketing overwrites the property.
  • If an update has an older timestamp, Marketing keeps the existing (fresher) value.

Update customer properties from the UI

Updates made from the UI automatically include a timestamp—no action needed.

Import customer properties

The mapping step in the import wizard includes an optional field: update_timestamp. It behaves like the timestamp field in event imports, with one difference: it's optional, not mandatory. When you don't include this field, Marketing uses the timestamp from when the import execution started.

The mapping model optionally includes an update_timestamp line:

“properties”: [{
    “from_column”: “meno”,
    “to_property”: “first_name”,
    “type”: “string”
  }],
  “update_timestamp”: {“from_column”: “update_timestamp”},
  “ids”: [{
    “from_column”: “idecko”,
    “to_id”: “registered”
  }],
  “constant_columns”: [],
  “timezone”: “UTC”
}

The from_column field refers to a column in your data containing the update timestamp. It can also reference a constant column. All timestamp formats supported for event imports are also supported for update_timestamp.

Track customer properties via API and SDKs

The Tracking API's customers command accepts an additional optional parameter: update_timestamp. When present, it applies to all properties in that command.

POST /track/v2/projects/00000000-0000-0000-0000-000000000000/batch HTTP/1.1
Content-Type: application/json
Host: example.com

{
   "commands": [
       {"name": "system/time"},
       {"name": "system/cookie"},
       {"name": "customers",
           "data": {
               "customer_ids": {"registered": "mgalik"},
               "properties": {"first_name": "Marian", "last_name": "Galik"},
               "update_timestamp": 1570001049
           }
       }
   ]
}
📘

SDK changes

The Marketing SDK doesn't change with customer properties synchronization. The changes above are sufficient for mobile SDKs to handle offline connections correctly.


Did this page help you?

© Bloomreach, Inc. All rights reserved.