ActionIQ
Enterprise customer data platform for audience management, journey orchestration, and real-time personalisation at scale.
Why route ActionIQ through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach ActionIQ even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- 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 ActionIQ needs to attribute the event to the right session.
- One consent decision governs every destination. ActionIQ is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Complete these steps with ActionIQ before configuring Signal.
Ask ActionIQ for a real-time ingestion source
ActionIQ provisions server-side ingestion per customer and does not publish a public ingestion API. Ask your ActionIQ account manager for a real-time (streaming) ingestion source for Datafly Signal events.
Collect the connection details
ActionIQ provides four values: the API username and password (HTTP Basic auth), the ingestion base URL and the endpoint identifier that selects the stream. Keep the password secret.
Agree the payload shape
Signal sends each event with uuid, user, timestamp and a properties object (see Event Mapping). Share it with ActionIQ so the source’s schema matches.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
username | string | Yes | The API username ActionIQ issues for your ingestion source. |
password | secret | Yes | The API password ActionIQ issues for your ingestion source. Sent with the username as HTTP Basic auth. |
ingest_base_url | string | Yes | The https:// base URL of your ActionIQ real-time ingestion endpoint, without a trailing slash. |
endpoint_identifier | string | Yes | The endpoint identifier that selects the ActionIQ stream Signal sends to. Appended to the base URL. |
Ask your ActionIQ account manager for all four values. ActionIQ does not publish a public ingestion API, so the endpoint is provisioned per customer.
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find ActionIQ under the CDP category.
- Click Install, and fill in the required fields with the credentials gathered above.
- Click Install Integration to create the integration with a ready-to-use default configuration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/actioniq/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ActionIQ",
"variant": "default",
"config": {
"username": "your-aiq-username",
"password": "xxxxxxxxxxxxxxxxxxxx",
"ingest_base_url": "https://ingest.your-tenant.actioniq.com",
"endpoint_identifier": "signal-events"
},
"delivery_mode": "server_side"
}'Event Mapping
Each event is POSTed to {ingest_base_url}/{endpoint_identifier} with HTTP Basic auth. The request follows the documented server-side ActionIQ mapping of MetaRouter, the only public description of ActionIQ ingestion; validate it against your ActionIQ source before go-live.
{
"uuid": "3f1c2a90-7d4e-4b8a-9c61-2f0e5d7a1b22",
"user": "crm-user-7",
"timestamp": "1758500000123",
"properties": {
"eventType": "purchase",
"anonymousId": "df_anon_0001",
"isAnonymous": false,
"context": {"ip": "203.0.113.7", "userAgent": "Mozilla/5.0 ...", "locale": "en-GB", "page": {"url": "https://www.example.com/checkout"}},
"consent": {"marketing": "granted"},
"transaction_id": "T-1001", "value": 279.98, "currency": "GBP", "items": [ ... ]
}
}| Field | Value |
|---|---|
uuid | The Signal event ID |
user | The Signal user ID (absent for anonymous visitors) |
timestamp | Milliseconds since epoch, as a string |
properties.eventType | The Signal event name (page for page views, identify for identify calls) |
properties.* | Every property the event spec documents for the event; currency upper-cased, items as an array |
Presets: Retail (ecommerce), Default, Insurance, B2B / SaaS, Travel and Media & Streaming, each covering the events of its event spec. Events a preset does not list are not sent.
Identity
| Field | Source | Notes |
|---|---|---|
user | datafly.identify() user ID | The customer ID ActionIQ merges profiles on. |
properties.anonymousId | Datafly anonymous identifier | Always present, so pre-login activity joins the profile later. |
properties.traits.email | identify traits | Sent on identify calls only, as it is (not hashed): ActionIQ builds customer profiles on it. |
Call datafly.identify() whenever a user logs in or submits a form so subsequent events carry a stable user ID:
datafly.identify("user-123", { email: "jane@example.com" });Consent
ActionIQ events should be sent under the marketing consent category by default. If your CMP exposes a separate analytics category, you can broaden the consent categories on the integration to include both.
Visitors who have not granted the required consent are filtered out of delivery by Signal — ActionIQ never receives their events.
Delivery
Events are delivered server-side from your Datafly Signal infrastructure directly to the ActionIQ API. No client-side scripts are loaded for this integration.
Verify it’s working
- After installing the integration, trigger a test event from your website or via the Signal event API.
- In ActionIQ, navigate to Connections > Destinations and select your destination. Check the Activity Log for recently received records.
- Verify that event attributes (event name, properties, user identifiers) appear correctly.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Wrong username or password | Confirm the credentials with your ActionIQ account manager and update the integration config |
404 Not Found | Wrong ingestion base URL or endpoint identifier | Confirm both values with your ActionIQ account manager |
429 Too Many Requests | Rate limit exceeded | ActionIQ applies rate limits per destination. Contact ActionIQ support to increase limits if needed |
| Events delivered but not visible | Destination not active | Ensure the destination status is Active in ActionIQ Connections |
Visit ActionIQ documentation for full API reference and advanced configuration options.
See also
- Salesforce CDP — alternative enterprise CDP
- Bloomreach CDP — commerce-focused CDP
- Hightouch — reverse ETL alternative