SST Enhancement

To support enhanced user profile enrichment across the platform, both Pixel Listener and DI API data sources must be configured to accept and map key identity and demographic attributes. This section ensures consistent and accurate user data updates within the profile system for each campaign.

This section involves inserting mapping configurations into the DMPCampaignDataSourceMapping table. These mappings define how specific attributes from incoming JSON payloads—such as customer_id, email, phone, name, and location details—are extracted and used to update user profiles.

  • For Pixel Listener data sources, attributes are typically extracted from the properties or otherIds JSON objects. Mappings include:
    • customer_id (from multiple possible keys)
    • email, phone (from otherIds)
    • name (from properties)
  • For DI API data sources, mappings are set for attributes like:
    • FIRST_NAME, LAST_NAME, email, mobile (encrypted or hashed fields)
    • CITY, STATE, COUNTRY, and customerId

Each mapping entry requires the associated DataSource ID from the DMPCampaignDataSource table and the corresponding Attribute ID from the DMPCampaignDataDictionary table. Once mappings are defined, changes are committed to the database, allowing the ingestion pipeline to correctly identify and update user profiles using incoming event data.

Configure attribute mapping for Pixel Listener Data Source

To configure attribute mapping for Pixel Listener Data Source, follow the steps below:

  1. Open your SQL client, and run the following query to accept customer_id and map to profile, replacing <DataSourceId> and <AttributeId> with actual values:
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    
    VALUES (<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__customer_id", "alternate_keys":["properties__userId","otherIds__customerId", "otherIds__customer_id"]}');
    commit;
  2. Accept and map email and phone from otherIds, and run the following insert statements:
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES (<DataSourceID>, <AttributeId>, 0, 'UPDATE', '{"input_col": "otherIds__email"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES (<DataSourceID>, <AttributeId>, 0, 'UPDATE', '{"input_col": "otherIds__phone"}');
  3. Accept and map name from properties, and run this insert statement:
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES (<DataSourceID>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__name"}');
    commit;

Configure attribute mapping for DI API Data Source

To configure attribute mapping for Pixel Listener Data Source, follow the steps below:

  1. Map identity and profile attributes from properties JSON, and replace <DataSourceId> and <AttributeId> in each of the following statements:.
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__FIRST_NAME"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__LAST_NAME"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "hashed_email"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "hashed_mobile"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__CITY"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__STATE"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__COUNTRY"}');
    
    INSERT INTO DMPCampaignDataSourceMapping (DMPCampaignDataSourceId, DMPCampaignDataDictionaryId, IsMandatory, ProfileUpdateFunction, Metadata) 
    VALUES ((<DataSourceId>, <AttributeId>, 0, 'UPDATE', '{"input_col": "properties__customerId"}');
    
    commit;