Lab 5: Marketing Automation
Objective
In this lab you'll learn how Adobe Journey Optimizer can orchestrate real-time, personalised journeys.
Adobe Journey Optimizer operates off the same events, profiles and audiences as Real-time CDP and CJA, no need to wait for ETL processes to share data.
As part of the digital operations team you will set up a retargeting journey triggered by anyone adding products to their cart but not completing the purchase.
You'll see how Adobe Journey Optimizer has access to the cart context and how we can check for changes to the product price before we deliver the message. You'll use imagery managed in Adobe Experience Manager Assets to ensure consistency across channels.
Any customers who make a purchase during the journey will be removed.
Access
Switch to Adobe Journey Optimizer using the solution switcher:

Content Management
Before we create our retargeting journey for the campaign let's take a look at some of Adobe Journey Optimizers content management capabilities.
Brand Guidelines
Brand guidelines are a detailed set of rules and standards that establish a brand’s visual and verbal identity. They act as a reference to maintain consistent brand representation across all marketing and communication platforms.
In Journey Optimizer, you now have the option to manually input and organize your brand details or upload brand guideline documents for automatic information extraction.
Click on Brands and click to View the Luma guidelines.

Here you can find all of the do's and dont's defined to ensure all content sent from Journey Optimizer aligns to Luma's brand. Click on Writing style to see the guidelines that will be applied to text content.

Click on the Visual Content to see the guidelines that will be applied to imagery.

Content Templates
Content templates are pre-defined pieces of content. Templates can be created for multiple channels and are used as starting points for messages in campaigns and journeys.
Importing your email templates into a new solution is usually a time-consuming task during implementations. With Adobe Journey Optimizer we can generate an email editor compatible template directly from an image, saving potentially days of effort.
Right click and Save As the image below onto your hard drive.

Navigate to Content Templates and click to Create template.

Give your template a name - something unique so you can recognise it.

Now upload the image you downloaded from above (or one of your own email images if you have one handy!)

The generation will take a few minutes. Move on to the next exercise and you can come back later to see how it went.
Create a Journey
Navigate to Journey Management -> Journeys and click on Create Journey.

Name your journey December Promotion Retargeting, add your initials so you can recognise it from other lab participants.

Measurement is critical to any journey, Adobe Journey Optimizer can use any of the metrics defined in Customer Journey Analytics as journey success metric. For this journey we are encouraging purchases, click on the Journey Metric drop down and select Purchases (7d). The attribution in this case is pre-set to Last Touch 7 days, but you can modify this within Customer Journey Analytics or create different versions for different purposes.

Click to save the properties.
Journeys can be triggered from individual events or when a customer enters or exits a streaming audience. You can see the events that are configured as journey triggers in the left panel - this list is configurable and will depend on your implementation.

Drag the luma_cart_view event into the panel as your journey trigger.

The orchestration panel is where we can find activites to control the pathing and flow of the journey. We want to filter this journey to only those customers we've targeted for the promotion, so we'll add a condition to check the customers current audience membership status.
Drag a condition activity into the canvas then click to edit the expression.

In the expression editor search for audience that we are targeting and drag it into the panel. Click ok and ok to finish the configuration.

Drag a wait activity to pause the journey flow for a short duration to allow the customer time to complete the process they started before we start retargeting them. The wait period can be as long or short as you want.

The Actions panel is where you'll find the native messaging channels as well as any custom channels or actions that have been enabled in the sandbox.
Drag an Email action onto the canvas and attach it to the trigger event. Set the Email Configuration to email-marketing.

Before we configure the email content we'll finish the journey flow. Returning to the events panel, drag a Reaction activity after the email and configure a Timeout of 2 days. This triggers the journey to continue after 1 day along the timeout path if the customer does not click the link in the email.

Click to Save the reaction.
If the customer does not click the email we'll continue to engage them on other available channels. We will prioritize push notification as a less invasive channel but there's no point sending a push if the customer doesn't have the app, so let's check first and route customers to the right channel.
Drag a Condition activity, from the orchestration panel, into the canvas and connect it to the timeout branch.

Rename the default path condition to Has Mobile App and tick the checkbox to show path for other cases. Then click into the Expression to configure the condition.

