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.

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.

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

The External Activity API links every activity to a known contact using Eloqua’s internal numeric contact ID (contactId). It does not look contacts up by email. Because of this, the integration is for known-contact events: the event must already carry the Eloqua contact ID.

Provide it on the event as eloqua_contact_id. Signal maps properties.eloqua_contact_id to contactId and treats it as required, so events without a contact ID are not delivered. Typical ways to populate it:

  • Set it as a contact trait once you have resolved the visitor (for example after a form submit that you matched to an Eloqua contact).
  • Pass it through from your application when you already hold the Eloqua contact ID for a logged-in user.

If you need anonymous web traffic captured first and resolved later, do that contact resolution upstream of Signal and feed the resulting contact ID back onto the event.

Event Mapping

The Default preset maps Signal events to Eloqua activity types. Signal event names are GA4-style; the table below shows how they translate.

Signal eventEloqua activityType
pageWeb Page Visit
Lead GeneratedLead Generated
Signed UpSign Up
Content ViewedContent Download
Demo RequestedViewed a Demo
Order CompletedWeb Conversion

Events not in the preset are dropped, so Eloqua only receives the activities you have explicitly mapped.

Example

A Demo Requested event sent from your site with Datafly.js:

datafly.track("Demo Requested", {
  eloqua_contact_id: 2405,
  eloqua_campaign_id: 37,
  product_name: "Signal Enterprise"
});

Signal transforms this into the following Eloqua External Activity request body:

{
  "contactId": 2405,
  "activityType": "Viewed a Demo",
  "activityDate": "1717689600",
  "campaignId": 37,
  "name": "Signal Enterprise",
  "assetType": "Demo",
  "assetName": "Demo Request Page"
}

activityDate is the event time as a Unix timestamp in seconds. campaignId is optional; when present, the activity is attributed to that Eloqua campaign in reporting.

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.