What are Data Extensions?
A Data Extension (DE) is a database table inside SFMC. It has rows (records) and columns (fields) — just like a spreadsheet or a database table. Data Extensions are the professional standard for managing subscriber data in SFMC and are used for virtually everything: send audiences, personalisation data, transactional records, and automation results.
Think of a Data Extension as a spreadsheet where each column is a field you define (e.g. SubscriberKey, EmailAddress, FirstName, Country) and each row is one subscriber record. Unlike a spreadsheet, a DE can store millions of rows, supports SQL queries, and integrates natively with every SFMC feature.
Lists vs Data Extensions
| Lists | Data Extensions | |
|---|---|---|
| Fields | Fixed set of system fields only | Fully customisable — any fields you define |
| SQL queries | Not supported | Full SQL support |
| Journey Builder | Not supported as entry source | Primary entry source type |
| Volume | Best for small audiences | Scales to tens of millions of records |
| Automation | Limited | Full automation support |
| Best used for | Simple, infrequent use cases only | Everything — professional standard |
If you're starting fresh or migrating from Lists, use Data Extensions from the start. Lists are limited, don't scale, and prevent you from using many SFMC features. There's no good reason to choose Lists over DEs except for legacy systems that already depend on them.
Field types
When you create a DE, each column has a data type. Choosing the right type matters for storage, filtering, and SQL operations.
| Type | Use for | Max length |
|---|---|---|
| Text | Names, addresses, categories, free text | 4,000 chars |
| Number | Integer values (IDs, counts, quantities) | — |
| Decimal | Currency, percentages (e.g. 19.99) | — |
| Date | Dates and datetimes | — |
| Boolean | True/false flags (e.g. OptIn, IsActive) | — |
| EmailAddress | Email addresses — validates format automatically | 254 chars |
| Phone | Phone numbers in E.164 format | — |
| Locale | Language/locale codes (e.g. en-GB, fr-FR) | — |
DE types
| Type | Description |
|---|---|
| Standard | A regular DE — the default type. Used for everything except direct sending. |
| Sendable | A DE that can be used as a send audience. Must have an EmailAddress field linked to Subscriber Key. |
| Shared | A DE in the parent/enterprise BU shared across all child business units. |
| System Data View | Auto-populated by SFMC with send/open/click/bounce events. Read-only for SQL but not editable. Prefixed with underscore: _Open, _Click, etc. |
Creating a Data Extension
-
1Navigate to Email Studio → Subscribers → Data Extensions → CreateOr use Audience Builder or Contact Builder for DEs that need to be part of the contact model.
-
2Name it clearlyUse a consistent naming convention. Recommended format:
[Type]_[Purpose]_[YYYYMM]or[Programme]_[Description]. Examples:Segment_ActiveUK_202606,Master_Subscribers,Temp_WelcomeJourneyEntry. -
3Set data retentionFor segment/temp DEs, set a data retention period (e.g. 6 months). For master subscriber DEs, set to "None" or indefinite. Retention policies auto-delete data after the set period — be careful with master DEs.
-
4Add fieldsAdd all the columns you need. For every DE that will be used for email sends, include at minimum:
SubscriberKey(Text, Primary Key) andEmailAddress(EmailAddress type). -
5Set the primary keyMark the field(s) that uniquely identify each row as the Primary Key. For subscriber DEs, this is almost always
SubscriberKey. The primary key determines how upsert operations work — if a record with the same key exists, it's updated; otherwise it's inserted.
Importing data
You can get data into a DE several ways:
Manual import
In the DE record, click Import. Upload a CSV file and map columns to fields. Choose the import type:
- Add & Update — upsert: updates matching rows, inserts new ones (most common)
- Add Only — inserts new rows, skips existing
- Update Only — updates existing rows, skips new
- Overwrite — replaces ALL data in the DE with the import file
Import Activity (Automation Studio)
For scheduled or file-triggered imports. The file is placed on SFMC's SFTP server and the import activity picks it up. This is the standard approach for nightly data feeds from CRM or e-commerce systems.
REST API
Insert or upsert records via the Data Events API endpoint. Used for real-time updates from websites or apps (e.g. form submissions, purchase events).
AMPscript / SSJS
Use UpsertDE(), InsertDE(), etc. in AMPscript for writes from emails or Cloud Pages.
Sendable Data Extensions
A Sendable DE is a DE you can use as a send audience in Email Studio or Journey Builder. To make a DE sendable:
- Check the "This data extension can be used for sending" option when creating it
- Map the EmailAddress field to the send (tells SFMC which column contains the email address)
- Map the Subscriber Key relationship (tells SFMC which column is the unique identifier — typically
SubscriberKey)
The Subscriber Key mapping determines how SFMC links the DE record to the All Subscribers list and contact model. Mismatched keys can cause duplicate subscriber records, incorrect unsubscribe tracking, and broken personalisation. Get this right from the start.
Data model design
A well-designed SFMC data model makes everything easier: faster queries, cleaner journeys, simpler personalisation. Here are the core principles.
Recommended DE structure
| DE name | Contains | Type |
|---|---|---|
Master_Subscribers | One row per subscriber: SubscriberKey, EmailAddress, name, demographics, opt-in status | Sendable |
Master_Preferences | Communication preferences per subscriber per channel/programme | Standard |
Trans_Orders | One row per order: OrderID, SubscriberKey, ProductID, OrderValue, OrderDate | Standard |
Trans_Products | Product catalogue: ProductID, ProductName, Category, Price, ImageURL | Standard |
Segment_ActiveEngaged | Current active+engaged subscribers — refreshed daily by SQL query | Sendable |
Suppress_Global | All addresses to suppress from batch sends | Standard |
JourneyEntry_Welcome | New subscribers eligible for the welcome journey — refreshed daily | Sendable |
Design principles
- One source of truth — keep master subscriber data in one DE, not scattered across dozens
- Separate concerns — demographic data, transactional data, and preferences in different DEs, joined via Subscriber Key
- Never modify a running send audience — segment DEs should be purpose-built for a specific send or journey, not the master DE
- Temp DEs for automation outputs — SQL query results should write to dedicated segment DEs, not into master data
- Set retention on temporary DEs — avoids accumulating stale data that inflates storage costs
Contact Builder
Contact Builder is the data model manager for SFMC. It lets you define relationships between your DEs and the central Contact record — creating a unified profile for each subscriber.
Why it matters
- Journey Builder can query linked DEs when making decision split choices
- Enables unified contact profiles visible to support and sales teams (if using MC Connect)
- Required for Einstein features that analyse cross-DE data
- Allows cross-DE suppression based on contact attributes
Setting up relationships
In Contact Builder, go to Data Designer. Link your DEs to the Contact record via a shared key (usually Subscriber Key). Define whether the relationship is one-to-one (one DE row per contact) or one-to-many (multiple DE rows per contact — e.g. orders, events). Once linked, Journey Builder and other tools can traverse these relationships.