External Segments Provider Integration
DAS DMP Integration Guide
Overview
This documentation provides technical details for integrating a Data Management Platform (DMP) with our Dream Adserver (DAS) system. The integration enables partners to pass user segments created in their DMP to our advertising platform for targeted email marketing campaigns.
System Architecture
Dream Adserver (DAS) is part of the Ring DAS ecosystem that delivers display and email advertisements. The platform utilizes two primary user identifiers:
- LU (Local User): Browser-based identifier stored in third-party cookies
- AID (Advertiser ID): Hashed email identifier for logged-in users
User Identification System
LU (Local User) Identifier
- Format: Date-based prefix + unique identifier
- Example:
201905161437551994208900 - Storage: Third-party cookies
- Purpose: Browser-based user tracking
AID (Advertiser ID)
- Format: Hashed user email
- Example:
45721b293195c854cdc4f161e3129910 - Purpose: Logged-in user identification across sign-in systems
- Note: Segments must be assigned separately for AID and LU even for the same user
Integration Methods
1. Key-Value Integration
The primary integration method uses key-value pairs to map user identifiers to segment lists.
Data Format
# Adding segments
"aid:60225704e0dab8df3fcf0ab7fd7fb366","['1181']"
"lu:201905161437551994208900","['1', '2', '3']"
# Removing specific segments (using negative IDs)
"lu:202512061231312560201331","['-1192','-1181','-1360','-1120']"
# Mixed operations (add 1181, remove 1192)
"lu:123456789","['1181','-1192']"Key Structure
- LU Format:
lu:{identifier} - AID Format:
aid:{identifier}
Value Structure
- Segment IDs as JSON array of strings
- Positive IDs: Add segments (e.g.,
['1', '2', '3']) - Negative IDs: Remove segments (e.g.,
['-1181', '-1192']) - Mixed Operations: Combine additions and removals (
['1181', '-1192'])
2. PPID Integration
For Publisher Provided Identifier scenarios, maintain the same key-value structure with appropriate identifier mapping.
3. AID for Mailing Campaigns
AID identifiers are specifically used for email marketing campaigns, enabling cross-device user tracking through logged-in sessions.
AWS S3 Bucket Structure
Bucket Organization
adpaudbucket-for-external-provider/
├── {provider_name}/
│ ├── {network_id}/
│ │ ├── {YYYYMMDD}/
│ │ │ └── segments_file.csv
Path Components
- First Level: Provider name (your DMP provider identifier)
- Second Level: ADP Network ID
- Third Level: Date in YYYYMMDD format
- File: CSV containing segment assignments
File Processing Configuration
Processing Arguments
Add configuration lines at the beginning of CSV files to modify processing behavior:
set argument_name
Available Arguments
not_extend_existing: Prevents extension of existing segment memberships; only adds new segments
Processing Rules
- Missing Records: If no record exists for LU/AID, current segments remain unchanged
- Complete Segment Lists: Include all current segments in each file
- Segment Operations:
- Negative IDs:
['-1181', '-1192']removes specific segments - Remove All: Send negative IDs for all currently assigned segments
- Mixed Operations:
['1181', '-1192']adds 1181 and removes 1192 - Skip User: Omit user from file entirely to leave segments unchanged
- Negative IDs:
- Segment Validation: Negative segment IDs are validated against their positive counterparts
- Segment Limits: Maximum 10,000 segments per user (configurable)
- Segment Expiration: Segments older than 60 days are automatically removed
- Compaction: When user has >200 segment differences, system compacts old segments
- Optimization: Exclude records unchanged for 60+ days to reduce file size
Cookie Matching Requirements
User Matching Process
Implement cookie matching by sending ADP user identifiers (LU, AID) via integration pixel to your DMP system.
Recommended Flow
- User visits publisher site
- Publisher collects LU/AID identifiers
- Identifiers sent to DMP via pixel integration
- DMP maps identifiers to internal user profiles
- Segment assignments returned via S3 delivery
Segment Management
Creating Audience Segments
Before delivering segment data, segments must be defined in the ADP system using our GraphQL API.
GraphQL Mutation Example
mutation setAudienceSegment($audience_segment: IMAudienceSegmentInput!) {
dream_audience {
set_audience_segment(audience_segment: $audience_segment) {
audience_segment_id
}
}
}Variables Example
{
"audience_segment": {
"audience_segment_id": null,
"audience_segment_expire": 5184000,
"audience_segment_name": "Business News Junkies",
"audience_segment_status": "ACTIVE",
"audience_segment_type": "STATIC",
"audience_segment_description": "Users frequently browsing business content"
}
}Querying Audience Segments
query audience_segments($limit: Int = 2, $offset: Int = 0, $sort: JSON, $filter: JSON) {
dream_audience {
audience_segments(limit: $limit, offset: $offset, filter: $filter, sort: $sort) {
total_count
edges {
audience_segment_id
audience_segment_name
audience_segment_description
audience_segment_status
audience_segment_type
audience_segment_membership_expire {
value
name
}
}
}
}
}Archive Audience Segment
mutation archiveAudienceSegment($id: Int!) {
dream_audience {
archive_audience_segment(object_id: $id)
}
}Data Delivery Specifications
File Format
- Type: CSV (Comma Separated Values)
- Example filename:
segments_file.csv
Data Requirements
- Identifier Validation: Ensure LU/AID format compliance
- Segment ID Validation: Verify segment IDs exist in ADP system
Processing Schedule
- Frequency: Hourly processing
- Latency: 7-hour delay due to data availability
Error Handling
Common Issues
- Invalid Identifiers: Malformed LU/AID identifiers
- Unknown Segments: Segment IDs not defined in ADP system
- File Format Errors: Invalid CSV structure or encoding
- Access Permissions: S3 bucket access issues
Data Export for DMP Enhancement
S3 Data-Ingest Access
External DMP providers can enhance their user profiling and segmentation by accessing event data from our data export system.
Available Event Data
The system exports aggregated event data including:
- Click events from Google Ad Manager and Ring AdServer (DAS)
- Open events for email campaigns
- Campaign metadata including advertiser, deal, lineitem, and creative information
Data Structures
Ads Data (export_1px)
export_1px(
lu string, // Local User identifier
aid string, // Advertiser ID (hashed email)
event string, // Event type (click, open)
event_timestamp timestamp, // Event occurrence time
advertiser_name string, // Advertiser information
deal_name string, // Deal information
lineitem_name string, // Line item details
creative_name string, // Creative information
lineitem_id string, // Line item ID
site string, // Publisher site
slot string, // Ad slot information
type string, // Event type classification
category string, // Content category
brand string // Brand information
)
Conversions Activities Data (export_1px_conversions_activities)
export_1px_conversions_activities(
data_source string, // Data source identifier
lu string, // Local User identifier
aid string, // Advertiser ID (hashed email)
event_type string, // Type of conversion event
event_timestamp bigint, // Event occurrence timestamp
lineitem_id string, // Line item identifier
lineitem_name string, // Line item name
creative_id string, // Creative identifier
creative_name string, // Creative name
deal_id string, // Deal identifier
deal_name string, // Deal name
advertiser_id string, // Advertiser identifier
advertiser_name string, // Advertiser name
product_quantity int, // Quantity of products
site_type string, // Type of site
basket_quantity double, // Basket quantity
product_id string, // Product identifier
product_price int, // Product price
product_name string, // Product name
product_brand string, // Product brand
product_category string, // Product category
activity_id int, // Activity identifier
activity_name string // Activity name
)
S3 Data Locations
data-ingest/
├── ads_data/
│ ├── d_date_id=YYYYMMDD/
│ │ ├── d_hour_id=HH/
│ │ │ └── ad_data_YYYYMMDD_HH.parquet
│ │ └── conversions_activities_data/
│ │ └── d_hour_id=HH/
│ │ └── conversions_activities_data_YYYYMMDD_HH.parquet
└── prg_data/
└── bidder/
└── d_date_id=YYYYMMDD/
└── bidder_data_YYYYMMDD.snappy.parquet
Data Characteristics
- Processing Frequency: Hourly
- Data Latency: 7-hour delay due to data availability requirements
- Partitioning: By date and hour for efficient querying
Typical Data Volume
- Average hourly records: Varies by event type and traffic
- File Format: Compressed Parquet files for optimal storage and processing
Integration Benefits
By accessing both segment delivery (via primary S3 bucket) and event consumption data (via data-ingest), DMP providers can:
- Close the Loop: Match delivered segments with actual user behavior
- Optimize Segmentation: Refine user profiles based on engagement patterns
- Performance Analysis: Evaluate segment effectiveness across campaigns
- Cross-Channel Insights: Combine display and email campaign performance
Access Requirements
- Separate S3 Credentials: Data-ingest access requires additional permissions
- Regional Considerations: Files are processed across multiple AWS regions
- Data Retention: Historical data availability varies by retention policies
Integration Testing
Required for Setup
- Network ID assignment
- S3 bucket access credentials (segment delivery)
- S3 data-ingest access credentials (event data)
Note: Specific testing procedures and support details should be provided by the ADP team during onboarding.
Updated 4 days ago
