---
title: Creating the journey
slug: lab-retail-agentic/creating-the-journey
description: >-
docTags: 
createdAt: 2024-01-30T23:03:21.354Z
---

:::hint{type="info"}
Time to build. You've experienced the journey as a customer—now construct the orchestration in AEP that makes that experience real for your users.
:::

# Story so far

The customer has just completed the purchase and chosen in-store pickup. You now build the journey that confirms the order, promotes Luma+ to non-members, and follows up on their preferred channel a week later.

# Journey - overview

:::hint{type="info"}
To log into the Adobe Experience Platform, check the [Environment & Access](docId\:T2Lk46Ms2HbsLfweShv4B) page.
:::

To open Journey Optimizer, click the :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/cXHtQjzdQ7uyZzluAbeHf-20260414-082210.png" alt caption width="25" height="25"} icon on the top-right corner, the select Journey Optimizer.

To get an overview of all journeys:

- In the menu on the left side, under **Journey Management**, click on **Journeys**.&#x20;

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/usKPqAoKLwbQo5iBLZVAk_image.png)

# Creating a journey

- Click on **Create Journey**.&#x20;
- You'll be taken to the **journey canvas** with the journey properties opened.
- Set the **name** to `[{{LASTNAME}}] Decide - Purchase`.
- For the other properties keep the default values.
- Your screen should look like the image below. Click **Save** to save and close the properties.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/tBX5nHm-2uJtf4Z8QfFom_image.png)

You're now in the journey canvas. This is where you'll be creating your journey's logic. In between the Start and End, click on the **+** icon to see the **activities**. There's three types of activities:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/OfyewB4lr9x9Dr-15oHfx_image.png)

**Events** are the triggers that can start or continue your journey.

**Orchestration** is the logic of your journey. It looks at conditions, audiences, but can also be used to make your workflow wait or end.

**Actions** are the results of your journey. This can be messages, profiles updates or API calls.

## Event trigger

- Start the journey with an event trigger. From the **Events** section, expand the **Custom events** and click on *examplePurchase&#x20;*&#x73;o it appears into the canvas.
- Change the label to **Purchase confirmed**.
- There's nothing else to configure.
- Click **Save** to close the menu.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/rPG22gz2j0Ozqh9wITpwV_image.png)

## Email #1 - Order confirmation

In the next steps you will be building the email for your journey.

- Click on the **+** icon before the *End&#x20;*&#x61;ctivity. From the **Actions** section, choose :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/KOOhH9eBqWBhD2ICMmrk6_ajo-action-icon.jpg" alt caption width="166" height="58"}.
- In the **Select action type** window, click on the drop down and select **Marketing.**
- Select **Email**, then click **Add**.
- On the right you'll see the detailed view; set the **Label** to `Order confirmation`.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/mi2YWA9A1WLR4VBuZghlf_image.png)

- Click **Configure action**.

Now you are in the wizard dedicated to the configuration of the details about the email.

- Set the **Email channel configuration** to `marketingEmailMessages`. Leave the other settings as they are.
- Click on **Edit content** to start designing your email.
  - Click on :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/WSzY1Mhy7gac4v7diCQHw-20260414-122756.png" alt caption width="37" height="37"}  to create a subject line. Set it to `FIRSTNAME, your order is confirmed!`
    - Remove the text `FIRSTNAME` and search for `first name` in the profile attributes.
    - Find the field First name (... *attributes > person > Full name*) and click on the **+**  **icon** to add it to your subject line. It should now be
      `{{profile.person.name.firstName}}, your order is confirmed!`
    - Click **Save**.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/t4OfYE_J14smOt5Kaj9-s_image.png)

:::hint{type="info"}
Personalization in Journey Optimizer is based on the templating syntax called *Handlebars*.

Handlebars expression look like regular text with embedded within curly brackets. In this case, the expression will be replaced by the first name taken for the profile in AEP.
:::

Create an email content from scratch can take time; for this lab you will start with a template and then add some additional elements.

- Click on **Edit email body**.&#x20;
- Under **Select design template**
- Click on the **Saved templates&#x20;**&#x74;ab
- Select the template **\[Example] Purchase confirmation**
- Finalize by clicking on **Use this template**.

