Oracle Eloqua
Datafly Signal delivers your first-party events to Oracle Eloqua Marketing Cloud server-to-server as External Activities. An External Activity is a record of a non-Eloqua (web or offline) action performed by a known contact. Once it lands in Eloqua it is available for campaign reporting and can drive decisions on the campaign canvas, exactly like a native Eloqua activity.
Signal calls the Eloqua REST API directly from your own infrastructure. No Eloqua tracking pixel runs in the browser, so events keep flowing even when client-side tags are blocked.
Why route Oracle Eloqua through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Oracle Eloqua even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- One consent decision governs every destination. Oracle Eloqua is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
- An Oracle Eloqua Marketing Cloud instance.
- An Eloqua user account with API access and permission to create External Activities. Use a dedicated service account rather than a personal login.
- Your pod (data centre). It is shown in your Eloqua login URL — for example
secure.p03.eloqua.commeans your pod isp03. Eloqua currently runs podsp01throughp08. - One or more External Activity types configured in your Eloqua instance (Settings, then External Activities, or via the campaign canvas). The activity type names you use in Signal must match these exactly.
- The Eloqua contact ID for the people you send events for. The External Activity API links activities by Eloqua’s internal numeric contact ID, not by email address (see Identity Signals).
Configuration
| Field | Required | Description |
|---|---|---|
| Pod | Yes | Your Eloqua data-centre pod, taken from your login URL (e.g. p03). |
| Company / Site Name | Yes | The company name you use to sign in to Eloqua. Eloqua requires this prefixed to your username. |
| API User Name | Yes | The Eloqua API user account. |
| API Password | Yes | The password for the API user. Stored encrypted and only ever sent over HTTPS. |
| Default Campaign ID | No | The numeric campaign activities are attributed to when the event carries no eloqua_campaign_id. Eloqua requires a campaign on every External Activity, so set this unless every event carries one. |
Eloqua uses HTTP Basic authentication. Signal builds the credential string as siteName\username:password, base64-encodes it, and sends it in the Authorization header on every request. Authentication and the host are both account-specific, so credentials only work against your own pod.
Configure in Signal
- In Signal, open Integrations and add Oracle Eloqua.
- Enter your Pod, Company / Site Name, API User Name and API Password.
- Attach the integration to a pipeline and choose the Default preset. The preset maps page views and core B2B funnel events to Eloqua activity types.
- Confirm each activity type in the preset (for example
Web Page Visit,Lead Generated,Viewed a Demo,Web Conversion) exists in your Eloqua instance, or rename the mappings to match the types you already use. - Save and enable the pipeline.
API Endpoint
Signal sends one HTTP request per event:
POST https://secure.{pod}.eloqua.com/api/rest/2.0/data/activity
Authorization: Basic base64(siteName\username:password)
Content-Type: application/jsonA 201 Created response means the activity was recorded. See the Oracle reference for Create an external activity.
Identity Signals
Delivers first-party events to Oracle Eloqua as External Activities (POST /api/REST/2.0/data/activity) with the seven fields Eloqua requires: contactId (the Eloqua contact ID the event carries), campaignId (from the event, else the integration’s default campaign), activityDate (Unix seconds), activityType, name, assetName and assetType. Events without an Eloqua contact ID are not sent.
| Field | Source | Notes |
|---|---|---|
contactId | properties.eloqua_contact_id | The Eloqua contact ID, as an integer. Required. |
campaignId | properties.eloqua_campaign_id, else the Default Campaign ID setting | Integer. Required by Eloqua. |
Event Mapping
Blueprint 0.3.0, reviewed against the vendor’s documentation on 2026-09-23. Each preset maps the events below; every other event is dropped. Events use the canonical names from the event specs (transaction_id, value, items[], search_term); the legacy order_id, revenue and flat product fields are still read as a fallback.
Default (default)
Web page visits, form leads, sign-ups, content downloads, demo requests and conversions as Eloqua External Activities. Every activity carries the seven fields Eloqua requires: contactId (the Eloqua contact ID, from properties.eloqua_contact_id, as an integer; events without it are not sent), campaignId (properties.eloqua_campaign_id, else the integration’s Default Campaign ID), activityDate (Unix seconds), activityType, name, assetName and assetType. Define each activity type and asset type in Eloqua first.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | Web Page Visit | name, assetName, assetType |
generate_lead | Lead Generated | name, assetName, assetType |
sign_up | Sign Up | name, assetName, assetType |
content_downloaded | Content Download | name, assetName, assetType |
demo_requested | Viewed a Demo | name, assetName, assetType |
purchase | Web Conversion | name, assetName, assetType, currentStatus |
B2B / SaaS (saas)
B2B demand generation as Eloqua External Activities: form leads, demo requests, trial starts and conversions, content downloads and sign-ups. Every activity carries the seven fields Eloqua requires: contactId (the Eloqua contact ID, from properties.eloqua_contact_id, as an integer; events without it are not sent), campaignId (properties.eloqua_campaign_id, else the integration’s Default Campaign ID), activityDate (Unix seconds), activityType, name, assetName and assetType. Define each activity type and asset type in Eloqua first.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
generate_lead | Lead Generated | name, assetName, assetType |
demo_requested | Viewed a Demo | name, assetName, assetType |
trial_converted | Trial Converted | name, assetName, assetType |
trial_started | Trial Started | name, assetName, assetType |
content_downloaded | Content Download | name, assetName, assetType |
sign_up | Sign Up | name, assetName, assetType |
An identified generate_lead (preset default) is delivered as:
POST https://secure.p06.eloqua.com/api/rest/2.0/data/activity{
"activityDate": "1758600000",
"activityType": "Lead Generated",
"assetName": "Contact us",
"assetType": "Form",
"campaignId": 37,
"contactId": 2405,
"name": "Contact us"
}Testing
- Send a test event from a page where Datafly.js is installed, including a real
eloqua_contact_id. - In Signal, open the Event Debugger and confirm the Oracle Eloqua request returned
201 Created. - In Eloqua, open the contact record and check the Activity Log — the new external activity should appear with the expected activity type and date.
- If you supplied a
campaignId, open the campaign and confirm the activity is attributed to it in reporting.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
401 Unauthorized | Wrong credentials or missing company-name prefix | Confirm the company/site name, user name and password. Eloqua needs the company name prefixed to the username. |
404 Not Found | Wrong pod, or an unknown contact/campaign ID | Verify the pod matches your login URL and that the contact and campaign IDs exist. |
400 Bad Request | Missing contactId / activityDate, or an activityType that does not exist | Ensure eloqua_contact_id is on the event and that every activity type used in the preset is configured in your Eloqua instance. |
| Activity not linked to a contact | activityDate missing or contact ID invalid | Confirm the event carries a valid Eloqua contact ID and a timestamp. |
| Events silently not arriving | Event not in the preset, or eloqua_contact_id absent | Map the event to an Eloqua activity type and confirm the contact ID is present (required). |
For deeper detail, see the Oracle External Activities REST endpoints.