Blueshift creates unified, comprehensive profiles of each customer by aggregating data from across all customer touchpoints. The customer profile contains explicit attributes (standard and custom) that are based on the data sent to Blueshift by you, attributes that are derived from the customer data collected, and predictive attributes that are computed using Blueshift’s AI-powered predictive models.

Blueshift supports multiple ways of importing customer data. After you import customer data into your Blueshift account, Blueshift can easily build a 360 degree view of all your customers.

Import methods

You can send customer data to Blueshift using any of the following methods:

data_customers_dec23.png

Bulk Upload
Upload CSV from UI Upload customer data using a CSV file.
From Amazon S3

Upload customer data using a CSV file saved in an Amazon S3 bucket.


Blueshift recommends that you use this method when possible as you can get high throughput with this upload job. Blueshift can process around 1M users/hr and the background job also takes care of retries.

Configure the job to run hourly/daily/weekly. When the upload is done, you will get an email with the upload status.

From Snowflake

With the integration of Blueshift and Snowflake, you can import customer data into your Blueshift account very easily.


Before you can import data from Snowflake you must set up integration of Blueshift with Snowflake and configure at least one adapter.

Customer Lists Upload a list of customers from the UI in the form of a .txt file.
via Integration Platforms Using these Reverse ETL platforms you can easily copy data from your data warehouse into Blueshift so that your marketing teams can leverage that data to drive action and personalize customer experiences.
APIs Use Blueshift's APIs to send customer data to Blueshift.
Historical Data Import historical customer data in CSV format into Blueshift to help build a better profile of your customers.
Data Stream
API Use Blueshift's APIs to send customer data to Blueshift.
Data platforms Import events data from these data platforms and use the data to update customers.
eCommerce Import events data from these  e-commerce stores and use the data to update customers.

Historical data

You can import historical customer data in CSV format into Blueshift to help build a better profile of your customers. For more information, see Historical Data.

Data types supported

Blueshift supports the following data types:

  • String
  • Integer
  • Date
  • Decimal
  • Boolean data types
  • Array
  • Object (via Snowflake only)

Importing semi-structured data

If you are importing customer data from Snowflake, you can import nested data. Consider the following points to understand the types of nested data that can be imported and how it can be used in Blueshift.

1. Simple objects (JSON with no hierarchy or nesting)

You can import Simple JSON data that does not have any hierarchy or nesting. This data can be used for Segmentation and Trigger filters.

{
"Key1":"Value1",
"Key2":"Value2",
"Key3": Value3
}
For example:

{
"House_number": 2,
"Street_name": "Woodbridge Road",
"Locality": "Kesgrave",
"City": "Ipswich"
}

2. Array of primitive data types

You can import arrays of primitive data types. This data can be used for Segmentation and Trigger filters.

[
Value1,
Value2,
Value3
]
For example:

[
"Table",
"Chair",
"Monitor",
]

3. Array of objects

When you import an array of objects, the array is flattened and the data is stored at each key level. If the same key is present in each object, then the key will be stored with multiple values. As a result, during a segmentation or trigger filter query, the results might not provide an accurate result.
Consider the following example:

[
{
"Key1":"Value1",
"Key2":"Value2",
"Key3": Value3
},
{
"Key1":"Value4",
"Key2":"Value5",
"Key3": Value6
},
]
For example:

[
{
"House_number": 2,
"Street_name": "Woodbridge Road",
"City": "Princeton",
"State": New Jersey
},
{
"House_number": 36,
"Street_name": "Benedict Avenue",
"City": "White Plains",
"State": "New York"
}
]

In this example, when the array is flattened, the data is stored as follows:

House_number: {2, 36}
Street_name: {Woodbridge Road,Benedict Avenue}
City: {Princeton,White Plains}
State: {New Jersey, New York}

During segmentation if you run a query for “Street_name=Woodbridge Road AND City=White Plains”, a match will be returned, whereas it does not necessarily match with a single object within the array exclusively.

Note: You can make each object exclusively referenceable by declaring the target datatype as Nested Object. Contact support@blueshift.com for more information.

4. Nested Objects

When you import nested objects, each key is stored as one node. Objects with one level of nesting can be used in segmentation and trigger filters. 

Objects having more than one level of nesting would not be accessible for segmentation or trigger filter conditions.

{
"Outer Key1" : {
    "Inner Key1": "Inner Value 1",
    "Inner Key2": "Inner Value 2"
               },
"Outer Key2": [
     {
     "Inner Key3": "Inner Value 3",
     "Inner Key4": Inner Value 4
     },
    {
    "Inner Key3": "Inner Value 5",
    "Inner Key4": Inner Value 5
    }
    ]
"Outer Key3": Outer Value 1
}
For example:

[
{
“Address”: 
{
"House_number": 2,
"Street_name": "Woodbridge Road",
"City": "Princeton",
"State": New Jersey
},
},
{
“Address”:
{
"House_number": 36,
"Street_name": "Benedict Avenue",
"City": "White Plains",
"State": "New York"
},
}
]

Considerations

