---
title: #2 - Lifecycle program
slug: one-adobe/2-lifecycle-program
docTags: 
createdAt: 2025-03-17T15:59:29.655Z
---

:::hint{type="info"}
**Focus area**
Adobe Journey Optimizer

**Features**
Audiences, journeys, offers, ranking formulas

**Difficulty**
Challenging&#x20;
:::

![](https://api.archbee.com/api/optimize/dbeKUZjDrzT2_E01NuH_J-LVcMnX7mKIM1SbOy9Kvg8-20250321-153714.jpg)

## Use case description

As part of our lifecycle program we want to reach out to customers 3 days after they get a second product to see if they might be interested in getting more of our offerings so they can benefit from our multi-product discount.

By the time a customer reaches this stage we should have a pretty good understanding of their propensity to buy certain products, we want to leverage this information to provide them a real-time offer.

***

## Requirements

- Customers receive an email **3 days after** they purchase their **second product**
- The email is themed around **multi-product discounts** and highlights how discounts increase the more products you have
- The email should show the **current discount** the customer has
- The email needs to contain a **personalized offer** for a next best product to purchase.&#x20;
  - It should only show products the customer does not have
  - It should prioritise offers based on a **propensity score&#x20;**
- If the email remains **unopened for 2 days**, reach out to them with a **push notification**
- The push notification text needs to contain a **personalized offer** as well
- As soon as the customer makes a **purchase**, **remove** them from the journey
- <font color="#ff6200">**BONUS**</font> Run an offer simulation to test the decisioning engine

***

## Resources

**Multi-product discount**
Our multi-product discount gives the customer a percentage discount on their total fee based on how many products they have:

- Two active products = 5% discount
- Three active products = 10% discount
- Four or more active products products = 15% discount

**Personalized offers**
A set of offers, representations, rules and a decision scope have been prepared, however you might want to try and make one yourself.

**Propensity scores**
We have prepared propensity scores in an external system an loaded them into the profile for you to use. You can find this under `profile > _demopotemea > ING > propensityScores`.

***

:::ExpandableHeading
### Tip 1 - Getting started

If you find yourself having a hard time getting started there's two great questions to ask yourself. They'll help you start to design a journey.



**How would someone enter this journey?&#x20;**&#xA;*There's four common ways for a profile to enter a journey*

1. ***Real-time event*****
   *Any event (action) a profile takes can be used to start or continue a journey in real-time.*
2. ***Audience qualification*****
   *When someone enters or leaves an audience this can be used to trigger a journey.&#x20;*
3. ***Read audience*****
   *This allows you to start the journey from a bulk selection from an audience. It takes all profiles that are currently qualified for the audience.*
4. ***Business event*****
   *In cases where a non-profile specific event affects one or multiple profiles you can trigger a journey for every profile affected.*
   *(for example "A flight being delayed")&#x20;*



**What components do I need to create the journey?**
*Open a notepad and visualize what components you'll need to have to be able to create the journey. In this case:*

- An audience of people that have 2 products
- Information on the customer's products (don't worry, this is available on profile)
- Offers for each of our products (debit, credit, insurances)
- Offer rules for elibility based on active products
- Offer ranking based on customer propensity
- Content representations for these offers for email (image) and push (text)
- An email and push notification


:::

:::ExpandableHeading
### Tip 2 - Creating and managing offers

Everything you need for offers has already been prepared, so you could do this use case without even looking at offer management. However, we're here to learn more, right? Let's dive a little deeper into how you create and manage offers, how representations work and how to set up eligibility rules and ranking formulas.

In Adobe Journey Optimizer you can manage offers under **Decision Management**. Let's start by having a look at **Components**, these are building blocks you need to start creating offers. After that we'll look at **Offers**., this is where you create your offers, add them to collections and create decisions for the Offer Decisioning Engine to use.

### Components

**Placements**
These are the different representations for your offers. As you might imagine your offer should show up in different channels and these might have different requirements on how the content should be displayed. For example, you could have an image in an email and a text-version in a push notification.

**Collection qualifiers**
These are tags you can add to your offers so you can easily group them later.

**Rules**
As the name implies, these are rules you can add to your offers to determine eligibility. Offers can have their eligibility based on audiences or rules. The main difference between the two is that audiences use the current qualification status for the profile whereas rules execute at run-time. This means that when you have a batch audience (which updates once every 24hr) you might find yourself determining offer eligibility based on "old" data. Rules run at runtime, which means you can write a set of rules and it will check them when the offer is being requested. This means you'll always use the latest information.

*This is mainly relevant when talking about batch use cases. In cases that the audience is streaming or edge it's usually better to use the audience instead of rules.*

**Ranking**
After the Offer Decisioning Engine has determined that you are eligible for multiple offers, it needs to figure our which one is most relevant. Offers come with a "priority" attibute in which you can define a base-level priority for this offer. For example, you might say that selling a mortgage is more beneficial to ING than selling car insurance and you can manage this by giving the mortgage offer a higher priority.

However, in many cases you might want to use customer information to influence this priority. For example if the customer has recently showed interest in car insurance you'll want to prioritise this offer higher as the likeliness that the offer will be accepted is now way higher. This is where **Ranking formulas** come in. You can write additional expressions in here that can leverage customer data to change the priority for each offer.

