Adobe Journey Optimizer (AJO) is your one stop shop for creating seamless, 1:1 omnichannel experiences. By listening to real-time customer interaction or location events you can now orchestrate 1:1 journeys, leveraging the Real-time Customer Profile along with optional external data sources to deliver the right message within the right channel at the right time.
Let’s begin first with a quick tour of the AJO user interface
AJO menu gives access to everything you need to power your customer experiences: Marketing Campaigns, User Journeys, Offer Engine, Landing Pages, Audiences and much more. Menu items are configurable based on access rights, here you can see (almost) all the menu entries. You can also access all the items through the quick search bar
AJO also comes with a conversational agent called AI Assistant you can use by clicking on the icon in the top right hand corner . There you can ask many questions related to the product itself (eg: What are the best practices for testing and publishing a landing page?) or to get insights about your data (eg: identify the most used journey and assess any performance indicators)
In this chapter, you are going to build your own version of the Luma Purchase Journey where we’ll provide the logic to listen and react to Luma customer interactions during the checkout process.
delaland+p1@adobetest.com - Purchase JourneyThe customer journey canvas is the central point for creating a real-time customer experience. The interface allows you to drag and drop three types of activities:
Events: These are user actions (or actions generated by a third-party system) that arrive in real time in AEP, that you are willing to listen and react.
Orchestration: Useful to apply filtering condition on the incoming population and to delay steps in a journey. The Read Audience activity lets you target an audience previously built, such as the Luma - Blue Luma+ Members audience your profile automatically qualified previously.
Actions: These are the different activities you can leverage to react and send communication to your customer. AJO comes with native activities to send personalized communications through inbound channels (website, in-app, kiosk, connected tvs) as well as outbound channels (email, sms, push notif). Of course you can build your own action if you have specific needs, like interacting with a proprietary channel (like exotic channels, ATM, call center, CRM systems etc).
We will now personalize the Luma conversion path using a journey which will be composed of 2 branches, each one having its own business objective:
First, we’re going to focus on the standard path, from checkout to purchase, that is the path customers are going to follow when they make an online purchase. Basically it consists in:
Our first branch will then look like this:
The first event we are going to use to start the journey is triggered from the checkout page, when the user clicks on Continue button. The event has been configured by the martech team and basically carries the information from the visitors session. You’ll find in this event a json object representing the cart content (product name, price, quantity etc) as well as the customers details. Select the LumaCheckoutEvent_Email from the EVENTS menu and drag and drop it to the canvas.
The second event is triggered by the order summary, when the user clicks on Confirm Order button. The event is also pre configured and ready to use. Select the LumaPurchaseEvent_Email from the EVENTS menu and drag and drop it to the canvas, right after the first event.
Select the LoyaltyService from the ACTIONS menu and drag and drop it to the canvas, right after the second event. Custom actions are very powerful in AJO, they let you send any data from your customer journey, wether it is context or profile related data, you can seamlessly share them to send. Of course, you also have the option to use the response from the custom action as condition criteria in your journey and you can also use it to personalize downstream communications.
In the loyaltyId input, select the email attribute under Context > LumaPurchaseEvent_Email > _aeppartner1 > identification > core (or juste copy paste
@event{LumaPurchaseEvent_Email._aeppartner1.identification.core.email})
In the orderValue input, click the Advanced mode button then select the priceTotal attribute under Context > LumaPurchaseEvent_Email > productListItems (or juste copy paste
@event{LumaPurchaseEvent_Email.productListItems.at(0).priceTotal})
Select the Email activity from the ACTIONS menu and drag and drop it to the canvas. Notice Tracking setting (clicks on email, email opens) is automatically enabled to enable feedback events in AEP real time customer profile
Let’s configure the subject line with our profile first name as personalisation token.
Click the icon and fetch the first name attribute of the real time customer profile (available at Profile attribute > Person > Full name), then click the
icon to add it to the subject line, and append ` , your order confirmation`
Click Save
Let’s author the email body now. In the body section:
Select Design from scratch
The Email editor opens up, you’ll notice on the left rail a menu with sections to select pre-defined components, use AJO Assets, select fragments and conditional content. There are plenty of helper you can leverage to speed up the email creation process.
Adobe Journey Optimizer’s Digital Asset Management (DAM) makes it easy to manage and optimize your content. You can upload images, remove backgrounds, and resize them using Adobe Express—all within the platform. Smart Tagging helps you find assets quickly, while version control keeps everything organized. Tasks streamline collaboration, and Renditions ensure assets are perfectly formatted for every channel. It’s a simple, efficient way to keep your creative work on track.
To play more with DAM feature, you can access it by clicking the 3 dots in the Asset selector menu and select Manage Assets.
Fragments are reusable, modular content pieces that can be incorporated into personalized messages. Fragments allow marketers to create content once and then reuse or adapt it across multiple campaigns and journeys without having to rebuild it each time. Let’s use some previously created fragments to display the items that have been purchased. The fragment will leverage contextual data coming from the Luma Purchase Event that we added to the journey.
AJO custom actions are great to communicate with the outside world, whether it is to query external data sources and use its output to determine what do to next (like a condition in the journey to determine the next best path for our customer) or to contact an external system to push some personalized message (like creating a task to the shipping company). The capabilities are endless. In our Luma Purchase journey, we’d like to also incent our customers with an offer from our Loyalty System. It serves personalized Promo Code trough a REST API that we can query directly from the journey and use its response to personnalize further the email content based on the customer order value. The martech team prepared a content fragment that makes it very easy to consume promo code. The content fragment is preconfigured to accept 2 placeholders from the loyalty service: the offer name and the promo code.
Contextual Attributes > Journey Orchestration > Actions > Loyalty Service, select the LoyaltyOffer attribute.Contextual Attributes > Journey Orchestration > Actions > Loyalty Service, select the PromoCode attribute.Conditional content allows marketers to deliver highly personalized and dynamic messaging based on specific conditions or rules. Here, We want to invite customers who haven’t the Luma Mobile App installed to do so. For the other, we’d like to promote the Luma+ Loyalty Program. We are going to leverage previously built platform audiences to manage this logic. With AJO conditional content, you can create as many variants as needed. We are going to use the default variant to promote the Luma Loyalty+ Program and a second variant to incent Luma customers to install the mobile app.
Time to finish our email with additional links which are embedded in every footer of Luma email communications. Let’s add the Luma - Footer Fragment. Fragments are very powerful in AJO as they let you reference previously built content with different degree of locking, to allow for specific customization or inline updates.
And you’re done with the Order Confirmation email! Of course, as a marketer you can do much more, such as simulate content, check spam score, test its renditions, generate variants with genAI, send a proof etc. But so far you should have an email which looks like this, where personalization token will automatically be replaced during the email sendout.
What we have so far is great, it covers the standard checkout process. Now AJO can do much more than that, let’s spice the journey with a bit more intelligence to seamlessly reengage our cart abandoners if they stopped during the checkout process.
We’d also like to retarget profiles who started the checkout process, but did not complete. Here what we’re going to do:
Let’s enhance the journey so it looks like this:
The first thing to do is to detect when a customer dropped in the conversion process. AJO has a very neat way of managing profiles who did not move forward in the journey after a certain time. This is done through the Timeout setting of the Event. You can define how long you want to wait for the event to occur, and if nothing happens you can direct your profiles to an alternate path, called the timeout path
Click on the LumaPurchaseEvent_Email, set a timeout for let’s say, 1 minute (of course, it would be much longer outside of this lab) and click Set a timeout path
Select the Condition activity from the ORCHESTRATION menu and drag and drop it to the canvas.
Select the Show path for other cases than the one(s) above and label it Others for profiles who want to be targeted throuh other channels.
Content Template is a nice addition in AJO, it makes it easy for marketers and content managers to build highly-reusable content, outside of any campaign or journeys. It offers neat features such as the ability to lock certain area of the template to prevent unintentional edits or deletions, giving you greater control over template customization, and improving the efficiency and reliability of your email campaigns.
We’d like this email to be automatically translated based on the preferred language of the profile. We are going to use Microsoft automatic translation service to provide Spanish and French version of the email content.
Feel free to reload the browser tab to refresh the variant.
Email retargeting can be quickly overwhelming for customers. To avoid over solicitation over our Luma customers with too many communications, we should apply business rules that limit the number of communication to send over a specific period of time. In our case, we want to enforce a cross channel rule that limits the number of emails and pushs to 3 retargeting message per week. The rule has already been created as follow.
What you’ll have to do is to apply this rule to your message. AJO will then fully manage pressure rule based on the ruleset selected above. Under the hood, AJO uses sending logs of the real time customer profile to decide whether the communication should be delivered. When an exclusion occurs, the information is tracking in AJO reporting wich the exclusion reason.
We’re almost done with the journey, just a couple of steps more to tie the abandoned branch back to the order confirmation branch. Once our profile receives the retargeting message, he is invited to resume its purchase. When doing so, he will generate a new Purchase Event that AJO is going to listen in order to complete the purchase process
Your journey should now look like this:
Whether you completed the whole journey or not, you can test the end to end customer experience by yourself. There is a published Luma - Purchase Journey, where you can track the entries.
The profile abandoned its cart, and AJO routes him to the abandoned cart branch:
After a given period of inactivity, the user is considered to have abandoned the purchase process, and the email you previously configured is sent with a link to revalidate their cart. Go to your email client and click on the link in the new email received. This will take you back to the cart, where you can complete your purchase online.
The Abandoned Cart Email:
The Order Confirmation Email:
As a marketer, we want to keep track of the Luma - Purchase Journey performance. The AJO reporting UI displays essential metrics associated with your journey. This encompasses details such as the count of entered profiles and instances of failed individual journeys, offering a comprehensive insight into your journey’s effectiveness and level of engagement. Journey report can be accessed directly from your journey with the button.
What’s great about AJO reporting is the ability to take actions from insights. For example, if you’d like to create an audience containing profiles who clicks on a specific link of your email delivery, you just have to right click on the corresponding cell of the table.
Of course, there’s much more you can do as Customer Journey Analytics dashboards (another AEP module that is embedded for this reporting view) can be fully customized, we’ll keep that for another lab :wink:
Our journey is complete and live, it works so well that we want to reuse it in another context. Rolling out AJO objets (journeys, campaigns, content template, audiences etc) is easy thanks to AEP packages.
You can seamlessly export and import AJO configurations between AEP environments, whether it is across different sandboxes or across different organisation. With packages, you reduce the time to value for the implementation process and move successful configurations in a few clicks.
A package can consist of a single object or multiple objects, for this lab, we are going to package the journey you built so you can reuse it in your own partner organisation.
delaland+p1@adobetest.com - Purchase Journey Package
Congratulations! You have completed the second chapter of the lab 👍 ✨ 🎉, go to the next step or return to the home