Consider the following points about importing customer attributes into Blueshift:

  • When you import customer attributes, you can set the data type for any custom attributes in the import task.
    Important: You cannot change the data type for a custom attribute once it is imported. If you have accidentally set the incorrect data type for a custom attribute, create a new attribute and re-upload customer data.
  • To update the value of any customer attributes, you must upload the data by using any of the import methods. Customer attributes cannot be updated from the customer profile.
  • Attributes with data type as Boolean cannot be set to a NULL or blank value and must be set as either true or false (lower case). If you require an attribute to have a blank value, use the String data type instead of a Boolean data type.
  • Direct importing of arrays is supported via Snowflake only. When you import customer attributes using a CSV file, use the String data type to import an array.
    For example:
    customer_id,email,flowers
    549765,jane.doe@demo.com,"[""Rose"",""Lotus"",""Jasmine""]"
  • When an array is imported, it is stored as a String. When you are segmenting, you can use "contains" or "equal to any of these" to get the values from the array. 
  • Dates must be in ISO8601 format. For example, 1980-05-19T15:22:01-07:00. 
    • Date can be converted in an Excel file by using a function to add (=A2+TIME(8,0,0) ) or subtract hours (=A2-TIME(8,0,0)) so the time is represented in the UTC time. Replace A2 with the cell of the date you are converting. Please note that this is good for one time uploads as it does not take into account daylight savings for ongoing file uploads. For example: yyyy-mm-ddThh:mm:ss-05:00 for Eastern (Est) timezone. Converting time = A2,5,0,0 will add 5 hours to the time converting EST timezome to UTC.
    • You can also format the date in Excel using custom format to convert the date to ISO8601 format yyyy-mm-ddThh:mm:ss+/-00:00. Replace +/-00:00 with the time zone offset for your timezone.
  • Phone numbers must follow the E.164 standard, contain 6 to 14 digits, and not start with a 0. The phone number must include the country code and start with a +.
    For example, for the subscriber number 4085552346 with Country code 1, the E.164 format is +14085552346. For the subscriber number 2071234567 with Country code 44, the E.164 format is +442071234567.
  • The email cannot have more than 256 characters.
    For an email address username@subdomain.topleveldomain.com, the following email syntax is acceptable according to RFC standard:
    • The username can have a maximum of 64 characters and can consist of any combination of alphabetic characters, digits, or any of the following special characters: ! # $ % & ‘ * + – / = ? ^ _ ` . { | } ~
    • The topleveldomain can have a maximum of 63 characters, cannot be all numerics and cannot start or end with a hyphen.
    • The subdomain can have a maximum of 64 characters.
    • The domain (for example .com, .gov. .edu and so on) can have a maximum of 63 characters.
  • In order to update customer attributes with the information contained in a custom event, the Enable user updates option must be set for a custom event.
    Note: The Enable user updates option is not available for standard events.

Attributes to import

For a list of customer attributes supported by Blueshift, see Customer Attributes and Types.

You can also include custom attributes as required. Any custom attributes you import can be used to filter customers during segmentation. Ensure that you use the correct data types when you send the custom attributes, since the data types determine how you can filter customers in segments.

Standard attributes

We recommend that you upload the following attributes for your customers.

Attribute Description Examples
email Email address of a customer to uniquely identify the customer. "johndoe@sometestemail.com"
customer_id Customer ID of a customer to uniquely identify the customer. "12341j234klkhj1234l1kj3"
firstname First name of a customer (optional). "John"
lastname Last name of a customer (optional). "Doe"
gender

Gender of a customer (optional).


Must be one of the following:

  • male
  • female
  • unknown

"male"

"female"

"unknown"

joined_at

Date when a customer joined your site in iso8601 format.


if you do not include joined_at attribute when you upload customer data, the joined_at date is set as the upload date.

"2016-02-02T04:19:42Z"
unsubscribed

Subscription status of a customer in boolean format (optional). Set it true if a customer has unsubscribed from a mailing list.

The value for this attribute can be true or false and must be in lower case.

true

false

unsubscribed_at Date when a customer unsubscribes from a mailing list in iso8601 format (optional). "2016-02-02T04:19:42Z"
email_hard_bounced Automatically updated boolean value when an email hard bounce occurs.

true

false

email_spam_reported Automatically updated boolean value when a customer marks your email as spam via the ISP.

true

false

phone_number

Phone number of the customer including the country code to send SMS messages (optional).

The phone number must follow the E.164 standard.

+14085552346
device_ids Mobile device identifiers of a customer's device (optional). ["1234ABCD-4321DCBA","2345EDCB-5432BCDE"]
device_tokens Mobile device tokens of a customer's device to push notifications (optional). ["123abcd", "321cdba"]
birth_year Year of birth of a customer (optional). 2001
birth_month Month of birth of a customer (optional). 12
birth_dayofmonth Day of birth of a customer (optional). 10

Update customer IDs

Customer IDs are primary identifier's in Blueshift. If you want to update a customer_id then you can use the UI to upload a CSV file with the following attributes:

Attributes:

  • customer_id: The old customer_id in blueshift
  • bsft_new_customer_id: The new customer_id for the user

Sample File:

customer_id bsft_new_customer_id
OLD12 NEW12
OLD34 NEW34

CSV file to upload data

For some bulk upload methods, you must prepare a CSV file that contains the customers data. The file must be in Unicode (UTF-8), Unicode (UTF-16), or Western Europe (ISO-8859-1) format.

When you create a task, you can click Download Sample CSV to get the sample data file.

userupload_csv.png

File size

Files up to 3GB can be uploaded via the dashboard. For larger files, coordinate with your Blueshift Success Manager to determine the most optimal process.

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.