Lists vs. data extensions: what are the differences between them? When should you use a data extension, and when is a subscriber list enough?
I had to refresh my memory on some of the topics as I revamped our Marketing Cloud Email Specialist certification guide. Although it has been a while since I passed the certification, the memory of one tough topic has stayed with me: data extensions.
If you’re coming from a marketing automation tool where you have one single database, like Pardot or similar, then data extensions will feel like unchartered waters. In tools that have single databases, all the individual’s data is stored on their record or neatly packaged into related objects (eg. Prospect Accounts, Opportunities, Pardot Custom Objects, in the case with Pardot). Marketing Cloud Data Extensions seemed wild and untamed in comparison!
Marketing Cloud Data Extensions – In a Nutshell
Data extensions exist in Marketing Cloud to “satisfy the need for flexible data storage”. They are flexible, indeed, enabling you to essentially build a table within the app database that contains your data, exactly how you need to structure it.
When deciding if you should you data extensions or lists, it can be boiled down to a single question: does the data have a one-to-one relationship with the subscriber record, or a one-to-many relationship? For example
- One-to-one: Subscriber ID → Last Name. Each subscriber has one Last Name value, known as profile attributes (you can use a list here),
- One-to-many: Subscriber ID → Purchase ID. Each subscriber could have one or many purchases (you need to use a data extension here).
When to Use Marketing Cloud Data Extensions
There are two main use cases that immediately signal you need to use a data extension over a list:
1. Varying values over time
A subscriber can have a varying number values over time, for example, their number of transactions last month is not likely to be consistent, so it’s difficult to predict month to month.
On the other hand, an attribute like ‘Last Name’ fits as a profile attribute because a subscriber will have one, consistent last name.
2. Data is related via 3rd data point
The data point you need to use is not directly related to the subscriber. It’s related to the subscriber via another data point, a 3rd data point in between that acts as a bridge. The best example that you’ll find in the Marketing Cloud resource docs is pulling in the name for a subscriber’s ‘preferred airport’; the airport code is stored on the subscriber, which can be used to lookup to the data extension that lists airport codes and their names. By using the airport code as the golden link, you can pull in the name of the airport.
When to Use Marketing Lists
To learn about Marketing Cloud Lists, read our guide here.
Marketing Cloud Lists vs. Data Extensions
For the Marketing Cloud Email Specialist exam, you need to compare data extensions and lists and know when to use each. Here are the facts in one table. The rows in the first table are absolutely essential for you to learn! (a second table goes into more detail afterwards).
|Use a list when…||Use a data extension when...|
|No. Subscribers||Will contain less than 500,000 subscribers||Will contain more than 500,000 subscribers (think long term!)|
|Import speed||Don’t require fast import speed||Require fast import speed|
|Subscriber attributes||Use a limited no. subscriber attributes||Use multiple subscriber data sets (with separate definitions)|
|APIs||Use the XML API||Use the SOAP/REST APIs|
|Sending||- Email sending only. |
- Emails without transactional data (ie. simple segmentation and personalization based on attributes stored on the Subscriber record)
|- Send global messages |
- Implement triggered sends
|Personal preference||Prefer simplicity||Prefer flexible subscription model (obviously you don’t have a choice when faced with certain requirements!)|
There is another comparison table that you should learn. What you see below is a distilled version of this table published by Salesforce that used to revise for the exam; if you are starting out, I recommend you refer to the original table that goes into more depth.
|Creating||*In app |
1. Name it
2. Determine if public/not public (ie display in subscription centre)
|1. Name it |
2. Create fields
3. Chose sendable/not sendable
|Single record add||Yes||No manual add feature, but can be done via API calls|
|Update options||- Add & update|
- Update only
- Add only
|- Overwrite |
- Add & update
- Update only
- Add only
|List detective scrub||At time of import||At time of send|
|Publication list||n/a||Use to manage subscriber-level opt-ins/outs|
|Web collect||Supported||Not supported|
|Profile/preference attributes||Can create via UI |
(For Enterprise accounts: can share attributes amongst all BUs, values stored are global)
Text, numeric, date, boolean
|Data extension fields||n/a||Subscriber data fields stored at the data extension level - ie. making them just like list-level attributes |
Text, numeric, date, boolean, email, phone, decimal, locale