Integrations

Oracle Eloqua: Telltide Seed Address Guide

Place Telltide seeds in Eloqua contact lists and campaigns.

Oracle Eloqua has no native seed address or test profile concept. The standard workaround is to create seed contacts in the Eloqua contact database and target them through a dedicated segment added as a second audience element on the Campaign Canvas. This is a critical constraint: Eloqua can only send test/proof emails to existing contacts in its database - you cannot send to an arbitrary email address that does not exist as a contact record.

Quick reference

Send typeWhere to add seedsComplexity
Scheduled (Campaign)Create seed contact in DB; add to dedicated segment included in Campaign Canvas audienceLow-Medium
Ongoing (Campaign Canvas flow)Create seed contact; place seed segment in campaign canvas entry or add as standalone Segment Members elementMedium

1. Scheduled / one-off sends (Email Campaigns)

Eloqua Email Campaigns are one-time sends configured in the Campaign Canvas. The audience is defined by Segment Members elements connected to the canvas flow. Seeds must exist as contact records and be members of a segment targeting them.

Where to add seed addresses

Create a seed contact in the Eloqua contact database, then add that contact to a dedicated "Telltide Seeds" segment. Include that segment as an additional Segment Members element in the Campaign Canvas flow, feeding into the same Email Send step as the main audience.

Step-by-step: Create a seed contact via UI

  1. Navigate to Audience > Contacts
  2. Click New Contact (or the + button)
  3. Enter the seed email address (required; must be globally unique in the account)
  4. Fill in First Name, Last Name, and any additional fields used in email personalization
  5. Click Save
  6. Add the contact to your "Telltide Seeds" static segment

Step-by-step: Create a seed contact via REST API

POST https://{base_url}/api/REST/1.0/data/contact
Authorization: Basic {{base64(SiteName\Username:Password)}}
Content-Type: application/json

{
  "emailAddress": "seed@example.com",
  "firstName": "Seed",
  "lastName": "Monitor",
  "fieldValues": [
    {
      "id": "{{field_id}}",
      "value": "field_value"
    }
  ]
}

Authentication: HTTP Basic Auth using SiteName\Username as the username and the account password. The SiteName\ prefix is mandatory.

Find custom field IDs:

GET https://{base_url}/api/REST/1.0/assets/contact/fields

Returns all contact field definitions with their IDs. Use these IDs in the fieldValues array.

Base URL format: https://secure.p01.eloqua.com (or your instance-specific URL, visible in your Eloqua login URL).

Step-by-step: Add seed to Campaign Canvas

  1. In the Campaign Canvas, locate the Audience section on the canvas
  2. Drag a Segment Members element onto the canvas
  3. Double-click it and select your "Telltide Seeds" segment
  4. Connect this element to the same Email Send step as your main audience segment
  5. Both segments now feed into the same email send

Profile attributes required

Seeds need:

  • Email address (globally unique; Eloqua enforces uniqueness at the platform level)
  • Not on the global unsubscribe list
  • Values for any merge fields referenced in the email template (otherwise the field renders blank or with the configured default value)

Ensuring seeds receive the same version as real recipients

Dynamic content rules: Eloqua supports dynamic content within email templates. The seed receives the dynamic content block matching its own contact field values. Populate the seed's fields to match the recipient segment you want to monitor.

A/B testing: Eloqua supports A/B testing at the Campaign Canvas level. Each variant has its own Send step. Add the seed segment to each variant to monitor all versions.

Gotchas

Email uniqueness is platform-enforced. Eloqua does not allow two contacts with the same email address. If a seed email already exists in the database, attempting to create a new contact with that email returns an error (or updates the existing record depending on the API call).

Global unsubscribe blocks all sends. If a seed contact is globally unsubscribed, it receives no emails from the account. Verify the contact's subscription status before testing. To re-subscribe a globally unsubscribed contact: update the contact's Email Address Status field to Active via the REST API or UI.


2. Ongoing / automated journeys (Campaign Canvas flows)

