Dynamic Yield
Sync user profiles, events, and product catalogs to Dynamic Yield (a Mastercard company) for AI-powered personalization, product recommendations, A/B testing, and experience optimization. Zeotap keeps your Dynamic Yield data in sync with your warehouse, enabling real-time audience targeting and product discovery.
Prerequisites
- A Dynamic Yield (Mastercard) account with access to Experience OS
- A server-side API key with the required ACL permissions enabled
- Your data center region (United States or Europe)
- Feed ID for user data or product feed syncs (found in Assets > Data Feeds)
Permissions
Your Dynamic Yield API key must have the following ACL permissions enabled depending on the object type you are syncing:
| Object Type | Required Permissions |
|---|---|
| User Data | User Data Profile |
| Events | Experience API, User Data Events |
| Product Feed | Feed |
To manage permissions, go to Settings > API Keys in Dynamic Yield and edit the key’s ACL settings.
Authentication
Dynamic Yield uses API Key authentication with a dedicated HTTP header.
- In Dynamic Yield Experience OS, navigate to Settings > API Keys
- Click New Key and enter a descriptive name (e.g. “Zeotap Sync”)
- Select Server-side as the source type
- Enable the required ACL permissions for your sync type (see Permissions above)
- Click Save and copy the generated API key
- Paste the API key into the API Key field in Zeotap
The API key is sent as the DY-API-Key HTTP header on every request.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| Data Center | Select | Yes | The Dynamic Yield API data center region for your account. Options: United States (dy-api.com) or Europe (dy-api.eu). |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Object Type | Select | Yes | The type of data to sync: User Data, Events, or Product Feed. |
| Feed ID | Text | Conditional | Required for User Data and Product Feed syncs. The numeric feed ID found in Assets > Data Feeds in Dynamic Yield. |
| User ID Type | Select | Conditional | Required for User Data and Events syncs. The type of user identifier: Customer User ID (cuid), Hashed Email (he), Dynamic Yield ID (dyid), or Dynamic Yield Server ID (dyid_server). |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | Yes |
| Update | — |
| Mirror | — |
Audience Sync Modes
Dynamic Yield does not have a list or segment membership API. Audience segments in Dynamic Yield are computed from user attributes and behavioral data, so membership is managed by the platform rather than via direct API calls. Use regular sync modes to update user profiles with attributes that Dynamic Yield can use for audience segmentation.
Features
- Field Mapping: Yes
- Schema Introspection: No
Required Mapping Fields
User Data
| Field | Description |
|---|---|
user_id | The user identifier value matching the selected User ID Type (e.g. customer user ID, hashed email, or Dynamic Yield ID). |
Events
| Field | Description |
|---|---|
user_id | The user identifier value matching the selected User ID Type. |
name | The name of the event to send (e.g. Add to Cart, Purchase, Login). |
Product Feed
| Field | Description |
|---|---|
sku | Unique product identifier (Stock Keeping Unit) used to match products in the feed. |
Default Destination Fields
User Data
user_id, email, first_name, last_name, phone, country, city, loyalty_tier
Events
user_id, name, properties
Product Feed
sku, group_id, product_name, url, price, in_stock, image_url, categories
How It Works
- Zeotap transforms your warehouse data using the configured field mappings
- Rows are dispatched to the appropriate Dynamic Yield API endpoint based on the selected object type
- Data is sent with authentication via the
DY-API-Keyheader to your selected data center
User Data
- User records are sent in bulk via
POST /v2/userdata/{feed_id}/bulk - The
user_idvalue is emitted under the selected ID type key (e.g.cuid,he) - All other mapped fields are attached to the same item as profile attributes
- Items are batched in chunks of up to 100 per request
Payload Format:
{
"items": [
{
"cuid": "user-123",
"email": "jane@example.com",
"first_name": "Jane",
"loyalty_tier": "gold"
}
]
}Events
- Each event is sent individually via
POST /v2/collect/user/event - The
namefield becomes the event name - All other mapped fields are sent as event properties
Payload Format:
{
"user": { "cuid": "user-123" },
"session": {},
"events": [
{
"name": "Add to Cart",
"properties": {
"productId": "SKU-456",
"value": 29.99
}
}
]
}Product Feed
- Products are sent in bulk via
POST /v2/feeds/{feed_id}/bulk - Each item carries an
actionofUPSERT - The
skufield is used as the product identifier for matching - Items are batched in chunks of up to 100 per request
- The API returns a
transaction_id— propagation takes up to 90 seconds
Payload Format:
{
"items": [
{
"action": "UPSERT",
"sku": "SKU-456",
"product_name": "Running Shoes",
"price": 89.99,
"in_stock": true,
"categories": "Footwear > Running"
}
]
}Rate Limits
- The Choose endpoint is limited to 22,000 requests per minute per section
- The Profile Anywhere endpoint is limited to 50 calls per second
- Product feed and user data endpoints have transaction-based limits — each bulk update returns a
transaction_idand takes up to 90 seconds to propagate - Batch endpoints support up to 100 items per request
When rate limits are exceeded, Dynamic Yield returns HTTP 429. Zeotap automatically retries with exponential backoff.
Best Practices
- Use a consistent user ID type across all syncs to avoid duplicate user profiles
- For product feeds, always include the mandatory fields:
sku,group_id,price,url,image_url,in_stock, andcategories - Use the Customer User ID (cuid) ID type when you have a stable, cross-device user identifier
- For high-volume product catalog updates, prefer scheduled syncs to stay within rate limits
- Keep your Feed ID consistent — changing it will create a new feed rather than updating the existing one
- Use event syncs for real-time behavioral signals (cart actions, purchases) and user data syncs for profile enrichment
Troubleshooting
Authentication failed (401/403)
Verify your API key is correct and has the required ACL permissions enabled. Go to Settings > API Keys in Dynamic Yield to check. Ensure the key was created with Server-side as the source type.
Feed not found (404)
Double-check the Feed ID in your target settings. Find the correct ID by navigating to Assets > Data Feeds in Dynamic Yield Experience OS. The Feed ID is a numeric identifier visible in the feed details.
User profiles not updating
Ensure the User ID Type matches the identifier format you are sending. For example, if you selected Hashed Email (he), the user_id field must contain MD5-hashed email addresses. Mismatched ID types will create new profiles instead of updating existing ones.
Product feed items not appearing
Product feed updates take up to 90 seconds to propagate after a successful API call. If items still don’t appear, verify that your product data includes all mandatory fields (sku, group_id, price, url, image_url, in_stock, categories).
Events not recording
Ensure the event name field uses a recognized Dynamic Yield event type identifier (e.g. add-to-cart-v1, purchase-v1). Custom event names are supported but must be configured in Dynamic Yield first. Also verify that the User Data Events ACL permission is enabled on your API key.
Rate limit errors (429)
Zeotap retries automatically on 429 responses with exponential backoff. If you consistently hit rate limits, reduce sync frequency or batch size. For product feeds, prefer fewer large batches over many small ones.
Data center mismatch
Ensure the data center selected in Zeotap matches your Dynamic Yield account region. US accounts use dy-api.com and EU accounts use dy-api.eu. Using the wrong data center will result in authentication failures or missing data.
Transaction still processing
Product feed bulk updates are asynchronous. After a successful API call (HTTP 202), the transaction may take up to 90 seconds to fully propagate. Check the transaction status in Dynamic Yield if items appear delayed.