The email designer will now open. It should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/TjE2YXBcoSgnDnXcg1ADq_image.png)

:::hint{type="info"}
In the left menu you have **Components**

- **Structure components** are the building blocks of your email, they will determine the layout of your email.
- **Content components** are the different forms of content that you can place inside your structure components, like text, buttons and images.
:::

As first step you have to personalise the body of the email with contextual data. In the subject line you have used an attribute from the profile; you can also use data coming from the trigger event.&#x20;

- Click on the text in the middle of the screen, and select `ORDER ID`.
- Click on :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/8XSokaZGhl0l_7Y6RzRIr-20260414-131713.png" alt caption width="38" height="38"} to open the personalisation window.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/u5UxdUsiSz1uFNGrTyhzL_image.png)

- Remove `ORDER ID`.
- On the left menu, click **Contextual attributes**.
- Search `purchase order number` and click on **+.**
- Click **Save**.

Your email body should look like this:

****

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/rnbkPcac8Zq0S90uKZ3o6_image.png)

At the bottom of the email there is an empty box where you want to add a personalized banner based on the customer profile.&#x20;

- Click on :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/oOQ8nJatApyRFWThQB5yU-20260414-134134.png" alt caption width="55" height="55"} to see the list of content fragments available.
- Drag and drop the item **\[Example] 50/50 - Text/image** in the **Drop content here** area.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/w46uS08eMtGfJZyMXl4uS_image.png)

:::hint{type="info"}
**Content fragments&#x20;**&#x61;re blocks of content within an email that are meant to be re-used across emails. The content fragment are customized and provide an easy interface to edit and change content.  &#x20;
:::

One advantage of using a content fragment is that you can manage and update its fields through the fragment settings, on the right side panel, rather than modifying the elements directly in the email body.

- Click on the fragment in the body of the email; a blue border will appear.
- Replace the **Header** text with `Warming up`.
- Replace the **Body** text with `Stretching and warming up regularly is important. Discover suggestions in our blog.`.
- Replace the **Button** label with `Read an article`.
- Replace the **Button** URL with `https://dsn.adobe.com/web/hol-retail-prod/blog`.
- Remove the placeholder image by clicking the X icon in the **Source** field.
- Click **Select an asset**, search for `yoga-pose`, click on the asset **yoga-pose.jpg** and click **Select**.
- Click **Save**.

Your screen should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/3j-6eoPrP3zT593sPbsJX_image.png)

### Conditional content

You can make this banner dynamic, so it shows different variants, based on specific criteria.&#x20;

- Click on the box outside the fragment; should now see the blue border around the whole section and a label **1:1 column** in the top right corner.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/0phOvnL-w90yVi39pdgX5_image.png)

- Click on the :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/H8vO3WOh_hHGam9t4s6hU-20260416-095824.png" alt caption width="26" height="26"} to enable **Conditional Content**.
- On the left, a new menu will appear, with the list of the variants.

The platform has already created a variant, that is a copy of the default content. To personalise the banner you need to modify:

- the condition
- the content

The new variant should be shown only to customers *who are not Luma+ members*. In AEP, there is an audience that includes all such profiles. To implement this logic, adjust the condition as follows:

- click on :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/T1Bb16ndMTFaEjLOy3A23-20260416-100139.png" alt caption width="22" height="22"} to open the list of available conditions.
- Click on **+ Create new**.
- Click on the tab **Audiences**.
  - if the audience list is empty click on **Legacy Experience**, then click on **Experience Platform**.
- Search for `Not Luma+` and drag and drop the `Luma - Not Luma+ Members` audience in the main canvas where is written **Start Building conditions**.

Your condition should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/xpQ_oa-OXtkRXhy2XbxQs_image.png)

- Click on **Save condition&#x20;**&#x61;t the bottom of the canvas.
- Fill the title with `{{LASTNAME}} - Not Luma+ members`.
- Click **Add**, to save the condition.
- Click **Select** to apply the condition to the variant.

The second step is to update the banner content to clearly convey the information intended for this specific audience. To do this, repeat the same steps you followed when creating the first variant.

- Click on the Variant - 1 to be sure that you're modifying the right content. Now it should be highlighted with a blue border.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/kobNiYQhMF1mn--FRjx8f_image.png)