Eloqua Campaign Canvas flows are automated multi-step sequences. Contacts enter via Segment Members elements, then progress through Email Send, Wait, and Decision elements based on their behavior and field values.

Campaign Canvas element types

ElementFunctionSeed approach
Segment MembersEntry point - contacts in a segment enter the flowAdd seed to the targeted segment
Email SendSends an emailSeed receives it if it entered the canvas flow
WaitDelays progression for a set durationSeed waits the same amount of time
Compare Contact FieldBranches based on field valueSet seed's field to match expected path
Email Open?/Clicked?Branches based on email engagementSeed must open/click to take the positive branch
Add to List / Update ContactData management actionsSeed contact is updated like any real contact

Creating trap profiles per journey type

Welcome / onboarding (Segment entry)

  • Entry: Segment Members element targeting "new subscribers" or a static segment for new opt-ins
  • Seed requirements: Contact record with email address, subscription status Active
  • How to trigger: Add the seed contact to the entry segment. The next Campaign Canvas execution (typically on Campaign activation) moves the seed through the flow.

Abandoned cart

  • No native abandoned cart trigger in Eloqua Canvas. Workaround: use an external system (ecommerce platform, CDP, or middleware) to add contacts to a dedicated "Abandoned Cart" segment in Eloqua when they abandon. The Canvas flow has a Segment Members entry targeting that segment.
  • Seed requirements: Contact with cart data fields (product name, cart value, cart URL) populated
  • How to trigger: Add the seed to the "Abandoned Cart" segment manually, or populate the cart fields via the REST API Update Contact call to trigger the segment membership rule

Browse abandonment

  • No native browse trigger. Same workaround as abandoned cart - external tracking system updates a contact field or segment membership when browse abandonment is detected.
  • Seed requirements: Contact with product browse data fields populated

Winback / re-engagement (Date-based segment filter)

  • Entry: Segment Members element targeting a filter-based segment: Last Purchase Date is before [X days ago]
  • Seed requirements: Contact with a custom Last Purchase Date field set to a date older than the lapse threshold
  • Date format for API: Unix timestamp (milliseconds since epoch) or MM/DD/YYYY HH:MM:SS depending on API version

Set the field via REST API:

PUT https://{base_url}/api/REST/1.0/data/contact/{contact_id}
{
  "fieldValues": [
    {
      "id": "{{last_purchase_date_field_id}}",
      "value": "01/01/2025 00:00:00"
    }
  ]
}

Post-purchase (Segment entry)

  • Entry: Segment Members element targeting a "recent purchasers" segment, populated by an ecommerce integration
  • Seed requirements: Contact with order data fields (order ID, total, product) populated

Birthday / anniversary (Date-based segment filter)

  • Entry: Segment Members element targeting a segment with filter: Birth Date dynamically equals Today
  • Seed requirements: Contact with Birth Date custom field set to today's date (month and day match)
  • Date field type: Must be a Date-type field in Eloqua. Format for API: MM/DD/YYYY or Unix timestamp (milliseconds)

Example segment filter: Contact Field "Birth Date" is [Date] dynamically equals [Today] - this evaluates daily and matches contacts whose birth month and day equal today's date (ignoring year).

For same-day testing: Set the seed's Birth Date field to today's date. At the next Canvas execution run, the segment includes the seed.


How to reset seeds for repeated Canvas testing

Re-activation: Campaign Canvas flows typically process contacts once per campaign run. To re-test with the same seed:

  1. Remove the seed from the entry segment
  2. Deactivate the campaign (if required to reset contact processing state)
  3. Re-add the seed to the entry segment
  4. Re-activate the campaign

Clone the campaign: For repeated A/B testing, clone the campaign. Each cloned instance processes contacts independently.


3. Platform-specific considerations

API options

Create contact:

POST https://{base_url}/api/REST/1.0/data/contact
Authorization: Basic {{base64(SiteName\Username:Password)}}

Update contact:

