Eloqua Destination

Segment makes it easy to send your data to Eloqua (and lots of other destinations). Once you've tracked your data through our open source libraries we'll translate and route your data to Eloqua in the format they understand. Learn more about how to use Eloqua with Segment.

Page

Page view tracking is achieved via an integration with the Eloqua Asynchronous Visitor Tracking Script.

Page tracking with Eloqua is, by default, achieved with a third party cookie. This cookie is generated upon successful completion of an Eloqua form. Once a user submits one of these forms, Segment page events will start populating as Website Visits in their Eloqua contact profile.

Identify

Segment integrates with Eloqua’s REST API to provide the ability to create or update contacts in Eloqua following events that do not use an Eloqua form.

Segment supports populating the following Eloqua contact fields:

  • Email
  • First Name
  • Last Name
  • Address 1
  • City
  • Country
  • Title

Please adhere to our spec to ensure proper mapping of these fields from Segment identify traits: https://segment.com/docs/spec/identify/#traits.

Track

Segment track events trigger the creation of Eloqua Custom Object records and associate them with a specific contact.

To get started, please provide a mapping in your destination settings specifying the Segment event names with the corresponding Custom Object you would like to associate it with in Eloqua.

Segment will also map the properties of track events with Custom Object fields of the same name. Our integration does a case and formatting insensitive match so that if you have a field called Account Type in Eloqua and a property called accountType in your Segment event, the mapping will get handled.

For track event properties you intend to send to Eloqua as custom object fields, please ensure the value of the data type sent to Segment matches the data type specified in your Eloqua dashboard. If a custom object field data type does not match the data type specified in Eloqua, Eloqua will not create a custom object, and will return an error for the request.

Eloqua Data TypeCommon Data TypeExample Value
NumberInteger31415
TextString (max 250 characters)‘31415’
Large TextString (max 32000 characters)‘31415’
Date/TimeString (Unix date string in seconds)‘1543861960’
NumericFloat (up to 4 decimal places)3.1415

User Email

By default, Eloqua uses email address as a contact ID. Therefore, in order to successfully associate a contact with a Custom Object, the Segment .track() event needs to include the user’s email as a trait or integration-specific property:

analytics.track({
  event: 'Account Created',
  context: {
    traits: {
      email: 'billbrasky@segment.com'
    }
  }
})
analytics.track({
  event: 'Account Created', 
  integrations: {
    Eloqua: {
      email: 'billbrasky@segment.com'
    }
  }
})

Creating an Eloqua Contact on track

By default, Segment creates an Eloqua contact on identify and only associates contacts with CDOs on Segment track.

Enable the Create Contact on Track Segment setting to both create Eloqua contacts and associate the contact with an Eloqua Custom Object when you invoke a Segment track event.

Note that, to help reduce the number of API calls Segment sends to Eloqua, enabling this setting will prevent identify events from flowing to Eloqua, so user traits should be included as context.traits in track events.

As an example, the following event would create or update contact billbrasky@segment.com with the values passed in context.traits, then associate the Bill with Eloqua Custom Object Account Created.

analytics.track({
  event: 'Account Created',
  properties: {
    referrer: 'Google Ad'
  }, 
  integrations: {
    Eloqua: {
      email: 'billbrasky@segment.com'
    }
  }, 
  context: {
    traits: {
      address: '123 Market Street',
      city: 'San Francisco'
    }
  }
})

Personas

You can send computed traits and audiences generated through Segment Personas to this destination as a user property. To learn more about Personas, reach out for a demo.

For user-property destinations, an identify call will be sent to the destination for each user being added and removed. The property name will be the snake_cased version of the audience name you provide with a true/false value. For example, when a user first completes an order in the last 30 days, we will send an identify call with the property order_completed_last_30days: true, and when this user no longer satisfies we will set that value to false.

When the audience is first created an identify call is sent for every user in the audience. Subsequent syncs will only send updates for those users which were added or removed since the last sync.

Supported Sources and Connection Modes

WebMobileServer
📱 Device-based
☁️ Cloud-based

To learn more about about Connection Modes and what dictates which we support, see here.

Settings

Segment lets you change these destination settings via your Segment dashboard without having to touch any code.

Company Name

Enter your login company name

Create Contact on Track

Server Side Only: Enable this setting to create or update an Eloqua contact with traits from your track events’ context.traits object. Note that when this setting is enabled, the destination will only process track events and will reject identify events. This is to reduce the number of potentially repetitive API calls sent downstream to Eloqua.

Map Track Events to Custom Objects

Please input the Segment event names on the left and their corresponding Eloqua Custom Object names on the right. This mapping is required for all events you would like in Eloqua as Custom Objects.

Note: If you have set up Custom Object Fields in Eloqua, please ensure the corresponding Segment payload property values are of the same data type specified in Eloqua’s dashboard. Eloqua will reject any event containing a Custom Object Field with an incorrect data type. Segment automatically attempts to match property names to Custom Object Field names in Eloqua.

Password

Enter your login passord

Site ID

Enter your Site ID

Username

Enter your login username


If you have any questions, or see anywhere we can improve our documentation, please let us know!