Expand my Community achievements bar.

SOLVED

Is there a way to segment by identityMap?

Avatar

Level 5

Hi there,

 

I noticed that we have profiles that are associated with two or more primary identity CRM IDs. The reason for that is because customer logged into two different CRM IDs with the same ECID so the profiles were stitched together. The impact of this is that when we upload our offline datasets, the value of the latter records from the 2nd account could overwrite the first original correct account. 

 

Is there a way in segment builder to exclude profiles that has multiple CRM IDs as identified in the identityMap? 

 

Thanks.

1 Accepted Solution

Avatar

Correct answer by
Level 5

I was able to create a solution myself. 

 

1) Create a dataset with an existing schema of your's (if you don't want to create a new schema), and enable it for profile

2) Write a query to identify the number of linked IDs to your primary identifier. Structure the query to suit your schema

select struct(CRM_ID, crm_id_cnt`linkedCRMIDCount`) _tenant, struct(now() as createDate) _repo
from (
select identityMap, id `uuid`, cardinality(element_at(identitymap, 'crm_id')) crm_id_cnt  
from (
select *, inline(element_at(identitymap, 'crm_id'))	
FROM profile_snapshot_export_xyz a												inner join (																	select date(max(_repo.CreateDate)) `max_date` 																	from profile_snapshot_export_xyz																 ) b																		on date(a._repo.CreateDate) = b.max_date
) c
) d 
where crm_id_cnt > 1

 

 

3) Schedule your query to output to the dataset you created in #1 (In my case, once daily)
4) Wait for attribute to show up in segment builder after 24 hours. 
 
 

View solution in original post

8 Replies

Avatar

Level 5

@akwankl 

The AEP segment builder UI does not natively support segment rules that directly check for the number of identifiers within an identity namespace. Saying that, there are few ways you can achieve what you want :

You could potentially use Adobe's APIs to pull the profiles, inspect the identityMap, and flag those with more than one CRM ID. Afterward, you could use this flag as a segmentation criterion in the UI.
Another way would be to create a derived attribute that tracks the number of unique CRM IDs for a profile. You could update this attribute using Adobe's APIs or batch ingestion process, and then use that attribute in your segment rules. This would need to be done via back-end processing.
If your organization has access to Adobe's Identity Service, you could potentially use the identity graph to better manage and understand how your ECIDs and CRM IDs are related.

Hope this helps.

Thanks

Madhan

Avatar

Level 5

Hey @adobechat 

 

Just curious on the derived attribute suggestion, can you elaborate more on the execution side of it? ie. what functions do I use, what API are you referring to etc? 

 

As for the identity service, yes my organization has it. The issue is we noticed customers would log into two different CRM IDs with the same browser (maybe logging into parents' and their account) and the two CRM IDs are stitched together to the profile. Then we noticed that the attributes of one profile overwrites the others. Is there a way to clean this?

 

Thanks.

Avatar

Level 2

Yes, you can segment by identity map in Adobe Experience Platform (AEP). The identityMap represents various identifiers associated with a customer, such as an email, mobile number, or customer ID. By leveraging identityMap, you can create segments based on specific identity attributes.

To partition by identity map in AEP, follow these steps:

1. Access the Adobe Experience platform UI and go to the Segmentation workspace.

2. Create a new segment or select an existing segment that you want to edit.

3. In the Segment Builder, drag and drop the "identityMap" attribute onto the canvas.

4. Set the terms based on the identifying attributes you want to segment by. For example, you can specify conditions such as email equals "example@email.com" or customer ID equals "12345".

5. If needed, add any additional terms or criteria to further refine your section.

6. Save the segment and apply it to your intended use cases within the Adobe Experience platform.

Segmentation by Identity Map allows you to target specific individuals or groups based on their unique identifiers. This capability enables you to deliver personalized experiences and engage with customers based on their specific attributes and preferences.

Remember to refer to the Adobe Experience Platform documentation or consult the Adobe Experience Platform forum community for more detailed guidance or help with specific use cases or segmentation scenarios.

Avatar

Employee Advisor

@GardeningBl @akwankl Unfortunately segmenting on IdentityMap is not supported even though you can create a segment on it in the UI.

 

To get a list of Profiles that have multiple CRM IDs, I would query the Profile Snapshot Export.

 

Select

identityMap,

CARDINALITY(identityMap['crm']) as crm_identities_count

FROM

profile_snapshot_export_xxx

where CARDINALITY(identityMap['crm']) > 1

Avatar

Level 5

Hi @Danny-Miller,

 

Thanks, I produced a similar query too. Next question, I was able to schedule and export this into a dataset, but when I tried to activate this to a destination (in my case, Google Cloud Storage) - I can't seem to export it. 

 

In the dataset, the looks like this CRM ID | # of CRMs stitched

 

My intention is to automate this and turn "# of CRMS stitched" into an attribute that I can use in segmentation to prevent campaigns from targeting these profiles.

 

Thanks.

Avatar

Employee Advisor

If your intention is to build segments on it, then just enable the dataset you are putting this in for Profile.  No need to export it.

Avatar

Level 5

Hi @Danny-Miller

 

This is the error I am running into. The schema is the default schema with exporting a dataset from query service.

 

akwankl_0-1689783723316.png

akwankl_1-1689783739574.png

 

 

Avatar

Correct answer by
Level 5

I was able to create a solution myself. 

 

1) Create a dataset with an existing schema of your's (if you don't want to create a new schema), and enable it for profile

2) Write a query to identify the number of linked IDs to your primary identifier. Structure the query to suit your schema

select struct(CRM_ID, crm_id_cnt`linkedCRMIDCount`) _tenant, struct(now() as createDate) _repo
from (
select identityMap, id `uuid`, cardinality(element_at(identitymap, 'crm_id')) crm_id_cnt  
from (
select *, inline(element_at(identitymap, 'crm_id'))	
FROM profile_snapshot_export_xyz a												inner join (																	select date(max(_repo.CreateDate)) `max_date` 																	from profile_snapshot_export_xyz																 ) b																		on date(a._repo.CreateDate) = b.max_date
) c
) d 
where crm_id_cnt > 1

 

 

3) Schedule your query to output to the dataset you created in #1 (In my case, once daily)
4) Wait for attribute to show up in segment builder after 24 hours.