Adobe Experience Platform
Server-side data ingestion into Adobe Experience Platform (AEP) via the Streaming Ingestion API for real-time profile enrichment and audience activation.
Why route Adobe Experience Platform through Datafly Signal
- Your numbers stop depending on what the browser allows. Client-side analytics loses every visit where the tag is blocked or the page unloads early. Signal delivers from the server, so Adobe Experience Platform receives the complete event stream.
- Client IP and user agent are carried in the payload. Both are taken from the original visitor request rather than your server, which is what Adobe Experience Platform needs to attribute the event to the right session.
- Presets for Retail and Automotive. The mapping starts from a working configuration for your vertical instead of a blank field map.
- One consent decision governs every destination. Adobe Experience Platform is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Before configuring Adobe Experience Platform in Datafly Signal, you need an AEP account with a schema, dataset, streaming connection, and API credentials.
Step 1: Access Adobe Experience Platform
- Go to experience.adobe.com and sign in with your Adobe ID.
- Click the app switcher (nine-dot menu) and select Experience Platform.
- If you do not have access, contact your Adobe account administrator to provision AEP for your organization.
Step 2: Create an XDM Schema
- In AEP, navigate to Schemas in the left sidebar.
- Click Create schema and select XDM ExperienceEvent (for time-series event data).
- Give the schema a name (e.g. “Datafly Signal Events”).
- Add field groups relevant to your use case (e.g. Commerce Details, Web Details).
- Click Save and copy the Schema ID from the schema details panel.
XDM ExperienceEvent is the correct schema class for event data from Datafly Signal. Use XDM Individual Profile only if you are sending profile updates rather than events.
Step 3: Create a Dataset
- Navigate to Datasets in the left sidebar.
- Click Create dataset from schema.
- Select the schema you created in Step 2.
- Give the dataset a name (e.g. “Datafly Signal Events Dataset”).
- Click Finish and copy the Dataset ID from the dataset details page.
Ensure the dataset is enabled for Profile if you want incoming events to contribute to Real-Time Customer Profiles. This is configured on the dataset details page.
Step 4: Set Up a Streaming Connection
- Navigate to Sources in the left sidebar.
- Find HTTP API under the Streaming category.
- Click Add data and then New account.
- Enter a name for the connection (e.g. “Datafly Signal Ingest”).
- Optionally enable XDM-compatible data and authentication.
- Click Connect to source and copy the Connection ID and Streaming endpoint URL.
- Create the dataflow from the connection to your dataset and copy its Dataflow ID (Sources > Dataflows). Adobe requires it on every XDM message.
Step 5: Find Your Organization ID
- Go to the Adobe Admin Console.
- Click Organization in the top navigation.
- Your Organization ID is displayed in the format
1234567890ABCDEF@AdobeOrg. - Copy this value.
Step 6: Authentication (optional)
Leave authentication off on the streaming connection unless your policy requires it. An authenticated connection needs an IMS access token in the access_token field; IMS tokens expire after 24 hours and Signal does not refresh them yet, so an authenticated connection stops accepting events when the token expires.
Step 7: Note Your Sandbox Name
- In AEP, check the sandbox selector in the top-right corner.
- The sandbox name is shown (e.g.
prodfor production, or a custom development sandbox name). - Use this value for the
sandbox_nameconfig field.
API Endpoint
POST https://dcs.adobedc.net/collection/{connection_id}Each event is one XDM ExperienceEvent message in the documented HTTP API streaming shape:
{
"header": {
"schemaRef": { "id": "{schema_id}", "contentType": "application/vnd.adobe.xed-full+json;version=1" },
"imsOrgID": "{org_id}", "datasetId": "{dataset_id}", "flowId": "{flow_id}",
"source": { "name": "Datafly Signal" }
},
"body": {
"xdmMeta": { "schemaRef": { "id": "{schema_id}", "contentType": "application/vnd.adobe.xed-full+json;version=1" } },
"xdmEntity": { "_id": "<event ID>", "timestamp": "<ISO 8601>", "eventType": "commerce.purchases", "...": "..." }
}
}Authentication is optional; see Step 6.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
connection_id | string | Yes | The streaming connection ID from your HTTP API source. Found in Sources > HTTP API > connection details. |
org_id | string | Yes | Your Adobe IMS Organization ID in the format XXXXX@AdobeOrg. Found in the Adobe Admin Console. |
dataset_id | string | Yes | The target AEP Dataset ID to receive ingested data. Found in Datasets > dataset details. |
schema_id | string | Yes | The XDM Schema ID that the dataset is based on. Found in Schemas > schema details. |
flow_id | string | Yes | The HTTP API streaming dataflow ID (Sources > Dataflows). Events without it are dropped before delivery. |
sandbox_name | string | Yes | The AEP sandbox to target. Use prod for production or the name of your development sandbox. |
access_token | secret | No | IMS bearer token, only for a connection created with authentication required. Expires after 24 hours; not refreshed by Signal yet. |
Management UI Setup
- Go to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Adobe Experience Platform or filter by Analytics.
- Click Install and fill in the required fields:
- Enter your Organization ID from Step 5.
- Enter your Connection ID from Step 4.
- Enter your Dataset ID from Step 3.
- Enter your Schema ID from Step 2.
- Enter your Sandbox Name from Step 7.
- Enter your Dataflow ID from Step 4.
- Leave Access Token empty unless the connection requires authentication (Step 6).
- Click Install Integration to create the integration with a ready-to-use default blueprint.
Management API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/adobe_experience_platform/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Adobe Experience Platform",
"variant": "default",
"config": {
"connection_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"org_id": "1234567890ABCDEF@AdobeOrg",
"dataset_id": "5f1234abcd567890ef123456",
"schema_id": "https://ns.adobe.com/mycompany/schemas/abc123",
"flow_id": "f2ae0194-8bd8-4a40-a4d9-f07bdc3e6ce2",
"sandbox_name": "prod"
},
"delivery_mode": "server_side"
}'Event Mapping
Every event carries _id (the Signal event ID), timestamp, eventType, an identityMap, environment.browserDetails.userAgent, environment.ipV4, web.webPageDetails.URL and web.webReferrer.URL. Only standard XDM ExperienceEvent fields are written, so the dataset’s schema needs the Web details, Commerce details and Environment details field groups.
| Signal event | XDM eventType | XDM fields |
|---|---|---|
page | web.webpagedetails.pageViews | web.webPageDetails.name, web.webPageDetails.pageViews.value = 1 |
view_item, vehicle_viewed | commerce.productViews | commerce.productViews.value = 1, productListItems[] |
view_item_list, view_cart | commerce.productListViews | productListItems[] |
add_to_cart / remove_from_cart | commerce.productListAdds / commerce.productListRemovals | productListItems[] |
add_to_wishlist, vehicle_saved | commerce.saveForLaters | productListItems[] |
begin_checkout, application_started | commerce.checkouts | productListItems[] |
purchase, policy_purchased, policy_renewed | commerce.purchases | commerce.order.purchaseID, priceTotal, currencyCode, productListItems[] |
| Insurance quote, lead, claim and document events | insurance.<eventName> (e.g. insurance.quoteRequested) | common fields only |
| Automotive search, lead, test drive and service events | automotive.<eventName> | common fields only |
productListItems[] is built from items[]: SKU (item ID), name, quantity, priceTotal (price times quantity) and currencyCode. Vertical attributes such as insurance_type or a vehicle’s make need custom fields under your tenant namespace (_<tenant>); add them to the installed blueprint.
Identity
| Source | XDM field |
|---|---|
vendor_ids.ecid | identityMap.ECID[0].id |
Email from datafly.identify() (else the event’s email) | identityMap.Email[0].id (trimmed, lower-cased, plain text) |
Experience Platform is your own profile store, and the Journey Optimizer and Campaign destinations it feeds send email to the profile, so the email is streamed in plain text in the standard Email namespace (its advertising destinations hash on export; see Personal data by integration). The Email identity namespace must be enabled on the schema. For unified Adobe profiles, also install the Adobe Identity Service so the Experience Cloud ID (ECID) joins web and AEP events.
Consent
Default consent category: analytics. AEP is treated as an analytics destination by default — add advertising if you use AEP audiences for paid-media activation.
Verify it’s working
- In the Signal Management UI, open your AEP integration and watch the Live Events stream as you trigger events on your site.
- Confirm 200 responses from
dcs.adobedc.net/collection/{connection_id}. - In AEP, open Monitoring for streaming ingestion metrics and Datasets > Preview dataset to inspect ingested records.
Testing
Once your integration is active and events are flowing, verify in Adobe Experience Platform:
- Navigate to Monitoring in the left sidebar to view streaming ingestion metrics.
- Check your dataset under Datasets — the Preview dataset button shows recently ingested records.
- Open Profiles and search by an identity value to verify profile enrichment.
- Check Sources > HTTP API > Dataflows for ingestion success rates and error counts.
Streaming data typically appears in AEP within 1-3 minutes. Profile updates may take up to 15 minutes to propagate to all downstream services.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
401 authentication error | Expired or invalid access token | Generate a new token in the Adobe Developer Console |
403 forbidden | Insufficient permissions or wrong sandbox | Verify product profile permissions and sandbox name |
400 schema validation error | Event payload does not match XDM schema | Check that your blueprint field mappings match the schema field groups |
| No data in dataset | Incorrect connection ID or dataset ID | Verify IDs match in both AEP and Signal config |
| Profile not updating | Dataset not enabled for Profile | Enable the Profile toggle on the dataset details page |
| Events accepted but not visible | Sandbox mismatch | Ensure the sandbox_name config matches the sandbox where your dataset exists |
Intermittent 503 errors | AEP service temporarily unavailable | Signal retries automatically with exponential backoff; no action needed |
Delivery
Events are delivered server-side from your Datafly Signal infrastructure directly to the Adobe Experience Platform Streaming Ingestion API. No client-side Adobe scripts are loaded for this integration.
Visit the Adobe Experience Platform API documentation for full API reference and advanced configuration options.
Blueprint
The Adobe Experience Platform blueprint version is 0.22.0 (not yet tested against a live sandbox). It ships with Retail, Insurance and Automotive presets.
See also
- Adobe Identity Service — issues the ECID that joins AEP with the rest of the Adobe stack.
- Adobe Analytics — run alongside AEP for traditional Workspace reporting.