Adobe Campaign, Marketing Automation

ACC Activity | How to use enrichment

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

Adobe Campaign Classic tips
ACC Tips & Tricks, Adobe Campaign

ACC TIPS | Reselect temporary schema in query

less than a minute read

When working with the Query activity in Adobe Campaign Classic, you have the choice to select either the Temporary schema or the Database schema. If you opt for the Temporary schema, it is essential to reselect it even if it is preselected with a default value. Here’s why it’s important to explicitly reselect the Temporary … Read more

Continue reading
Adobe campaign tips and tricks
ACC Tips & Tricks, Adobe Campaign

ACC TIP | How To Convert Base64 to PDF attachment

1 minute read

In this article, I will provide a simple trick for converting Base64 encoded data to PDF using JSAPI in Adobe Campaign Classic. Due to AC’s inability to attach Base64-encoded files directly to emails, this method can prove to be highly useful. Base64 data format that would be easy to use when supperted by Adobe Campaign … Read more

Continue reading
Marketing automation tips
Marketing Automation

TIP | Sending SMS with Unicode Characters

1 minute read

Are you planning to send SMS messages with Unicode characters? If so, you may be wondering why your messages are split into multiple messages even though they don’t exceed the character limit. Here’s what you need to know about sending SMS messages with Unicode characters. What are Unicode Characters? Unicode is a character encoding standard … Read more

Continue reading
Adobe campaign tips and tricks
ACC Tips & Tricks, Adobe Campaign, Marketing Automation

ACC TIP | Export connection strings

less than a minute read

Whether you change your laptop or want to save actual configuration for your colleagues. You can easily achieve that by taking all connection strings as XML. ims – connection over adobe id SSO Also similar approach is to directly change the connection string file nlclient_cnx.xml that is located under your local AppData folder. To quickly … Read more

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

SFMC | Queries are case insensitive

1 minute read

I recently discovered that when querying data views, case sensitivity in column names doesn’t make a difference; it consistently picks up the column when named correctly. Let’s explore where else column case sensitivity doesn’t play a significant role. First let’s create a data extension with some columns so we can test following in Query studio, … Read more

Continue reading