### Offers

**Offers**
In this tab you can create all your offers, including the start- and enddate of the offer, attributes, qualifiers, different representations, the offer eligibility and the priority. Even though all offers have been prepared for the use case, try making another offer.****
****
**Collections**
In collections you can define groups of offers that logically belong together. These groups will be used while making decisions to define what offers the Offer Decisioning Engine should consider.****
****
**Decisions**
This is where you create decisions for the Offer Decisioning Engine to use. Decisions contain one or multiple scopes of offers it should consider when detemining the best offer for the customer. You can define what representations can be used and from which offer collection the Offer Decisioning Engine should pick from.
Whenever you request an offer from the Offer Decisioning Engine you have to tell the Engine which decision it should use.&#x20;
:::

:::ExpandableHeading
### Tip 3 - Building the journey

When building a journey it's important to be concious about how customers flow through the journey. Journeys in Adobe Journey Optimizer are per profile, instead of as a group like in most traditional marketing automation systems. This means that every profile runs though the journey alone and therefore every action on the canvas will be considering the individual rather than the mass.

In the past you likely selected a group of customers, then split this group based on some condition, excluded a few and then send an email to the remaining customers. In Adobe Journey Optimizer you'll instead build your journey asking yourself "If a customer does \[something], I want them to \[next step]". It might not sound like a big difference, but just imagine yourself how a "Wait"-activity would work in both of these scenarios.

So based on this change in perspective, how would your journey look?

1. **If a customer \[purchases a second product] I want them to \[receive an email after 3 days]**
   We have an audience called "Customers with 2 active products". When someone enters this audience it would mean they just bought their second product! This means we can start the journey with an **Audience Qualification** for this audience. Next we need to wait 3 days, there's a **Wait**-activity that let's you do this. Then we can follow it up with an **Email**-activity.&#x20;
2. **If the customer \[does not open the email in the next 2 days] I want them to \[receive a push notification]**
   You've learned that journeys can start and continue with real-time triggers, like audience qualifications and events. In Adobe Journey Optimizer there's an additional out-of-the-box event called **Reaction**. This activity allows you to monitor activity on a message in the journey, for example it can check if the customer opened or clicked the email. The **Reaction**-activity can also be set to time out if the event doesn't happen in a specified amount of time.

   We also want to check if the customer is eligible to receive push notification so that we don't end up trying to send push notifications to customers that are unable to receive them. The **Condition**-activity is great for this.
3. **If the customer \[purchases another product] I want to \[no longer receive further communication from this journey]**
   You can use an exit criteria to automatically remove customers from the journey based on a real-time event happening. So in this case you can set up an exit criteria for when the customer has a purchase event.

**
:::

:::ExpandableHeading
### Tip 4 - Adding an offer to a message

When creating a message you can ask the Offer Decisioning Engine to include a relevant offer inside the message. Depending of the type of message you're creating this will be available in the UI as a component or through the personalization menu.


### Email

In the email designer there is a dedicated content component for an Offer decision. You can find it in the left menu under Components > contents > Offer decision. You can then define the representation and decision scope you'd like to use.

![](https://api.archbee.com/api/optimize/dbeKUZjDrzT2_E01NuH_J-fAG7eewrciU4ueWiwdn0w-20250321-152434.png)



### Push

In push notifications you can use the Offer Decisioning Engine through the personalization menu. Click on the :FontAwesome[]{icon="fa-solid fa-user"}-**icon** to open the personalization menu. You'll find **Offer decisions** in the left menu.

![](https://api.archbee.com/api/optimize/dbeKUZjDrzT2_E01NuH_J-99tTljIrI3Sm50ywWTIk7-20250321-152816.png)
:::

:::ExpandableHeading
### Tip 5 - Running an offer simulation

You can run simulations for your offer decisions directly in Adobe Journey Optimizer. This is available under Decision Management > Offers > Simulation.

Before you do this, you might want to check your test profile to see what products you have active (you should not receive offers for these) and what your propensity scores are (these should influence the offer priority).&#x20;

When you run your simulation, make sure to increase the requested offer to 3, so you can see the top 3 offers for your test profile.
 <font color="#ff6200">**For the tech-savvy**</font> After you run your simulation you can click :FontAwesome[]{icon="fa-solid fa-code"}  **View code&#x20;**&#x74;o see the request and response payloads of the Offer Decisioning API.
:::

***

::::ExpandableHeading
## Solution

The resulting journey should look something like the image below.

![](https://api.archbee.com/api/optimize/dbeKUZjDrzT2_E01NuH_J-L_WcmxIfv-IS-0iDFo41Z-20250321-141000.png)

The focus on this use case was not the journey. It was all about using the **Offer Decisioning Engine**. You were able to see how offers are created, managed and displayed in different channels. Maybe you even created your own offer along the way.

You can now run this journey in **test mode** to receive the email and see your offer!

An example of this journey is available, called **\[Example] Lifecycle program**.

:::CtaButton{label="See example journey" externalHref="https://experience.adobe.com/#/@demopotemea/sname:sandbox06/journey-optimizer/journeys/journey/307c79cd-8307-4874-b0fe-8d9b3ddba9d1" openInNewTab="true"}

:::
::::

