Create and ingest customer data into Customer Profiles
You can define data from any source using Amazon S3 and seamlessly enrich a customer profile without the need for custom or pre-built integrations. For example, say you want to provide agents with relevant purchase history information. You can import purchase transaction data from an internal application into a spreadsheet file on S3 and then link it to a customer profile.
To set this up, you need to define an object type mapping that describes what the custom profile object looks like. This mapping defines how fields from your data can be used to either populate fields in the standard profile or how it can be used to assign the data to a specific profile.
After you create the object type mapping, you can use the PutProfileObject API to upload the custom profile data from your CRM into the custom profile object.
Note
Customer Profiles does not support ingesting data from CSV headers that contain dot notation.
For a list of the required IAM permissions needed for Customer Profiles to access data from the
Amazon S3 bucket for data mapping, see PutProfileObject
in the table in Actions defined by Amazon Connect Customer Profiles.
Customer Profile ingestion
Ingesting account-based profiles
-
Upload data files to S3. Ingestion for profiles referenced in account-profiles and the account-profiles itself should happen separately.
-
The new file used for account-profile ingestion should include new attributes: profile type and engagement preferences for email and phone.
-
Ingest files from S3 to Customer profile by using AWS console
Sample Profiles (referenced in the following account-based profiles) CSV
FirstName LastName PersonalEmailAddress PhoneNumber State CustomerId ProfileType Sam Joe sam@example.com 1111111111 WA 456 PROFILE John Doe john@example.com 2222222222 IL 789 PROFILE Sally Doe sally@example.com 3333333333 OR 111 PROFILE Sample account-based profiles CSV
AccountId ProfileType PrimaryOwner SecondaryOwner EmailEngagementPreferences PhoneEngagementPreferences ACC111 ACCOUNT_PROFILE Sam Joe John Doe [{"KeyName":"CustomerId","KeyValue":"456","ContactType":"PersonalEmailAddress"},{"KeyName":"CustomerId","KeyValue":"789","ContactType":"PersonalEmailAddress"}] [{"KeyName":"CustomerId","KeyValue":"456","ContactType":"PhoneNumber"},{"KeyName":"CustomerId","KeyValue":"789","ContactType":"PhoneNumber"}] ACC112 ACCOUNT_PROFILE John Doe Sally Doe [{"KeyName":"CustomerId","KeyValue":"111","ContactType":"PersonalEmailAddress"}] [{"KeyName":"CustomerId","KeyValue":"111","ContactType":"PhoneNumber"}] Example of engagement preferences with Email:
[ {"KeyName": "CustomerId", "KeyValue": "456", "ContactType": "PersonalEmailAddress"}, {"KeyName": "CustomerId", "KeyValue": "789", "ContactType": "PersonalEmailAddress"} ]
Example of engagement preferences with Phone:
[ {"KeyName": "CustomerId", "KeyValue": "456", "ContactType": "PhoneNumber"}, {"KeyName": "CustomerId", "KeyValue": "789", "ContactType": "PhoneNumber"} ]
-
Create two data mappings - one for sub-profiles and one for account-based profiles.
-
Next, map customer profile attributes. Note the destination called
ProfileType
.Sample object-type mapping for ingesting profiles referenced in account-based profiles
{ "AllowProfileCreation": true, "Description": "Standard Profile Object Type", "Fields": { "FirstName": { "ContentType": "STRING", "Source": "_source.FirstName", "Target": "_profile.FirstName" }, "LastName": { "ContentType": "STRING", "Source": "_source.LastName", "Target": "_profile.LastName" }, "PhoneNumber": { "ContentType": "PHONE_NUMBER", "Source": "_source.PhoneNumber", "Target": "_profile.PhoneNumber" }, "PersonalEmailAddress": { "ContentType": "EMAIL_ADDRESS", "Source": "_source.PersonalEmailAddress", "Target": "_profile.PersonalEmailAddress" }, "State": { "ContentType": "STRING", "Source": "_source.State", "Target": "_profile.Address.State" }, "CustomerId": { "ContentType": "STRING", "Source": "_source.CustomerId", "Target": "_profile.Attributes.CustomerId" }, "ProfileType": { "ContentType": "STRING", "Source": "_source.ProfileType", "Target": "_profile.ProfileType" } }, "Keys": { "CustomerId": [ { "FieldNames": [ "CustomerId" ], "StandardIdentifiers": [ "PROFILE", "UNIQUE" ] } ] } }
-
Repeat the process to ingest account-based profiles. Note EngagementPreferences.Email and EngagementPreference.Phone.
Sample object-type mapping for ingesting account based profiles
{ "AllowProfileCreation": true, "Description": "Account-based profiles Object Type", "Fields": { "AccountNumber": { "ContentType": "STRING", "Source": "_source.AccountId", "Target": "_profile.AccountNumber" }, "PrimaryOwner": { "ContentType": "STRING", "Source": "_source.PrimaryOwner", "Target": "_profile.Attributes.PrimaryOwner" }, "SecondaryOwner": { "ContentType": "STRING", "Source": "_source.SecondaryOwner", "Target": "_profile.Attributes.SecondaryOwner" }, "ProfileType": { "ContentType": "STRING", "Source": "_source.ProfileType", "Target": "_profile.ProfileType" }, "EmailEngagementPreferences": { "ContentType": "STRING", "Source": "_source.EmailEngagementPreferences", "Target": "_profile.EngagementPreferences.Email" }, "PhoneEngagementPreferences": { "ContentType": "STRING", "Source": "_source.PhoneEngagementPreferences", "Target": "_profile.EngagementPreferences.Phone" } }, "Keys": { "Account": [ { "FieldNames": [ "AccountNumber" ], "StandardIdentifiers": [ "PROFILE", "UNIQUE" ] } ] } }
-
Create two data source integration that will each create a mapping based off the relationship described. For example, accounts/profiles.
Note
-
Ingesting account-based profiles should only happen after verifying successful ingestion of profiles referenced in account-based profiles by using the SearchProfiles API or Profile metrics in the Amazon Connect Customer Profiles console.
-
Auto-generate mapping doesn't work for ingesting account-based profiles and it's sub-profiles.
-
Email and phone list of contact preferences can either have
KeyName
andKeyValue
orProfileId
to reference child profiles.KeyName
should be the unique identifier. -
Updates to sub-profiles doesn't update the engagement preferences in account-based profiles. Updates have to be through ingestion path.