Oracle Responsys Data Push
Overview
Oracle CrowdTwist integrates with Oracle Responsys using realtime API calls. This allows a client’s loyalty data to flow into their Responsys instance in real-time and be made available for communications.
This is achieved by Oracle CrowdTwist structuring their push feeds to match the API format of Oracle Responsys to populate the mutual client’s Profile Extension and Supplemental Data tables. Authorization is handled via access token for the server-to-server integration.
Note: This requires the client to have their own Oracle Responsys instance.
Data Push Feeds
The following types of data feeds can be enabled:
- User Profile: Includes creations of new profiles and updates to existing profiles.
- User Activity: Includes data on user activity completions.
- User Redemption: Includes data on user reward redemptions.
-
Points Expiration: Includes points expiration details of a member.
Integration Setup Process
- Client creates tables (1 Profile Extension table & 2 Supplemental Data Tables), following specifications outlined below. Recommendation is to create distinct tables for each CrowdTwist instance.
- The name of each data extension table is configurable by client. Oracle CrowdTwist recommends using the naming format above and listing the push type, for example:
- USER_PROFILE_PROD (for production User Profile endpoint)
- USER_PROFILE_SAND (for sandbox User Profile endpoint)
- USER_ACTIVITY_PROD (for production User Activity endpoint)
- USER_ACTIVITY_SAND (for sandbox User Activity endpoint)
- USER_REDEMPTION_PROD (for production User Redemption endpoint)
- USER_REDEMPTION_SAND (for sandbox User Redemption endpoint)
- POINTS_EXPIRATION_PROD (for production Points Expiration endpoint)
- POINTS_EXPIRATION_SAND (for sandbox Points Expiration endpoint)
- Client generates API User Credentials for CrowdTwist platform
- Client provides the configuration details to Oracle CrowdTwist
- Name of User Profile table, associated Contacts List and folder
- Name of Supplemental Data tables and folders
- Login Username
- Oracle CrowdTwist configures the Live Push API integration
- Oracle CrowdTwist pushes sample payload to each data extension table
- If successful, Oracle CrowdTwist configures automated process
API Endpoint for Authorization
- https://login{enviroment}/rest/api/v1.3/auth/token
API Endpoint for Table Population
- PET: https://{environment }/rest/api/v1.3/lists/{LIST_NAME}/listExtensions/{TABLE_NAME}/members
- Supp: https://{environment}/rest/api/v1.3/folders/{FOLDER_NAME}/suppData/{TABLE_NAME}/members
Note: Pushes to Responsys are throttled to 1 call/second with each call containing data for up to 200 records.
Data Formats
Note: All CrowdTwist date formats are converted to MM/DD/YYYY HH:MI:SS. For example: 10/28/2019 17:51:50
User Profile
Note: The CrowdTwist User Profile push can match to the Responsys Contacts List (MCL) on the CrowdTwist member's Email or third party id (Responsys CUSTOMER_ID_). The specified member’s Email or Customer ID must already exist in the Responsys Contacts List. This should be populated via the registration flow. If a match is not found, the data for that member will not be populated (fail).
Settings:
- insertOnNoMatch: true
- updateOnMatch: REPLACE_ALL
-
matchColumnName1: EMAIL_ADDRESS or matchColumnName1: CUSTOMER_ID (based on configuration)
Responsys Field Name |
Responsys Data Type |
Notes |
---|---|---|
CT_EMAIL_ADDRESS |
Text (500 chars) |
If matching on Email Address, column will be null and as this is the merge field. If merging on Customer ID, column will be populated. |
CT_CROWDTWIST_ID |
Integer |
CrowdTwist User ID. Attribute is renamed as not conflict with Responsys system attribute settings. |
CT_THIRD_PARTY_ID |
Text (500 chars) |
If matching on Customer ID, column will be null and as this is the merge field. If merging on Email Address, column will be populated. |
CT_IS_ACTIVE |
Single Character |
|
CT_FIRST_NAME |
Text (500 chars) |
|
CT_MIDDLE_NAME |
Text (500 chars) |
|
CT_LAST_NAME |
Text (500 chars) |
|
CT_GENDER |
Text (25 chars) |
|
CT_COUNTRY |
Text (25 chars) |
|
CT_POSTAL_CODE |
Text (25 chars) |
|
CT_MOBILE_PHONE_NUMBER |
Text (100 chars) |
|
CT_DATE_CREATED |
Time Stamp |
|
CT_DATE_LAST_LOGIN |
Time Stamp |
|
CT_DATE_LAST_UPDATED |
Time Stamp |
|
CT_DATE_OF_BIRTH |
Time Stamp |
|
CT_LANG_PREF |
Text (25 chars) |
|
CT_TOTAL_POINTS |
Integer |
|
CT_REDEEMABLE_POINTS |
Integer |
|
CT_RECEIVE_SMS_MESSAGES |
Single Character |
|
CT_EMAIL_IS_VERIFIED |
Single Character |
|
CT_RECEIVE_EMAIL_UPDATES |
Single Character |
|
CT_CUSTOM_DATA |
Text (4000 chars) |
Array, capped at 4000 characters |
CT_TIER_RESET_DATE |
Time Stamp |
|
CT_TIER_DATE_REACHED |
Time Stamp |
|
CT_TIER_EXPIRATION_DATE |
Time Stamp |
|
CT_TIER_ASSIGNED_BY_EVENT |
Text (25 chars) |
|
CT_TIER_CURRENT |
Text (100 chars) |
|
CT_TIER_TIMEFRAME_SCORE |
Number |
|
CT_TIER_SCORE_NEEDED_TO_REACH |
Number |
|
CT_SIGNUP_CHANNEL_ID |
Integer |
|
User Activity
Settings:
- insertOnNoMatch: true
- updateOnMatch: REPLACE_ALL
- matchColumnName1: EMAIL_ADDRESS
- Primary Key: USER_ACTIVITY_ID
Responsys Field Name |
Responsys Data Type |
Sample Data |
---|---|---|
EMAIL_ADDRESS_ |
Text 500 chars |
"testuser@gmail.com" |
USER_ID |
Integer |
"203" |
THIRD_PARTY_ID |
Text 500 chars |
"ASDT345354" |
USERNAME |
Text 100 chars |
"Pranay" |
MOBILE_NUMBER |
Text 100 chars |
"123456789" |
USER_ACTIVITY_ID |
Integer *PRIMARY KEY |
"453" |
ACTIVITY_ID |
Integer |
"215" |
POINTS |
Integer |
"80" |
ACTIVITY_NAME |
Text 500 chars |
"Rewards Redeemed" |
TITLE |
Text 500 chars |
"Title in English" |
DESCRIPTION |
Text 4000 chars |
"Abc" |
ACTIVITY_EXTRA_DATA |
Text 4000 chars |
" {\"campaign_id\":\"123\"}" |
DATE_CREATED |
Time stamp |
"2020-06-11 10:11:12.0" |
DATE_AWARDED |
Time stamp |
"2020-06-08 3:11:12.0" |
NoteS |
Text 500 chars |
"Cheap Coupon" |
REFERENCE_ID |
Text 500 chars |
"A3453" |
USER_ACTIVITY_CUSTOM_DATA |
Text 4000 chars |
" {\"customer_id\":\"test\"}" |
LANGUAGE_ID |
Text 100 chars |
"fr" |
TRANSLATED_TITLE |
Text 500 chars |
"Title In French" |
TRANSLATED_DESCRIPTION |
Text 4000 chars |
"Abc in French" |
User Redemption
Settings:
- insertOnNoMatch: true
- updateOnMatch: REPLACE_ALL
- matchColumnName1: EMAIL_ADDRESS
- Primary Key: ORDER_ID
Field Name |
Responsys Data Type |
Sample Data |
---|---|---|
EMAIL_ADDRESS_ |
Text 500 chars |
"testuser@gmail.com" |
USER_ID |
Integer |
"2155" |
THIRD_PARTY_ID |
Text 500 chars |
"A46F64646" |
FIRST_NAME |
Text 100 chars |
"John" |
LAST_NAME |
Text 100 chars |
"George" |
USERNAME |
Text 100 chars |
"JG" |
MOBILE_NUMBER |
Text 100 chars |
"544466533" |
REDEEMABLE_POINTS |
Integer |
"64545" |
ORDER_ID |
Text 500 chars |
"A4556" |
REWARD_GROUP_ID |
Integer |
"45645" |
REWARD_ID |
Integer |
"56575" |
REFERENCE_ID |
Text 500 chars |
"56" |
QUANTITY |
Integer |
"45553" |
TOTAL_POINTS_REDEEMED |
Integer |
"80" |
CATEGORY_NAME |
Text 500 chars |
"Shirts" |
DATE_FULFILLED |
Timestamp |
"2020-07-11 10:11:12.0" |
ORDER_DATE |
Timestamp |
"2020-07-11 10:11:12.0" |
TITLE |
Text 500 chars |
"T-Shirts" |
DESCRIPTION |
Text 4000 chars |
"T-shirts with Marvel characters" |
COLOR_NAME |
Text 500 chars |
"Red" |
SIZE_NAME |
Text 500 chars |
"Medium" |
REWARD_EXTRA_DATA |
Text 4000 chars |
" {\"email_template\":\"esp_1\"}" |
NoteS |
Text 4000 chars |
"Notes" |
COUPON_CODE |
Text 4000 chars |
"DFDFG" |
SHIPPING_FIRST_NAME |
Text 100 chars |
"John" |
SHIPPING_LAST_NAME |
Text 100 chars |
"Smith" |
SHIPPING_STREET_ADDRESS1 |
Text 100 chars |
"110 east 23rd st" |
SHIPPING_STREET_ADDRESS2 |
Text 100 chars |
"floor 7" |
SHIPPING_POSTAL_CODE |
Text 100 chars |
"10010" |
SHIPPING_PHONE_NUMBER |
Text 100 chars |
"456455645" |
SHIPPING_CITY |
Text 100 chars |
"New York" |
SHIPPING_STATE |
Text 100 chars |
"NY" |
SHIPPING_COUNTRY |
Text 100 chars |
"USA" |
REDEMPTION_CUSTOM_DATA |
Text 4000 chars |
" {\"customer_id\":\"test\"}" |
LANGUAGE_ID |
Text 100 chars |
"fr" |
TRANSLATED_TITLE |
Text 500 chars |
"translated title" |
TRANSLATED_DESCRIPTION |
Text 4000 chars |
"translated description" |
TRANSLATED_SIZE |
Text 500 chars |
"translated size" |
TRANSLATED_COLOR |
Text 500 chars |
"translated color" |
Points Expiration
Settings:
- insertOnNoMatch: true
- updateOnMatch: REPLACE_ALL
- matchColumnName1: EMAIL_ADDRESS or matchColumnName1: CUSTOMER_ID (based on configuration)
Field Name |
Sample Value |
Format |
Description |
---|---|---|---|
User Details |
|||
CT_USER_ID
|
348399 | Integer | This is crowdTwist member id. |
CT_EMAIL_ADDRESS or EMAIL_ADDRESS_ | test@ct.com | Text (100 chars) | Email of the member. If match is on email use Field name EMAIL_ADDRESS_. If match is on third party id use Field name CT_EMAIL_ADDRESS. |
CT_THIRD_PARTY_ID or CUSTOMER_ID_ |
11323 | Text (100 chars) | User's third party ID. If match is on third party id use CUSTOMER_ID_. |
message_date | 2021-05-20T18:25:43.511-04:00 | Timestamp | Event capture timestamp for inactivity point expiration. |
inactivity_last_qualified_date |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
inactivity_exp_date |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
inactivity_points_exp | 200 | Integer | Number of points that will be expiring if qualified activity is not performed. |
redperiod_expiration_date_pre1 | 2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of preceding 1st month where preceding month is the month where expiration period was updated and points have data. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expired_pre1 | 120 | Integer | Number of points expired in the preceding 1st month. |
redperiod_redeemed_pre1 | 120 | Integer | Number of points redeemed in the preceding 1st month. |
redperiod_expiration_date_nxt1 | 2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of current month. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt1 | 200 | Integer | Number of points expiring in the current month. |
redperiod_redeemed_nxt1 | 120 | Integer | Number of points redeemed in the current month. |
redperiod_expiration_date_nxt2 |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of next 1st month where next 1st month is the month where expiration period was updated and points have data. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt2 | 200 | Integer | Number of points expiring in the next 1st month. |
redperiod_redeemed_nxt2 | 120 | Integer | Number of points redeemed in next 1st month. |
redperiod_expiration_date_nxt3 |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of next 2nd month where next 2nd month is the month where expiration period was updated and points have data.. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt3 | 200 | Integer | Number of points expiring in the next 2nd month. |
redperiod_redeemed_nxt3 | 120 | Integer | Number of points redeemed in next 2nd month. |
redperiod_expiration_date_nxt4 |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of next 3rd month where next 3rd month is the month where expiration period was updated and points have data. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt4 | 200 | Integer | Number of points expiring in the next 3rd month. |
redperiod_redeemed_nxt4 | 120 | Integer | Number of points redeemed in next 3rd month. |
redperiod_expiration_date_nxt5 |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of next 4th month where next 4th month is the month where expiration period was updated and points have data. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt5 | 200 | Integer | Number of points expiring in the next 4th month. |
redperiod_redeemed_nxt5 | 120 | Integer | Number of points redeemed in next 4th month. |
redperiod_expiration_date_nxt6 |
2021-05-20T18:25:43.511-04:00 |
Timestamp |
Point expiration date of next 5th month where where next 5th month is the month where expiration period was updated and points have data. The UTC date & time the of the last qualifying activity performed. This date must be an ISO-8601 compliant date field with offset appended to it. |
redperiod_expiring_nxt6 | 200 | Integer | Number of points expiring in the next 5th month. |
redperiod_redeemed_nxt6 | 120 | Integer | Number of points redeemed in next 5th month. |