Then click into the Expression to configure the condition.

The expression editor let's you configure a boolean condition which if it evaluates to true will push the profile down the condition path. Expressions can use context from the journey triggering event, audiences or other data stored in Adobe Experience Platform.
Search for Mobile. Drag the pre-configured Has Mobile App audience into the expression then click Ok.

Click Ok again to store the condition.

Click to Save the condition.

Now drag a push notification and add it to the "Has mobile app" path. Drag an SMS action as the alternative channel, depending on your business you might choose Line or WhatsApp as an alternative.

Lastly, we'll add exit criteria to remove profiles from the journey once they complete the desired action, in this case completing their subscription. Click on the profile icon to the right of the journey to open the exit criteria panel. Click the button to add the exit criteria.

You can use events and/or audiences as exit criteria, for this example we'll use the luma_purchase event.

Click Save to complete your journey logic.
Next we'll add content to our messages.
Add Email Content
For this exercise we'll start with a pre-defined content template. Select the email activity in your journey and set the Email Configuration to email-marketing and click to Edit Content.

Click to Apply content template

Select the Luma Abandoned Cart Template and click Confirm.

Now that the template is loaded click to Edit the email body.

First we'll replace the template banner image with one from the asset repository. Select the banner and click to Select an asset.

Make sure you're in the right repository Demo APAC Program 2 Prod Author, then search for forest - this is leveraging the smart asset tags to find relevant images. An essential time saver when working with a large repository.

Choose an image and click select to add it to the email.

Next we'll check the Brand Alignment score. Click on the gray background around the email to select the full message body.
Click to open the Brand Alignment panel on the right, choose the Luma guidelines then click to Evaluate Score.

Not too shabby at 90%! Yours might be a bit different.

Click into the Writing Style to review individual guideline feedback, you can make adjustments and re-evaluate as needed.

Lastly we need to update the personalization block that is including the Cart content into the email. The message has access to the payload that was sent from the commerce front end, this event contains the list of products in their cart - and any product recommendations if included.
The syntax has already been included for you in the template but we need to update the event id to match our journey. Click on the HTML block and click to edit the HTML.

Once you're in the editor, we need to replace the variable for the context.event.1232949.productListItems. This is referencing the array of products that are currently in the cart. Each journey has it's own unique event id so we need to replace the default value from our template with the value from our journey context.
This same process can be leveraged to include product recommendations in the email also.
Click to Save your email and return to the journey using the arrow on the top left.

Add Mobile Content
To complete the journey, we need to add content to the SMS and Push Notification activities.
Click on the Push activity and select Push in the configuration drop down, then click Edit content.

Once again you can either manually add content or use AI Assistant to generate it for you. Open the AI Assistant panel and reuse the prompt and text settings from your email to keep messaging consistent.
The generated content is again scored against the Brand Guidelines. Select the variation you prefer and click to Apply it to your message.

Click the arrow in the top left to return to your journey.

Repeat the same process for the SMS Activity.
Bonus
Add a price check
Using a custom action we can request a live price from Adobe Commerce for the products in the customer cart. For simplicity we will lookup the first product from their cart only.
Drag the PriceCheck action onto the canvas before your email activity.

This custom action makes an API call to Adobe Commerce to retrieve the current price for a product SKU and customer.
Click to configure the variable product SKU parameter

Click to Advanced mode

Click to add the SKU from the product list in the event context.

Repeat the same for the Customer ID parameter, but this time we'll be retrieving the value from the profile in AEP not the event context.

Your custom action will now return the current price and you can compare it using a condition and send a whole different email OR use dynamic content in your email to modify the message.
Drag a condition activity the end of your action, set the label to Price Drop? set the main path label to Yes and add a path for Others labelled No

Click into the expression editor for the Yes path.
We now have 2 types of context data - the triggering event (luma_cart_view) and the priceCheck API response. You can create a simple expression to check if the current price is less than the price from the cart.

Testing your Journey
Now that your journey is built you can push it into Test mode to verify the logic.
- Click on Test mode

- Click on Trigger an Event

- Switch to Code View

You can paste the event payload from here to test your journey - update the price on the first product item in the list to verify if the lookup call.