Prerequisites
Before you begin:- You have data with deliverable identifiers (hashed email, hashed phone, or mobile ad IDs)
- Your identifiers are properly formatted and hashed (see Hashing PII for Upload)
- You understand which identifiers your destination requires (see Data Activation Overview)
Strategy 1: One dataset per audience
Create a separate dataset for each audience you want to deliver. The dataset name and description correspond directly to the audience.Dataset structure
| Field | Description |
|---|---|
sha256_hashed_email | The hashed identifier for each audience member |
When to use this strategy
You build audiences outside Narrative
You build audiences outside Narrative
If your audience creation happens in external systems (CRM, CDP, marketing automation), then export each audience as a separate file for upload.
You use API automation for dataset creation
You use API automation for dataset creation
If you have automated pipelines that create datasets via the SDK, creating a new dataset per audience is straightforward.
Audiences are static or infrequently updated
Audiences are static or infrequently updated
If audiences don’t change often, managing them as separate datasets keeps things simple.
Advantages
- Simplicity: Each dataset maps directly to one audience
- Clear ownership: Easy to track which dataset powers which audience
- Selective updates: Update only the audiences that have changed
Considerations
- Requires creating a new dataset for each new audience
- Can become difficult to manage with hundreds of audiences
- Duplicated records across datasets if users belong to multiple audiences
Strategy 2: Master dataset with audience identifiers
Maintain a single dataset containing all audience members, with columns that identify which audience each record belongs to.Dataset structure
| Field | Description |
|---|---|
sha256_hashed_email | The hashed identifier |
audience_id | Unique identifier for the audience |
audience_name | Human-readable audience name |
Delivering specific audiences
Use NQL to filter for a specific audience when delivering:When to use this strategy
You manage many related audiences
You manage many related audiences
You want simplified data updates
You want simplified data updates
Append new rows to a single dataset instead of managing uploads across many datasets.
You need to add new audiences without creating new datasets
You need to add new audiences without creating new datasets
Adding a new audience is as simple as appending rows with a new
audience_id.Advantages
- Centralized management: One dataset to maintain
- Easy audience additions: New audiences are just new rows
- Efficient updates: Append new data without managing multiple datasets
Considerations
- Requires NQL filtering to extract specific audiences
- Larger dataset size may affect query performance
- Need to maintain unique audience IDs
Strategy 3: Raw data with dynamic audience creation
Upload a master dataset with all available customer attributes, then use NQL to define audiences dynamically based on any attribute combination.Dataset structure
| Field | Description |
|---|---|
sha256_hashed_email | The hashed identifier |
age | Customer age |
gender | Customer gender |
estimated_household_income | Income range or value |
last_purchase_date | Date of most recent purchase |
lifetime_value | Total customer value |
Creating audiences with NQL
Define audiences on-the-fly using any attribute combination: High-income females:When to use this strategy
You want maximum flexibility
You want maximum flexibility
Create any audience segment without re-uploading data or pre-defining audiences.
You prefer minimal data preprocessing
You prefer minimal data preprocessing
Send data to Narrative with minimal transformation and let the platform handle segmentation.
Your audience definitions change frequently
Your audience definitions change frequently
Quickly iterate on audience criteria without modifying source data.
Advantages
- Maximum flexibility: Define any audience criteria without changing data
- Minimal preprocessing: Upload raw data, segment later
- Rapid iteration: Test new audience definitions instantly
Considerations
- Requires familiarity with NQL for audience creation
- Complex queries may take longer to execute on large datasets
- Attribute data must be normalized consistently
Choosing a strategy
| Factor | Strategy 1 (Per Audience) | Strategy 2 (Master + IDs) | Strategy 3 (Raw Data) |
|---|---|---|---|
| Number of audiences | Few (1-20) | Many (20-100+) | Variable/unknown |
| Audience definitions | Fixed | Fixed | Dynamic |
| Data preprocessing | Done externally | Partial | Minimal |
| NQL required | No | Basic filtering | Advanced queries |
| Flexibility | Low | Medium | High |
You can combine strategies. For example, use Strategy 3 for your core customer data while maintaining Strategy 1 datasets for specialized audiences from external sources.
Next steps
After structuring your data:- Normalize your data: Map your fields to Rosetta Stone attributes so connectors recognize your identifiers
- Configure your connector: Install and configure the connector for your destination platform
- Deliver your audiences: Use the connector to push your data to the destination

