Marigold functional guide
Overview
The following guide provides information about the capabilities of Marigold within Redpoint Interaction (RPI), how sending emails/synchronizing state data works, and links to other resources.
Key capabilities
The Marigold connector provides the following key capabilities:
Channel configuration
The ability to send emails via an Interaction using an Offer Activity and Queue Listener
Receiving state/disposition data via the Channel Synchronization Task
Using state/disposition data as inputs to additional workflows and downstream activities
Unique features
The Marigold connector supports the following features:
Ability to send secure messages
Ideal platform to use for Queue Listeners as they support timely delivery of emails
Support for BCC within the channel configuration
Various channel configuration options to optimize performance for outbound and inbound processing
Process flow
The following flow chart shows how the Marigold channel works within both outbound fulfillment and inbound state synchronization.
Outbound processing
Inbound processing
Outbound fulfillment
The Marigold connector performs the following steps when it is used as part of an outbound Offer Activity.
Step 1
Initiate a connectivity test to validate the credentials configured in the channel are valid.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/Table
Response Body
[
{
"viewId": 2444,
"viewName": "Order",
"entityId": 551,
"tableName": "order"
},
{
"viewId": 2445,
"viewName": "Order_Item",
"entityId": 552,
"tableName": "order_item"
},
{
"viewId": 2380,
"viewName": "Recipient",
"entityId": 489,
"tableName": "recipient"
}
]
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/MergeSymbol?objId=43953
Response Body
{
"merge_symbol_value": "{[Silver Rewards Content|52732]}",
"obj": {
"obj_id": 45990,
"display_name": "Silver Rewards Content",
"type_id": "ContentBlock",
"ref_id": 52732,
"parent_obj_id": 37249,
"eligibility_status_id": "READY"
}
}
Step 2
If the channel is configured to auto-suppress unsubscribes, RPI will query the suppression email table to identify and suppress any matching email addresses before generating the mail merge files.
Step 3
If there is any image content on the offer, upload them as image assets to Marigold.
Method
POST
Endpoint
https://aet.eccmp.com/services2/api/MediaUpload
Request Body
{
"cust_id": 394,
"filename": "windowsheader.jpg",
"parent_obj_id": 37228,
"encoding": "base64",
"data": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAACXBIWXMAAA7EAAAOxAGVK
w4bAAAAB3RJTUUH4QsOEhYEgpQidQAAAAd0RVh0QXV0aG9yAKmuzEgAAAAMdEVYdERlc2N
yaXB0aW9uABMJISMAAAAKdEVYdENvcHlyaWdodACsD8w6AAAADnRFWHRDcmVhdGlvbiB0a
W1lADX3DwkAAAAJdEVYdFNvZnR3YXJlAF1w/zoAAAALdEVYdERpc2NsYWltZXIAt8C0jwA
AAAh0RVh0V2FybmluZwDAG+aHAAAAB3RFWHRTb3VyY2UA9f+D6wAAAAh0RVh0Q29tbWVud
AD2zJa/AAAABnRFWHRUaXRsZQCo7t"
}
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/MediaUpload?id=52271
Response Body
{
"http://namwpm.eccmp.com/wpm/394/LogoImages/Company_logo.png"
}
Step 4
If an opt-out message identifier is specified in the channel, retrieve the unsub merge symbol.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/MergeSymbol?objId=43953
Response Body
{
"merge_symbl_value": 43566,
"obj_id": 43953,
"display_name": “Merge Symbol”,
"ref_id": 54325,
"type_id": 36881,
"parent_obj_id": 94304,
"eligibility_status_id": “READY”,
}
Step 5
Initialize the custom field mappings on the channel. Table asset attributes are ignored.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/SearchRecords?viewName=lookupTableName&prop=name_first,name_last,email&columnName=email&operation=like¶m=gmail&count=100&page=1
Response Body
[
{
"id": 2296513,
"properties": [
{
"propName": "name_last",
"value": "John"
},
{
"propName": "name_first",
"value": "Smith"
},
{
"propName": "email",
"value": "john.smith@cheetahdigital.com"
}
]
},
{
"id": 2309775,
"properties": [
{
"propName": "name_last",
"value": "Bruce"
},
{
"propName": "name_first",
"value": "Wayne"
},
{
"propName": "email",
"value": "bruce.wayne@cheetahdigital.com"
}
]
},
{
"id": 2309789,
"properties": [
{
"propName": "name_last",
"value": "Mary"
},
{
"propName": "name_first",
"value": "Jones"
},
{
"propName": "email",
"value": "mary.jones@cheetahdigital.com"
}
]
}
]
Step 6
Create the email content.
Step 7
Export email contacts, including seeds, into local CSV files.
Step 8
Send generated contacts records to queue provider.
Step 9
Create the HTML and text campaign files. Check if the campaign already exists in Marigold.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/Object?name=%22campaignName%22
Response Body
{
"obj_id": 76722,
"display_name": “Campaign name”,
"ref_id": 95472,
"type_id": 83115,
"parent_obj_id": 89001,
"eligibility_status_id": “READY”,
}
If the campaign doesn’t exist yet, create it.
Method
POST
Endpoint
https://aet.eccmp.com/services2/api/EmailCampaign
Request Body
{
"custId":394,
"entityId":100,
"typeId":"CALCULATED",
"toFilterId":29094,
"obj":{
"display_name":"Test Date Calculated Email Campaign",
"parent_obj_id":37249
},
"contBodies":[
{
"type":"HTML",
"usageMask":"ALL_EMAIL_STYLE_USAGE_MASK",
"body":"HTML content goes here."
},
{
"type":"TEXT",
"usageMask":"EMAIL, WEB, REPORT_SOCIAL_MASK",
"body":"Plain text content goes here."
}
],
"emailMsgTemplate":{
"fromName":"Cheetah Digital",
"toName":"{(name_first)} {(name_last)}",
"toAddressPropId":1150,
"fromAddressId":1005,
"codePageId":65001,
"subject":"Hello, {(name_first)}!"
},
"campParam":{
"sendSchedule":{
"startTime":"2018-03-19T09:00:00"
},
"queueSchedule":{
"startTime":"2018-03-19T09:00:00",
"dayFrequency":{
"frequencyType":"Daily",
"daysInterval":1
},
"timeFrequency":{
"runAtTime":"2000-01-01T09:00:00"
}
}
}
}
Or, if the campaign already exists, update it.
Method
PUT
Endpoint
https://aet.eccmp.com/services2/api/EmailCampaign?id=34566
Request Body
{
"custId":394,
"entityId":100,
"typeId":"CALCULATED",
"toFilterId":29094,
"obj":{
"display_name":"Test Date Calculated Email Campaign",
"parent_obj_id":37249
},
"contBodies":[
{
"type":"HTML",
"usageMask":"ALL_EMAIL_STYLE_USAGE_MASK",
"body":"HTML content goes here."
},
{
"type":"TEXT",
"usageMask":"EMAIL, WEB, REPORT_SOCIAL_MASK",
"body":"Plain text content goes here."
}
],
"emailMsgTemplate":{
"fromName":"Cheetah Digital",
"toName":"{(name_first)} {(name_last)}",
"toAddressPropId":1150,
"fromAddressId":1005,
"codePageId":65001,
"subject":"Hello, {(name_first)}!"
},
"campParam":{
"sendSchedule":{
"startTime":"2018-03-19T09:00:00"
},
"queueSchedule":{
"startTime":"2018-03-19T09:00:00",
"dayFrequency":{
"frequencyType":"Daily",
"daysInterval":1
},
"timeFrequency":{
"runAtTime":"2000-01-01T09:00:00"
}
}
}
}
Step 10
Upload the list of contacts to send the email to.
Method
POST
Endpoint
https://aet.eccmp.com/services2/api/Import
Request Body
{
"cust_id":"394",
"prop_map_id":"4593",
"type_id":"FILE",
"import_file":"api_test_import",
"encoding":"UTF8",
"file":" RW1haWwsRmlyc3ROYW1lLExhc3ROYW1lDQpqb2huLmRvZUBjaGVldGFoZGlnaXRhbC5jb20sSm9obixEb2UNCm1hcn kuc21pdGhAY2hlZXRhaGRpZ2l0YWwuY29tLE1hcnksU21pdGgNCmhvbWVyLnNpbXBzb25AY2hlZXRhaGRpZ2l0YWwuY29tLEhvbWVy LFNpbXBzb24NCg==",
"Obj":{
"display_name":"Batch Import API Test",
"parent_obj_id":37249
}
}
Step 11
Monitor the import status of the contacts.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/Import?id=45210
Response Body
{
"import_id":5506,
"import_name":"Recipient import",
"cust_id":123,
"prop_map_id":4296,
"type_id":"FILE",
"status_id":"DONE",
"import_file":"2017-07-26_18-51-35_9435930.txt",
"hierarchy_id":100,
"task_priority":700,
"importPreviewFlags":{
"import_id":5506,
"skip_loaded_preview":1,
"skip_parsed_preview":0,
"skip_stats_preview":1
},
"importStat":{
"import_id":5506,
"parsing_start_time":"2017-07-26T22:51:48.713",
"parsing_finish_time":"2017-07-26T22:51:49.263",
"update_start_time":"2017-07-26T22:53:37.477",
"update_finish_time":"2017-07-26T22:53:39.817",
"importStatMetrics":[
{
"metric_val":106,
"import_id":5506,
"type_id":1000
},
{
"metric_val":126,
"import_id":5506,
"type_id":"FILE_ROWS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"EMPTY_ROWS"
},
{
"metric_val":106,
"import_id":5506,
"type_id":"WARNINGS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"BAD_EMAILS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"FIXED_EMAILS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"BAD_PHONES"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"FIXED_PHONES"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"ERRORS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"BAD_AK_IDS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"CONFLICT_AK_IDS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"DUP_AK_IDS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"SWITCH_AK_IDS"
},
{
"metric_val":6,
"import_id":5506,
"type_id":"OLD_AK_IDS"
},
{
"metric_val":120,
"import_id":5506,
"type_id":"NEW_PK_IDS"
},
{
"metric_val":0,
"import_id":5506,
"type_id":"DUP_PK_IDS"
},
{
"metric_val":126,
"import_id":5506,
"type_id":"UPD_PK_IDS"
}
]
},
"obj":{
"obj_id":46035,
"display_name":"Recipient import",
"type_id":"Import",
"ref_id":5506,
"parent_obj_id":39760,
"eligibility_status_id":"READY"
}
}
Step 12
Create the file import filter.
Method
GET
Endpoint
https://aet.eccmp.com/services2/api/Object?id=44199
Response Body
{
"filter_id":37681,
"filter_name":"Summer campaign audience",
"cust_id":394,
"entity_id":100,
"type":"MULTIPART",
"status_id":"NEW",
"time_zone_id":"Central Standard Time",
"filterParams":[
{
"filter_id":37681,
"param_id":1,
"param_name":"operator",
"string_val":"AND"
}
],
"filterParts":[
{
"parent_filter_id":37681,
"child_filter_id":37684,
"seq":1,
"childFilter":{
"filter_id":37684,
"filter_name":"Summer campaign audience",
"cust_id":394,
"entity_id":100,
"type":"BIRTHDAY_FORMULA",
"status_id":"NEW",
"time_zone_id":"Central Standard Time",
"filterParams":[
{
"filter_id":37684,
"param_id":1,
"param_name":"prop_id",
"integer_val":13779,
"string_val":"13779"
},
{
"filter_id":37684,
"param_id":2,
"param_name":"mode",
"string_val":"datediff"
},
{
"filter_id":37684,
"param_id":3,
"param_name":"datepart",
"string_val":"month"
},
{
"filter_id":37684,
"param_id":4,
"param_name":"diff_time",
"string_val":"2017-08-01",
"datetime_val":"2017-08-01T00:00:00"
},
{
"filter_id":37684,
"param_id":5,
"param_name":"diff_count",
"integer_val":0,
"string_val":"0"
},
{
"filter_id":37684,
"param_id":6,
"param_name":"diff_count_operator",
"string_val":"="
}
]
},
"filterPartStat":{
"parent_filter_id":37681,
"child_filter_id":37684
}
},
{
"parent_filter_id":37681,
"child_filter_id":37683,
"seq":2,
"childFilter":{
"filter_id":37683,
"filter_name":"Summer campaign audience",
"cust_id":394,
"entity_id":100,
"type":"FORMULA",
"status_id":"NEW",
"time_zone_id":"Central Standard Time",
"filterParams":[
{
"filter_id":37683,
"param_id":1,
"param_name":"prop_id",
"integer_val":11657,
"string_val":"11657"
},
{
"filter_id":37683,
"param_id":2,
"param_name":"operator",
"string_val":"="
},
{
"filter_id":37683,
"param_id":3,
"param_name":"value_1",
"string_val":"F"
}
]
},
"filterPartStat":{
"parent_filter_id":37681,
"child_filter_id":37683
}
},
{
"parent_filter_id":37681,
"child_filter_id":37682,
"seq":3,
"childFilter":{
"filter_id":37682,
"filter_name":"Summer campaign audience",
"cust_id":394,
"entity_id":100,
"type":"FORMULA",
"status_id":"NEW",
"time_zone_id":"Central Standard Time",
"filterParams":[
{
"filter_id":37682,
"param_id":1,
"param_name":"prop_id",
"integer_val":10910,
"string_val":"10910"
},
{
"filter_id":37682,
"param_id":2,
"param_name":"operator",
"string_val":">="
},
{
"filter_id":37682,
"param_id":3,
"param_name":"value_1",
"string_val":"100.0000"
}
]
},
"filterPartStat":{
"parent_filter_id":37681,
"child_filter_id":37682
}
}
],
"filterStat":{
"filter_id":37681
},
"filterStatProps":[
{
"filter_id":37681,
"prop_id":1155,
"top_amount":1000,
"viewColumn":{
"col_id":1048,
"view_id":1002,
"display_name":"Email Address Status ID",
"display_seq":3,
"prop_id":1155,
"viewColPicks":[
]
}
}
],
"obj":{
"obj_id":46435,
"display_name":"Summer campaign audience",
"type_id":"Filter",
"ref_id":37681,
"parent_obj_id":37249,
"eligibility_status_id":"READY"
}
}
Method
POST
Endpoint
https://aet.eccmp.com/services2/api/Filter
Request Body
{
"customerId": "YOUR_CUSTOMER_ID",
"folderId": "YOUR_FOLDER_ID",
"name": "MyFilter_EmailDomain",
"logicalComponents": [
{
"sourceTableId": "USER_PROFILE",
"fieldName": "emailAddress",
"operator": "ENDS_WITH",
"value": "example.com"
}
]
}
Step 13
Repeat steps 7 and 8 for seeds.
Step 14
Create the seed list.
Method
PUT
Endpoint
https://aet.eccmp.com/services2/api/SeedLists
Request Body
{
"name":"API Seed List",
"table":"recipient",
"status":"READY",
"tags":[
"testing"
]
}
Step 15
Add recipients to the seed list.
Method
PUT
Endpoint
https://aet.eccmp.com/services2/api/SeedLists/54571/Recipients
Request Body
[
"admin@cheetahdigital.com",
"mary.smith@cheetahdigital.com"
]
Step 16
Create the campaign object for seeds (see Step 9).
Step 17
Launch the campaign.
Method
PUT
Endpoint
https://aet.eccmp.com/services2/api/EmailCampaign?id=23901
Request Body
{
"CampId": 78335,
"CampAction": "LAUNCH"
}
State data synchronization
The following steps make up the inbound process. The following states are available for Marigold.
Step 1
If Import via file is checked, download email report for each event as follows:
SentOpenedHard BounceSoft BounceClickthroughUnsubscribedNot OpenedNot Clickthrough
Marigold will put result files in the FTP location selected at the Marigold channel in RPI. During system task synchronization, RPI will download the files and read the contents to update the states listed above. RPI will use the disposition data’s camp_id, p_rpcontactid, and p_channelexecutionid information to update the count for each event.

