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.
Solved! Go to Solution.
Views
Replies
Total Likes
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
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
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
@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
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.
Views
Replies
Total Likes
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.
Views
Replies
Total Likes
Hi @Danny-Miller,
This is the error I am running into. The schema is the default schema with exporting a dataset from query service.
Views
Replies
Total Likes
Hi Danny,
We are trying to do the same as mentioned above however when we export the dataset to our External DB. We have to distinguish the Class of the schema and dataset in order to leverage, but what is an AdHoc schema/dataset which is the Class Adobe creates and how does that effect the segmentation we are also looking to leverage against the exported identityMap dataset following the instructions above?
Views
Replies
Total Likes
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
Views
Likes
Replies