Adobe Campaign, Marketing Automation

How to use enrichment activity in workflow

Adobe Campaign Classic enrichment activity

The Enrichment activity in Adobe Campaign Classic is a versatile tool that allows campaign managers to enrich their targeting data with additional information from various data sources.

In technical terms, the Enrichment activity can be likened to performing a JOIN operation. A JOIN operation is a fundamental concept in database management systems (DBMS), where data from two or more tables is combined based on a common field or key. Similarly, the Enrichment activity allows you to combine and merge data from multiple sources into a cohesive and enriched customer profile.

Apart from JOIN-ing tables you can also add computed fields with use of Adobe Campaign’s expression builder. Computed fields provide flexibility in manipulating and transforming data to derive meaningful insights or create custom attributes that can be utilized in your marketing campaigns. By applying expressions, you can perform calculations, apply conditional logic, concatenate strings, format dates, or perform any other data manipulation operations that are supported by Adobe Campaign’s expression language.

You can find the Enrichment acativity on the first tab of the targeting activities.

Add data

To add data, you simply open enrichment activity and click on Add data... link.

  • Data linked to the filtering dimension – You can select to link data that are linked to your targeting dimension. That means table you have selected in the previous step has database relation established in its schemas
  • An offer proposition – Adds offer from the offer engine to the targeting dimension
  • A predictive score – adds predecitive score based on the model. This alone might be separate blog, as there is almost no documentation.
  • A link – For database tables that do not have database relation set e.g. reconcile records with quarantine nms:address table.

In my seven years of using Adobe Campaign Classic, I have only used the first and last options. I will show you all the necessary settings required to get started with only these two options.

NOTE: You can order newly created columns only after you have finished adding them. To do so, click on Edit additional data, and then simply click on the arrow to move your columns up or down.

Data linked to the filtering dimension

On the next page of the enrichment wizard you can select two options

  • Data of the filtering dimension – to create new columns from already existing columns within the same table, you can use expressions. For instance, if you want to create a new column that only contains the email domain, you can use an expression builder to remove everything but the domain from the recipient email.
  • Data linked to the filtering dimension – you can add columns from other linked tables, with the relation being either 1-1 or 1-N. In a 1-N relationship, you will need to create an aggregate function to retrieve only one record from the linked table. For example, you can retrieve the last click for a particular recipient.

The first option is relatively easy and you can hop directly to the compounding of your columns and create new ones. For the second option we have quite possibilities lets explore them together one by one.

Database link 1-1

This is also easy to set up since the link is already defined and established by the database relations in the schema. Here’s a step-by-step guide:

  1. Select all the columns you want to include in your targeting dimension.
  2. As an example, let’s consider the most common link, which is the link to the nms:country table.
  3. Find the link in the field browser, and by simply double-clicking on any field you desire, you can enrich your targeting dimension with additional data.

By following these steps, you can easily establish the desired connections and enhance your targeting dimension with the selected columns.

Database link 1-N

With one-to-many link you will need to either retrieve last X records after meeting certain conditions or create aggregate function e.g. sum or count values e.g. count how many deliveries we have sent to a particular recipient.

We have couple of options to retrieve columns from linked table:

  • All rows – this is similar to a LEFT JOIN, as it adds all the records that meet certain criteria defined in the condition builder on the next step.
  • Limit the line count – select the columns you want to include in your targeting dimension and specify a line count limit of three. This will create three columns: <identifier>1, <identifier>2, and <identifier>3, representing the respective delivery records. Also very usefull for retrieving information type of last click, open or email sent.
  • Single row (expert user) – this option may not work as expected or be less commonly used, as I have never personally been able to successfully configure it or utilize it.
  • Aggregates – Most commonly option used where usually

A link

As I mentioned before, we use a custom link to connect tables or your temporary schema in the targeting dimension with any table using an identifier e.g. loaded csv to the workflow with the any table in your database, linking nms:address (quarantined addresses) with the recipient table.

  • Define a collection – This is relation 1-N which means this acts exactly as LEFT JOIN
  • Define a link whose target is always available – This is relation 1-1 this acts exacrly as DISTINCT LEFT JOIN
  • Define link whose target may not exists in the database – This is relation 1-1 this acts exacrly as DISTINCT INNER JOIN
  • Define a link by searching for a reference among several options – no idea, this is beyond my mental capacity. There is so many options you can set and I have no idea how do I set it or what should it do. If you happen to know please let me know 🙂


The practical difference between a LEFT join and an INNER join is that a LEFT join will include unreconciled records in the subsequent workflow stream, while an INNER join will not. This can be useful for segmenting, as it allows you to exclude records that do not have any orders from being passed down the line.

Link multiple inbound transitions