PUT https://{base_url}/api/REST/1.0/data/contact/{contact_id}

Get contact by email:

GET https://{base_url}/api/REST/1.0/data/contact?search=emailAddress%3D%22seed%40example.com%22

Get contact field definitions:

GET https://{base_url}/api/REST/1.0/assets/contact/fields

Bulk upsert contacts (recommended for multiple seeds):

POST https://{base_url}/api/REST/2.0/imports

The Bulk API (v2.0) supports large-scale imports and upserts with field mapping definitions. More efficient than individual v1.0 calls for managing more than a handful of seeds.

API authentication: HTTP Basic Auth. Format: SiteName\Username:Password encoded in Base64. The site name (also called company name) is the prefix before the backslash.

Find your base URL: Your Eloqua instance URL, visible after login. Common formats: secure.p01.eloqua.com, secure.p02.eloqua.com, secure.p06.eloqua.com. The correct URL is also returned in the login API response.

Rate limits

ScopeLimit
REST API v1.01,000 calls per hour per user
Bulk API v2.0Separate limits; higher throughput for import/export operations

HTTP 429 is returned when the per-hour limit is exceeded. The Bulk API is preferred for any operation involving more than a few contacts.

Duplicate contact handling

Email uniqueness is enforced at the platform level. Two contacts cannot share the same email address. Attempting to create a contact with an existing email address results in an error (REST v1.0) or upsert behavior (Bulk API, depending on configuration).

CRM sync (Salesforce/Microsoft Dynamics) creates new records for changed emails. If a seed's email changes in a connected CRM, Eloqua creates a new contact record for the new email and orphans the old one. Manage seed email changes directly in Eloqua before the CRM sync runs.

Platform-specific terminology

Oracle Eloqua termWhat it means
ContactA person record in the Eloqua database (equivalent to a Contact/Profile in other platforms).
Campaign CanvasThe visual drag-and-drop interface for building automated email flows.
SegmentA dynamic or static filter-based group of contacts used for targeting and campaign entry.
Segment Members elementA Campaign Canvas entry element that feeds contacts from a segment into the flow.
Email Send elementA Campaign Canvas action element that sends an email to all contacts reaching it.
Decision elementA Campaign Canvas branching element (Email Open?, Compare Contact Field, etc.) that splits contacts.
Field ValueA custom data field value stored on a contact record. Referenced by numeric ID in the API.
Bulk APIOracle Eloqua's high-throughput import/export API (v2.0), separate from the standard REST API (v1.0).
Dynamic contentConditional content blocks in email templates that display different content based on contact field values.
Fatigue AnalysisOracle Eloqua's engagement-based segmentation tool (not a hard cap) that identifies over-messaged contacts. Advisory only - does not block sends.

Known limitations and workarounds

No native seed/test profile concept. Test sends can only go to existing Eloqua contacts. Create dedicated seed contact records before setting up any test sends.

Fatigue Analysis is advisory, not a hard cap. Unlike platform-enforced frequency caps in other ESPs, Eloqua's Fatigue Analysis identifies potentially fatigued contacts for use in segment exclusion rules - it does not automatically suppress sends. Build Fatigue Analysis outputs into exclusion segments manually if you want to enforce fatigue-based suppression.

Campaign Canvas contacts process once per campaign run by default. The same contact does not re-enter an active campaign unless re-entry is configured. For repeated seed testing, remove and re-add the seed to the entry segment, or use a new campaign instance.

Date fields accept different formats across API versions. The v1.0 REST API may accept MM/DD/YYYY HH:MM:SS; the Bulk API v2.0 uses Unix timestamps in milliseconds. Always verify format with a test call to GET /data/contact/{id} before setting up automated scripts.

No native abandoned cart or browse abandonment trigger. These require an external system to update Eloqua contact field values or segment memberships in real time when the behavior occurs.

Start monitoring your Oracle Eloqua sends

Place a Telltide seed in your Oracle Eloqua audience, and we will tell you when an expected email did not land.

Start free