- Click on the fragment in the body of the email; a blue border will appear.
- Replace the **Header** text with `LUMA+ is made for you`.
- Replace the **Body** text with `Join LUMA+ and unlock rewards tailored just for you.`.
- Replace the **Button** label with `Subscribe`.
- Replace the **Button** URL with `https://dsn.adobe.com/web/hol-retail-prod/luma-plus`.
- Remove the placeholder image by clicking the X icon in the **Source** field.
- Click **Select an asset**, search for `luma-plus`, click on the asset and click **Select**.
- Click **Save**.



The email should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/EFus_RYWSrVDFv-Q5dvEQ_image.png)

## Simulate Email Content

If you want to see how the email would render for a test profile with certain attributes, you can use **Simulate Content**.

- Select **Simulate Content > Simulate Content** from the Email Designer
- Add a **test profile** that you want to simulate email content for.&#x20;
  - Click on **Manage test profiles**.
  - In **Identity namespace**, click on :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/XIDgV2xyuS3VDClJcdVUo-20260416-093503.png" alt caption width="25" height="26"}.
  - In **Select identity namespace**, click on `Email`, then click **Select**.
  - In **Identity** **value** type `{{EMAIL}}`.
  - Click **Add profile**.

Now you have a test profile you can use to simulate the email content. Click the arrow in the top left corner to come back to the **Simulate** page.

:::hint{type="info"}
The simulation takes in consideration only the contextual data available. In this case you will only the personalisation based on the profile attribute; Order Id and Order Summary will be empty because the event payload is not available at this stage.
:::

The email is rendered based on the profile attributes:

- the body contains the first name;
- the bottom banner shows the Luma+ Program information, since the profile is not yet a Luma+ member.

Your simulation should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/gxA_JU-Juga5HynsCBMTy_image.png)

- Click **Close** to return to the Email Designer.
- Navigate out of the email designer by clicking the back arrow :FontAwesome[]{icon="fa-solid fa-arrow-left"}**&#x20;icon** in the top left. If prompted, click on **Save\&Close**.
- Navigate out of the message overview by clicking the back  :FontAwesome[]{icon="fa-solid fa-arrow-left"}**&#x20;icon** in the top left.
- You'll return to the journey canvas. Click **Save** in the **Actions: Email&#x20;**&#x70;anel.

Your journey should now look like:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/Z43Fe_6iGJ2iNfdjmNlrv_image.png)

## Event trigger

Your goal is to push the customer to subscribe to the Luma+ program; this is the next step of the journey: waiting for the subscription event.

- Click on the **+** icon before the *End* activity and choose the custom event **exampleLoyaltyClubJoined** to add it into the canvas. This event is meant to be triggered once the customer has subscribed to the Luma+ program.
- Set the label to `Luma+ - Subscription event`.
- Click on the **Define the event timeout** checkbox to activate it, then specify the wait duration to be **7** **days.**
- If not yet checked, click on the **Set a timeout path** checkbox so the journey branches into 2 paths.
- Click **Save**.

Defining a timeout path allows you to specify the actions that should be taken if the expected event does not occur. This ensures that your process can continue smoothly and handle exceptions in a controlled and predictable manner.

Your journey should now look like:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/vSwfrTOKjosIH5TF9Q8rQ_image.png)

## Condition - Preferred Channel?

You want to be sure that the customer receives the follow up message on his preferred channel. Right before sending the follow up communication, check the customer's preferred channel.

- Click on the **+** icon before the *End* activity from the 7d timeout branch. From the **Orchestration** section, choose **Optimize.**

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/fX5CnIfpc8Np2CXD8z8o5_image.png)

- Click on the activity to open the detailed view.
- Set the **Label** to `Preferred Channel`.
- Set the **Method** to `Data source condition`.
- Click on **Path1** and change the label to `Push`.
- Click on the **Expression** text field to open a window.
  - On the left side, search for "**preferred**". Drag the data element **Preferred Channel** to the right side.
  - Select `Push`, then click **Ok**

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/ZdBpqKiopfjmWqKAzivwg_image.png)

Your condition should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/X7ZH5fZOLmWhFAAFnP3nm_image.png)

- Click **Ok** to save the condition.
- Check **Show path for other cases than one(s) above** and set the label to `Other channels`.

