Oracle Responsys

Datafly Signal delivers events to Oracle Responsys Marketing Cloud server-to-server using the Trigger Custom Event REST API (v1.3). Each Signal event triggers a named Responsys custom event for the matched profile-list member, which then runs your Responsys Program logic (for example, entering the contact into a welcome or abandoned-cart journey).

Prerequisites

Before configuring Oracle Responsys in Signal you need:

  • A Responsys account with REST API access enabled.
  • A Custom Event defined in Responsys (Data > Events). For near-real-time messaging, the event must be of type Real-time.
  • A Profile List that already contains the contacts you want to enact, with a match key (email address recommended).
  • Responsys API credentials (username + password) to obtain an auth token.

Step 1: Find your API endpoint

  1. In Responsys, go to Account > Global settings > Account configuration.
  2. Copy the value of the WS End Point field. For Global Routing accounts this looks like https://ACCOUNTTOKEN-api.responsys.ocs.oraclecloud.com.

This is your account-specific REST base URL. It is also returned as endPoint in the authentication response.

Step 2: Create the custom event

  1. Go to Data > Events and create (or note the name of) the custom event you want Signal to trigger.
  2. Attach that event as the entry trigger of the Program / campaign you want enacted.

Step 3: Obtain an auth token

Responsys uses a two-stage authentication flow. Authenticate with your username and password to receive a token (valid for 2 hours):

curl -X POST "https://login.rsys9.net/rest/api/v1.3/auth/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "user_name=YOUR_USERNAME&password=YOUR_PASSWORD&auth_type=password"

The response returns the token and your endpoint:

{
  "authToken": "abc123...",
  "issuedAt": 1645123456789,
  "endPoint": "https://ACCOUNTTOKEN-api.responsys.ocs.oraclecloud.com"
}
⚠️

The authToken expires after 2 hours. Automatic refresh is not yet available in this integration, so provide a token from a long-lived service account and rotate it as part of your operational schedule.

Configure in Signal

Configuration Fields

FieldRequiredDescription
api_endpointYesAccount-specific REST base URL (the WS End Point value, e.g. https://ACCOUNTTOKEN-api.responsys.ocs.oraclecloud.com).
auth_tokenYesA current Responsys authToken from the auth/token endpoint.
event_nameYesThe Custom Event name to trigger (defined under Data > Events).
folder_nameYesThe folder containing the target profile list.
list_nameYesThe profile list (objectName) whose members are matched.

Management UI Setup

  1. Go to Integrations > Add Integration > Oracle Responsys.
  2. Choose the Default preset.
  3. Enter your api_endpoint, auth_token, event_name, folder_name, and list_name.
  4. Select the consent category that maps to marketing (typically marketing).
  5. Click Save.

API Endpoint

POST {api_endpoint}/rest/api/v1.3/events/{event_name}
Authorization: {auth_token}
Content-Type: application/json

The auth token is sent as the literal value of the Authorization header — there is no Bearer prefix.

A single trigger request is limited to 200 recipients. Signal sends one recipient per event, so this limit is not reached under normal operation.

Identity Signals

Responsys matches the incoming recipient against an existing member of the configured profile list. It uses the first non-null of these keys, in order:

KeySignal sourceNotes
recipientIdResponsys internal ID (not used by this blueprint).
emailAddressemail traitPrimary match key. Trimmed and lowercased before sending.
customerIduser_idSent as a secondary match key when available.
mobileNumberAvailable for SMS-keyed lists (not mapped by default).

Responsys profile-list matching for the trigger-event recipient uses the raw email address, not a hash. Signal normalises the address (trim + lowercase) before delivery but does not hash it for this match key.

How to send user data

Call datafly.identify() when a user logs in, registers, or submits a form so the email trait is available to match against your profile list:

datafly.identify("user-123", {
  email: "jane.doe@example.com"
});

Event Mapping

Default preset

Signal eventResponsys action
pageTrigger custom event (with page URL/title in optionalData)
Product ViewedTrigger custom event (product context)
Product AddedTrigger custom event (product + quantity)
Order CompletedTrigger custom event (order ID, total, currency)
Signed UpTrigger custom event (signup method)

Every event triggers the same configured event_name; event-specific context is passed as Responsys optionalData name/value pairs. All other events are dropped (defaults.action: drop).

Example: Order Completed

Datafly.js call:

datafly.identify("user-123", { email: "jane.doe@example.com" });
 
datafly.track("Order Completed", {
  order_id: "ORD-001",
  revenue: 129.99,
  currency: "USD"
});

Responsys payload sent by Signal (POST {api_endpoint}/rest/api/v1.3/events/{event_name}):

{
  "recipientData": [
    {
      "recipient": {
        "emailAddress": "jane.doe@example.com",
        "customerId": "user-123",
        "listName": {
          "folderName": "WS_REST_SAMPLE",
          "objectName": "CONTACTS_LIST"
        },
        "emailFormat": "HTML_FORMAT"
      },
      "optionalData": [
        { "name": "ORDER_ID", "value": "ORD-001" },
        { "name": "ORDER_TOTAL", "value": "129.99" },
        { "name": "CURRENCY", "value": "USD" },
        { "name": "MARKETING_CONSENT", "value": "I" },
        { "name": "ANONYMOUS_ID", "value": "a1b2c3d4..." }
      ]
    }
  ]
}

optionalData names should match the column names you have configured in your Responsys profile list or supplemental table so the values are persisted and available to your campaign content.

Signal maps the canonical marketing consent state to a Responsys opt flag in optionalData:

ConsentValue sent
GrantedI (opt-in)
Denied / unknownO (opt-out)

Map this field to your profile list’s opt-in/opt-out column so Responsys respects the contact’s marketing preference.

Testing Your Integration

Trigger a test event

Use a known contact that already exists in your profile list, then trigger an event from your site:

datafly.identify("test-user", { email: "test@example.com" });
datafly.track("Order Completed", { order_id: "TEST-1", revenue: 1, currency: "USD" });

Confirm enactment in Responsys

In Responsys, open the Program attached to your custom event and check the enactment / program activity to confirm the recipient entered.

Inspect the payload

Use Signal’s Event Debugger to confirm the recipient match key and optionalData are populated as expected before the request is sent.

Troubleshooting

ProblemSolution
401 UnauthorizedThe authToken has expired (2-hour lifetime) or is invalid. Generate a fresh token from /rest/api/v1.3/auth/token and update the integration config.
404 Not FoundCheck api_endpoint matches your account’s WS End Point and that event_name is an existing custom event.
Recipient not enactedThe email address does not match any member of the configured profile list. Confirm the contact exists and the folder/list names are correct.
400 Bad RequestUsually a missing match key or malformed optionalData. Review the payload in the Event Debugger.
Values not storedEnsure each optionalData name matches a column in your profile list or supplemental table.