---
title: Campaign Activities
slug: old-ajoco-feb26-lab-old/campaign-activities
docTags: 
createdAt: 2025-10-15T23:29:41.763Z
---

Orchestrated campaign activities in Adobe Journey Optimizer empower you to design seamless, data-driven marketing journeys that connect with your audience at the right time and through the right channels. By combining targeting, channel, and flow control activities, you can define precise audience segments, personalize messages, and automate complex workflows. Whether you’re building audiences, synchronizing campaign branches, or adding delays for perfect timing, these activities work together to streamline your campaign execution. With tools like Enrichment for data enhancement or Split for audience segmentation, you’ll have a flexible toolkit to create meaningful, impactful customer experiences. More information about [Activities](https://experienceleague.adobe.com/en/docs/journey-optimizer/using/campaigns/orchestrated-campaigns/design-campaigns/about-activities).&#x20;

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/RDJ3vx_g4pqgd31GsFsld-20251015-233823.png)

## Add Fork

A Fork enables users to create independent linear flows, resulting in distinct actions. While there are mechanisms to join these flows, this lab will focus on 3 typical use cases: Enrichment, using data from adhoc Lists, and Multi-Entity Blast Messaging. We will utilize a Fork to develop these separate pathways.

1. Click on the plus sign and select Fork and add paths, so we have 3 transitions

Name First Transition: Top Path. Then Follow these steps:

:::Paragraph{listStyleType="decimal" indent="2"}
Add a Build Audience Node&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Click the folder icon next to Targeting Dimension, select **uc1\_recipients**. Do not select your table. Select the one without a number.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
Click Create an audience. Add a Condition.
:::

:::Paragraph{listStyleType="decimal" listStart="4" indent="2"}
Search for the customerTier field and select it.&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="5" indent="2"}
Set the *customerTier equals to Platinum*
:::

:::Paragraph{listStyleType="decimal" listStart="6" indent="2"}
Click Add Condition.&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="7" indent="2"}
Select bookingDate and confirm
:::

:::Paragraph{listStyleType="decimal" listStart="8" indent="2"}
Select Presets
:::

:::Paragraph{listStyleType="decimal" listStart="9" indent="2"}
Select Last Quarter and confirm.
:::

:::Paragraph{listStyleType="decimal" listStart="10" indent="2"}
**Confirm**
:::

Name Second Transition: Middle Path. Then Follow these steps

:::Paragraph{listStyleType="decimal" listRestartPolite="1" indent="2"}
Add a Build Audience Node&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
Click the folder icon next to Targeting Dimension, select **uc1\_bookings**. Do not select your table. Select the one without a number.
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
Click Create an Audience. Add a Condition.
:::

:::Paragraph{listStyleType="decimal" listStart="4" indent="2"}
Search and add the following query: **bookingDate** *Equal to* **Last Quarter**
:::

:::Paragraph{listStyleType="decimal" listStart="5" indent="2"}
**Confirm**
:::

:::Paragraph{indent="1"}
Note: we will "join" with an Ad-hoc list which only includes platinum customers. This is to show how can you also rely on those one off campaign data with more permanent transactional data like bookings.&#x20;
:::

Name Third Transition: Bottom Path. Then Follow these steps

:::Paragraph{listStyleType="decimal" listRestartPolite="1" indent="2"}
Click on the middle Audience Node.&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="2" indent="2"}
In the properties panel, click the copy icon.&#x20;
:::

:::Paragraph{listStyleType="decimal" listStart="3" indent="2"}
Then, click on the plus sign of the bottom path, and find the paste item.&#x20;
:::

## Add Enrichment

- **On the top transition path**, click the plus sign next to its query, and select the Enrichment Node.&#x20;
- Click add enrichment data.
- Click Targeting dimension, and select **uc1\_bookings > ProductName**
- Click Add Attribute, and select **uc1\_bookings > fromPort**

## Add a Reconciliation Node

- **On the Middle transition path**, click the plus sign next to its query, and select the Reconciliation.&#x20;
  - **The Goal for this reconciliation is because we started with our transactions table (bookings), and now we want to map all recent bookings into users that belong to a list "uploaded" by the DBA.**
- Select **loyalty\_lists** as a new targeting dimension.
- Select Simple Attributes and click on Add Rule.
- On the Join 1, click on the pencil for Source
- Select emailAddress
- click on the pencil for Destination
- select recipientId
- Click Add a Filter
- Create a filter with a condition such as "campaignId contains SPRING", save.
- Restart your workflow.

### Reconciliation Node results

- After the workflow runs, click on the Result node in the canvas next to our reconciliation node.&#x20;
- Click Preview results.
- Click on the Config icon on the top right (right next to the reload button).
- Notice we are now only filtering those customer with recent purchases/bookings and belong to our campaign for spring.&#x20;
- Notice that we have different purchase records for each list recipient (listRecipientId).&#x20;
- This means we have dupes. We will deal with this later.

### Reconciliation with Recipients

- After the Loyalty\_list reconciliation node, add another reconciliation.
- This time select uc1\_recipients dimension.&#x20;
- Use Simple Attributes
- The Join Rule: recipientId (from the Bookings) as the Source with Destination Email Address from Recipients.&#x20;
- Hit Restart.

## Adding a Deduplication Activity

- On the middle path, add a Deduplication activity node.&#x20;
- Add an attribute to reconcile. We want to reconcile using our listRecipientId since we want only those platinum users on the list.&#x20;
- Leave deduplication settings as they are.&#x20;
- Restart your workflow. Now, we will remove the dupes.&#x20;

## Adding a Split Node

- On the bottom path, next to the audience node, add a split node.
- Click On subset
- Click Create Filter, then on Create Rule
- Search for Offer Code
- Switch the Operator to Contains
- Value: CRU, click confirm
- Enable the toggle Generate Complement
- Click Re-start.

## Multi-Entity Message Blasts

- On the Subset path of our split, add a Change Dimension Node
- Select uc1\_recipients.
- Click Re-start.&#x20;

## Save New Audiences

- On the middle path, at the end of the deduplication node, add a Save Audience Node.
- Give it a Name.
- Select uc1\_recipients - emailAddress&#x20;
- Click Save.&#x20;

## Add Channel Activities (Email)

- Add an email to the end of the top and bottom paths.&#x20;
- Click Save. Then Restart.

**Congratulations you have completed the campaign activities and workflows lab succesfully.&#x20;**