Your screen should look like the image below. Click **Save**.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/9NDRnjSp3yb1P7sCQSOse_image.png)

## Push - Registration Reminder

Now you need to author the push-notification to promote Luma+, the loyalty program. This pushes a short message to the profile's smartphone that they can easily interact with. When they click on the push they'll be taken to the mobile app directly.&#x20;

- Click on the **+** icon before the *End* activity of the **Push&#x20;**&#x62;ranch. From the actions section, choose :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/KOOhH9eBqWBhD2ICMmrk6_ajo-action-icon.jpg" alt caption width="166" height="58"}.
- In the Selection action type window select **Push**, then click **Add**.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/JXd9CFFGqpTSMdRYBgxDG_image.png)

- Set the **label** to `Push - Registration reminder`.
- Click on **Configure action**.
- In **Push notification channel configuration** select `pushMessages`.
- Click on **Edit content&#x20;**&#x74;o start designing your push.

:::hint{type="info"}
If you don't see the properties panel on the right, click on **Properties**, at the bottom of the page, :
:::

- Set the **title** to: `Luma+ Loyalty program`.
- Set the **body** to:

:::BlockQuote
`Hey {{profile.person.name.firstName}}, don't forget to register on the Luma+ program.`
:::

- Click **Save**.

Your screen should look like the image below:&#x20;

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/NIQ0SyeuIKrWmtqOH1Aj8_image.png)

:::hint{type="info"}
You may have noticed the double curly brackets in the body: in the push messages you can use contextual data, exactly like you did for the email.
:::

- Navigate out of the designer by clicking the  :FontAwesome[]{icon="fa-solid fa-arrow-left"} **icon** in the top left.&#x20;
- Click **Save** to close the detail panel.

Your screen should now look like the image below:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/BwCdyI6Y2Y9rygzovvHx8_image.png)

## Email - Registration Reminder

Final step: you need to create the email for customers who have not chosen push notifications as their preferred communication channel.

The implementation will be faster, since there is a template available.

- Click on the **+** icon before the *End* activity of the **Other channels** branch. From the actions section, choose :inlineImage[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/KOOhH9eBqWBhD2ICMmrk6_ajo-action-icon.jpg" alt caption width="166" height="58"}.
- In the **Select action type** window, click on the drop down and select **Marketing.**
- Select **Email**, then click **Add**.
- On the right you'll see the detailed view; set the **label** to `Email - Registration reminder`.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/P8ZRmXXlKi-x2TOP8cXVL_image.png)

- Click **Configure action**.

Now you are in the wizard dedicated to the configuration of the details about the email.

- Set the **Email channel configuration** to `marketingEmailMessages`. Leave the other settings as they are.
- Click on **Edit content** to start designing your email.
- Click on **Content template** > **Apply content template**.
- Select `[Example] Registration reminder`, and click **Confirm**.

The template contains everything is needed: the subject line, the images and the personalisation expressions.

- Click on **Edit email body** to check the content.

The email should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/UlK47be9VG6cu3kyuBd7l_image.png)

- Navigate out of the email designer by clicking the back arrow :FontAwesome[]{icon="fa-solid fa-arrow-left"}**&#x20;icon** in the top left. If prompted, click on **Save & close**.
- Navigate out of the message overview by clicking the back  :FontAwesome[]{icon="fa-solid fa-arrow-left"}**&#x20;icon** in the top left.
- You'll return to the journey canvas. Click **Save** in the **Actions: Email&#x20;**&#x70;anel.

Your canvas should look like this:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/8-xeW804r3eZv2yHi_FgT_image.png)

## Recap

Well done! With the **Decide** section you have explored how Adobe Journey Optimizer orchestrates post-purchase communications:

- **Journeys** triggered by real-time events, like a purchase confirmation.
- **Personalised emails** built with contextual data, profile attributes and conditional content fragments.
- **Preferred channel logic** to reach each customer on email or push, based on their profile.

In this section the customer completed the purchase of the yoga mat and received a tailored order confirmation — with a Luma+ promotion reserved for non-members. A week later, a follow-up message nudged them towards the loyalty program on their preferred channel. Now that the customer has bought, it's time to step back and analyse what happened: the next section, **Research**, shifts the focus from the customer experience to the data behind it.

