What Is an Attribute Group in Salesforce Marketing Cloud Engagement?
An attribute group organizes related data extensions and defines how their records connect to a contact. You create these relationships in Contact Builder, using Data Designer. Journey Builder can then use the linked information as Contact Data in filters and decision splits.

How the data connects
An attribute group can contain data extensions linked directly to the contact record or to other data extensions. For example, you could connect customer details, preferences, and orders in this model:
| Data extension | Records | Primary key |
|---|---|---|
| Customers | One row per customer | CustomerID |
| Preferences | Up to one row per customer | CustomerID |
| Orders | Multiple rows per customer | OrderID |
Link the contact’s Contact Key to Customers.CustomerID, then connect Preferences and Orders through their CustomerID fields. Customers and Preferences have a one-to-one relationship; Customers and Orders have a one-to-many relationship.
Contact Key identifies the contact; a primary key identifies a row. In Orders, OrderID identifies each purchase, while CustomerID connects it to the customer. These data relationships do not clean inconsistent values or merge duplicate contacts.
Creating an attribute group
Prepare your data extensions and identify the fields you will use to connect them before creating the attribute group.
- Open Contact Builder → Data Designer.
- Select Create Attribute Group, enter a name, and save it.
- Link an existing data extension or create a new one.
- Connect its customer identifier to Contact Key.
- Add related data extensions, select the linking fields, and configure the appropriate relationships.
Check that the linking fields contain matching values and compatible data types. If Contact Key contains C10001, a table linked through an email address will not match that value.
Using related data in journeys
A decision split can use linked Contact Data to check a customer’s current preferences, membership status, or purchases.
With a one-to-many relationship, be clear about which record should qualify. A condition such as “Order Amount greater than 100” can match any qualifying order associated with the customer. It does not automatically select their latest order.
If the journey relates to a specific purchase, use an attribute-to-attribute comparison between the Order ID in Journey Data and the Order ID in linked Contact Data.
SQL and email personalization
Attribute groups define the contact model. SQL queries still use the joins and conditions you write, and AMPscript lookups retrieve records using the data extension and matching fields supplied in the function.
Use SQL Query Activities to calculate values such as total spend or latest purchase date and save them into a table with one row per contact.
For email content, you can retrieve additional fields with AMPscript lookups. When several rows can match, define which record you need and handle cases where no record is found.








