Skip to main content
Skip table of contents

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
JSON
[
 {
 "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
JSON
{
  "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
JSON
{
  "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
JSON
{
  "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
JSON
{
  "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&param=gmail&count=100&page=1

Response Body
JSON
[
  {
    "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
JSON
{
  "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
JSON
{
   "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
JSON
{
   "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
JSON
{
   "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
JSON
{
   "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
JSON
{
   "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
JSON
{
  "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
JSON
{
   "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
JSON
[
   "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
JSON
{
  "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:

  • Sent

  • Opened

  • Hard Bounce

  • Soft Bounce

  • Clickthrough

  • Unsubscribed

  • Not Opened

  • Not 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.

Additional resources

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.