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.com means your pod is p03. Eloqua currently runs pods p01 through p08.
  • 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

FieldRequiredDescription
PodYesYour Eloqua data-centre pod, taken from your login URL (e.g. p03).
Company / Site NameYesThe company name you use to sign in to Eloqua. Eloqua requires this prefixed to your username.
API User NameYesThe Eloqua API user account.
API PasswordYesThe password for the API user. Stored encrypted and only ever sent over HTTPS.
Default Campaign IDNoThe 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

  1. In Signal, open Integrations and add Oracle Eloqua.
  2. Enter your Pod, Company / Site Name, API User Name and API Password.
  3. 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.
  4. 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.
  5. 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/json

A 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.

FieldSourceNotes
contactIdproperties.eloqua_contact_idThe Eloqua contact ID, as an integer. Required.
campaignIdproperties.eloqua_campaign_id, else the Default Campaign ID settingInteger. 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 eventVendor event / callFields
pageWeb Page Visitname, assetName, assetType
generate_leadLead Generatedname, assetName, assetType
sign_upSign Upname, assetName, assetType
content_downloadedContent Downloadname, assetName, assetType
demo_requestedViewed a Demoname, assetName, assetType
purchaseWeb Conversionname, 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 eventVendor event / callFields
generate_leadLead Generatedname, assetName, assetType
demo_requestedViewed a Demoname, assetName, assetType
trial_convertedTrial Convertedname, assetName, assetType
trial_startedTrial Startedname, assetName, assetType
content_downloadedContent Downloadname, assetName, assetType
sign_upSign Upname, 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

  1. Send a test event from a page where Datafly.js is installed, including a real eloqua_contact_id.
  2. In Signal, open the Event Debugger and confirm the Oracle Eloqua request returned 201 Created.
  3. In Eloqua, open the contact record and check the Activity Log — the new external activity should appear with the expected activity type and date.
  4. If you supplied a campaignId, open the campaign and confirm the activity is attributed to it in reporting.

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedWrong credentials or missing company-name prefixConfirm the company/site name, user name and password. Eloqua needs the company name prefixed to the username.
404 Not FoundWrong pod, or an unknown contact/campaign IDVerify the pod matches your login URL and that the contact and campaign IDs exist.
400 Bad RequestMissing contactId / activityDate, or an activityType that does not existEnsure 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 contactactivityDate missing or contact ID invalidConfirm the event carries a valid Eloqua contact ID and a timestamp.
Events silently not arrivingEvent not in the preset, or eloqua_contact_id absentMap 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.