Additionally, you can also combine different inbound transitions and join them together. Yes, enrichment can take multiple inbound populations and you can combine incoming data with link

Select primary set, targeting data, which you want to keep after enrichment.

Create Link data type and select to use Temporary schema. Create the JOIN conditions as needed and add data to the main set.

Computed fields

If you need to compute a new value based on the information already available in your targeting dimension, you can apply any logic to create a new field. You have the option to use expressions from the expression builder or concatenate multiple fields into one. Please remember that the expression builder uses SQL language, so you need to follow its syntax for concatenation. If you cannot find a specific function in the expression builder, you can add it using a package. I will provide information about how to do this in an upcoming blog post.

'string1 + string2 + string_n
@field1 + '-hey' + [linkedField/@field2]
  1. Expression builder – you can create new field using different fields and fuctions
  2. Available fields – fields you can use to create new fields
  3. Function lists – custom SQL functions that you can use in the Expression Builder. These functions can be enhanced by installing a special SQL functions package, which I will cover in a separate blog post in the future.

NOTE: Some feateres are accessible only after you establish the link. For example Advanced parameters...

NOTE: You can always return to your established links after you defined them. Navigate to respective tab and double click on the link or select and click on the magnifier glass.

  1. You will find there the Data linked to the filtering dimension type of data
  2. You will find there A link type of data
  3. all the links available for given tab. You can always edit themm, after they were created

NOTE: You can create as many links you want from each category

Let me know if you found this blog post interesting. I will be returning to it and add all the other information I have not mentioned in the first version of it.

Oh hi there 👋
I have a FREE e-book for you.

Sign up now to get an in-depth analysis of Adobe and Salesforce Marketing Clouds!

We don’t spam! Read our privacy policy for more info.

#Activity deepdive #workflow
Marcel Szimonisz
Marcel Szimonisz
MarTech consultant As a marketing automation consultant, I specialize in solving problems, automating processes, and driving innovation in my clients' marketing platforms.

I hold certifications in Adobe Campaign v6 (3x certified) and Salesforce Marketing Cloud (5x certified).

Additionally, I serve as a community advisor for Adobe Campaign, offering expert insights and guidance.

In addition to my professional pursuits, I also enjoy exploring various programming languages, CMSs, and frameworks, further enhancing my technical expertise and staying at the forefront of industry advancements.
Take a look at our subscription offering in case you are looking for a Marketing Automation Consultant.

Leave a comment

Your email address will not be published. Required fields are marked *

Similar posts that you may find useful

SFMC tips and tricks
Marketing Automation, Salesforce Marketing Cloud, SFMC Tips & Tricks

SFMC TIP | Data views for transactional emails

1 minute read

Data views in Salesforce Marketing Cloud are very handy, when it comes to getting data insights from various sources inside the platform. I will give you a quick start on how to get data insights for you transactional emails using data views. We will use data from _Sent, _Job, and _Subscriber view s.TriggererSendDefinitionObjectID – object […]

Continue reading
Salesforce Marketing Cloud Tips
Marketing Automation, Salesforce Marketing Cloud, SFMC Tips & Tricks

How to use MD5 in SQL and AMPScript

1 minute read

Message Digest 5 (MD5) is a hash function used for data integrity, but it is not suitable for security-critical applications. It has found use for various applications, one of which is to create an encrypted contact subscriber key. MD5 takes any string and produces a fixed-size (128-bit) hash value, that cannot be easily decrypted. To […]

Continue reading
SFMC tips and tricks
Marketing Automation, Salesforce Marketing Cloud, SFMC Tips & Tricks

SFMC TIP – Double quotes in AMPScript break email template

less than a minute read

Very recently I have found that when I add any AMPScript function to eg. button URL field SFMC will just ignore everything that follows after the first occurrence of the double quote. Simple fix is to use single quotes instead.

Continue reading
Salesforce Marketing Cloud Rant
Marketing Automation, Salesforce Marketing Cloud, SFMC Rant

SFMC RANT: Inline AMPScript mystery

3 minutes read

Working with Salesforce Marketing Cloud, I’ve learned that you often need to try different workarounds until you achieve the desired result. To succesfully solve problems, it all depends on your experience and patience. Recently, I did a significant amount of work with AMPScript and personalization and wrote many tips during these days. It seems that […]

Continue reading
Mastering Marketing Automation: From Data to Engagement
Marketing Automation

Mastering Marketing Automation: A Guide

6 minutes read

Marketing automation is a technology-driven strategy that streamlines, automates, and measures marketing tasks and workflows. It aims to enhance efficiency, personalize customer experiences, and drive results by utilizing software platforms and technologies to automate repetitive tasks and nurture leads through the sales funnel. Marketing automation is a multifaceted process comprised of four essential steps. First […]

Continue reading