Non-people profiles in AEP

28 Jul 2024 » Platform

Today I am going to explain a trick that I have used once in an Adobe Experience Platform (AEP) implementation. I had a requirement where my customer wanted to personalize based on an entity that was not a person but could be shared by multiple people simultaneously. My solution was to create a schema for this entity. It worked well with this customer, but you need to be very careful and read the warnings and limitations that I will explain below.

The problem

To maintain the privacy of the customer, I am not going to explain the exact scenario that I had to solve. At a high level, the situation is as follows:

  1. A user logs into a website.
  2. The user can access multiple shared assets (more on what I mean by assets below).
  3. The user selects one of the assets and enters a section to manage the asset.
  4. The marketing team wants to personalize the message based on information from the asset that is being managed.

The key here is “shared assets”. This means that multiple people can access the same asset and one person has access to multiple assets. In other words, there is a many-to-many relationship between assets and users and you want to be able to personalize based on the asset or based on the user.

Examples of these assets are:

  • Technology asset. This is a bit niche, very specific to the high-tech vertical. Say that you have a technology provider and you have multiple assets: servers, domains, databases… Not only this but some multiple admins or users access these assets.
  • Joint bank account. It is very common to open bank accounts owned by two or more people, for example, spouses, parents & children, and business owners. At the same time, one person can have multiple bank accounts, some individually, some shared.
  • Household. This is a bit of a stretch, as one person usually belongs to only a household (I am not counting on spouses having a secret life with another partner :wink:). However, in the telco vertical, you could have your family account and your business account, where multiple people have access to each account.

Can you think of other examples?

The solution

In theory, one initial approach could be to create a lookup table and fill it with the shared assets. Then, add an array of references to the profile schema and links to the assets each profile is linked to. On the surface, this may seem like an acceptable solution. However, knowing AEP’s functionality, I can tell you that this is a very bad solution. It would take me a few paragraphs to explain it and I do not want to make this post too long.

Instead, the solution I took was:

  • Create a new schema with all the assets’ attributes that you need for segmentation and, potentially, personalization.
  • Create a new namespace for the assets’ unique identifier.
  • Create the corresponding dataset and populate it with the assets information: households, technology assets, bank accounts…
  • Create segments of assets.

Using the solution

Now that we have the solution in place, we have to use it. This is not as simple as it may seem. Let’s see why.

If you have a standard WebSDK implementation, you cannot just pass the asset’s ID in the sendEvent call or make an additional call sendEvent. Bad things will happen: you will get a profile collapse of the asset’s profile and the user’s profile. As more people access the asset’s UI, more profiles will collapse.

The best way to use this solution is through a server-side implementation for Adobe Target, which is what my customer did. This made the implementation fairly straightforward: once the user gets to the asset’s section in the UI, you make a call to the Edge Server API using only the asset’s unique identifier. This will get you the personalization that you want to show.

You can also send audiences based on assets to a destination. Typically, this destination will be an ESP or a paid media network. However, you will need to process AEP’s output before the audience can be activated. Remember that these destinations need people’s identities, so you will have to do some mapping of identities. As a consequence, you will have to use a file destination in AEP, not the activation channel destination.

  • One option is to export the audience using the asset’s unique identifier. I assume that you have generated these unique IDs, so you can translate them to anything else that is useful for the final destination.
  • A second alternative is to create a field with the concatenation of the identities of all users with access to the asset (with a separator). Then, write a process or ETL to expand this field and adapt AEP’s output to the destination input format.
  • I still have to try the calculated fields feature, but this could be used to export an array of people’s identities. Then, similarly to the previous option, adapt AEP’s output to the destination input format.

You may be tempted to add an email address or any other person’s identity to the asset’s profile and use it to configure the destination in AEP. However, this defeats the whole purpose, as multiple users can access the asset and you will want to target all users, not just one.

In summary, I hope you have realized the complexity of any implementation trying to use this solution.

Other caveats

Unfortunately, there are other things that you need to take into account when using this solution:

  • Increase in number of profiles. This one comes courtesy of Captain Obvious. Besides your regular profiles, now you are adding a bunch of new profiles. You will need to check that your AEP license can handle this increment.
  • More calls. If you are making additional calls to the Edge Network API, this may translate into additional calls to Adobe Target or Adobe Analytics. Check that the corresponding licenses are in line with this increment.
  • Combining non-people and people profiles. I do not have a solution to combine asset and customer profile attributes in a single segment or personalization.
  • Not great for CJM use cases. If you have a Customer Journey Management (CJM) tool, I am not sure you will be able to use the solution described in this post.

I want to finalize with a clarification. I am not trying to convince you to use or avoid this solution. This is just a trick that I used, I wanted to share with you, and you can use it if you encounter the right use case. If you do so, you need to be aware of what this solution entails.

 

Photo by Frans van Heerden



Related Posts