Segment Evaluation Methods in AEP
06 Aug 2023 » Platform
I have explained a few times that the main purpose of the Adobe Experience Platform (AEP) is to create segments. With AEP’s promise to be a real-time engine, it makes sense that segment evaluation is also real-time. In other words, as soon as a profile matches a segment definition, it qualifies for it and it is sent to the destination for activation. However, there are some nuances that you need to be aware of before you start creating segments.
Segmentation in AEP
I have already written about segmentation in AEP. In that post, I focused more on how to create a segment in AEP. I briefly documented the 3 evaluation methods, without getting into too many details. In this post, I will zoom in on this topic.
To do so, let me remind you once more of the reference architecture diagram that I am using.
As you can see, the segmentation capability is in the Real-Time Customer Profile (RTCP) and the Edge Network. Combining this with the speed at which AEP receives data, we get 3 types of segmentation: edge, streaming and batch.
I have not explained yet the Edge Network but, in summary, it is the collection of servers that interact with the AEP Web SDK, the AEP Mobile SDK, and the AEP Edge Network Server API. The data received by the edge network is usually referred to as clickstream data.
The typical use cases for this type of segmentation is same page or next page personalization:
- The Web or Mobile SDK makes a call to the edge
- Segments are evaluated on the edge
- The edge calls Adobe Target, including these segments
- Adobe Target uses this information to find the best experience for this particular visitor
- The experience makes it all the way back to the browser of the app
- The experience is rendered
Therefore, the natural expectation is that these segments are real-time, and based on clickstream and profile data. To achieve this expectation, the complexity of these segments must be fairly low. You have all combinations supported by the Edge in the edge segmentation query types help.
Let me clarify something. I have just mentioned profile data. However, this does not mean that there is a copy of the whole RTCP on every Edge. That would make the Edge Network too big. What really happens is that the Edge requests an assembled profile to RTCP, which we call a projection. This projection is cached and used in edge segmentation.
The streaming segmentation engine is conceptually very similar to the edge segmentation engine. You can think of the edge segmentation engine as a specialized and simplified version of the streaming segmentation engine on the edge.
The idea is that if you have data sources that send data in real-time to AEP, profiles should qualify for segments as soon as new data is received. As with edge segmentation, there is a limited set of streaming segmentation query types. Remember that it is also possible to send the clickstream data to the core, where it is treated as another streaming data source. If you have RTCDP and the destination is also real-time, profiles can be sent for activation soon after qualification.
Any segment definition that does not fall into any of the segmentation query types for edge or streaming, will fall into this last option: batch segmentation. They are evaluated every 24h, with an optional schedule.
You may be tempted to think that, since it says “batch”, it uses the data lake. This is not correct: the data still comes from RTCP. There is no such thing as a data lake segmentation engine. To achieve something similar, you will need Data Distiller.
To summarize the post I have created the following table:
|Evaluation speed||Real time||Real time||Batch (24h)|
|Real-time data||Clickstream data||All streaming data||N/A*|
|Profile||Profile projection||Full RTCP data||Full RTCP data|
* The batch segmentation engine can use real-time data, but it will not produce real-time segment qualifications
After reading this post, you may be wondering whether a segment can only be used depending on its evaluation method. In other words, whether edge segments are only available on the edge and streaming/batch only in the core. Fortunately, this is not the case. All segments are available in all locations. For example, a batch segment is available on the edge too. This is because there is something called segment membership: profiles have a hidden array with all the segments that they qualify for.
I hope it is obvious by now that there is no guarantee of real-time qualification for edge and streaming segments used in the core and on the edge respectively. Batch segments are always batch (Captain Obvious at his finest ).