Cheetah Digital
Datafly Signal delivers events server-to-server to Cheetah Digital by Marigold (Cheetah Messaging / Marigold Engage) using the Standard Event Trigger API. Each delivered event fires a triggered campaign and loads the recipient’s data into your Cheetah target list, with no client-side pixel and no exposure to ad blockers or browser tracking prevention.
Why route Cheetah Digital through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Cheetah Digital even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Email is hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so Cheetah Digital receives match keys rather than raw personal data.
- Token lifecycle is handled for you. Signal obtains and refreshes the OAuth credentials Cheetah Digital requires, so nothing expires quietly in the middle of a campaign.
- One consent decision governs every destination. Cheetah Digital is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Before configuring Cheetah Digital in Signal, you need a Cheetah Messaging account with API access and a configured API Post.
Obtain your Consumer Key and Consumer Secret
- In the Cheetah Messaging console, open Administration and locate your API user.
- Note the Consumer Key and Consumer Secret. These are your OAuth 2.0 credentials.
Cheetah Messaging uses the OAuth 2.0 Password Credentials grant. The Consumer Key is sent as the OAuth username and the Consumer Secret as the OAuth password.
Identify your regional API base URL
Your tenant is hosted in one region. Use the matching base URL:
- North America:
https://api.eccmp.com - Europe:
https://api.ccmp.eu - Japan:
https://api.marketingsuite.jp
Create an API Post
The Standard Event Trigger fires against a pre-configured API Post, which links a triggered campaign to a target list.
- In the console, create an API Post for the campaign you want Signal events to trigger.
- Map the target-list columns the campaign uses (e.g.
email,name_first,name_last). - Note the API Post’s Object Reference ID — this is your API Post ID.
Field names in the payload must use the system Column Name, not the Display Name. Mismatched names are rejected with a 400 error.
Configuration
| Field | Required | Description |
|---|---|---|
| API Base URL | Yes | Regional API host (https://api.eccmp.com, https://api.ccmp.eu, or https://api.marketingsuite.jp). |
| Consumer Key | Yes | OAuth username for your Cheetah Messaging API user. |
| Consumer Secret | Yes | OAuth password. Stored encrypted. |
| API Post ID | Yes | Object Reference ID of the API Post that defines the triggered campaign and target list. |
Configure in Signal
- In Signal, open Integrations and add Cheetah Digital.
- Enter your API Base URL, Consumer Key, Consumer Secret, and API Post ID.
- Attach the integration to a pipeline and select the Default preset.
- Save and enable the pipeline.
API Endpoint
Signal authenticates and delivers in two stages.
Token request
POST {API Base URL}/services2/authorization/oAuth2/Token
Content-Type: application/x-www-form-urlencoded
grant_type=password&username={Consumer Key}&password={Consumer Secret}The response returns an access_token (default 8-hour lifetime). Signal caches it and refreshes automatically on expiry.
Event delivery
POST {API Base URL}/services2/api/Recipients
Authorization: Bearer {access_token}
Content-Type: application/jsonIdentity Signals
Signal sends the recipient’s system columns as {name, value} pairs so Cheetah can match or create the recipient:
- email: the match key and send address (required, trimmed, lower-cased, plain text).
- name_first / name_last: the contact name.
pk_recip_id is Cheetah’s own record key and is never sent. Other columns (phone, opt-in status, order fields) differ per list: map them as _d.<system column name> once they exist on your list.
Consent gating reads from your CMP’s canonical marketing category, so it works with any consent platform once categories are classified in Signal Settings.
Event Mapping
Cheetah’s Messaging API supports only the OAuth 2.0 password credentials grant, which Signal’s OAuth client does not implement yet (#1496). Until it does, the integration builds the request but cannot authenticate.
One integration is one API Post, and every call fires the triggered campaign the API Post is set up with. The Default preset sends sign_up and newsletter_subscribed; identify and purchase are mapped but disabled, so enable them only for an API Post meant for them.
Example
{
"apiPostId": "2515",
"data": [
{"name": "email", "value": "jane.doe@example.com"},
{"name": "name_first", "value": "Jane"},
{"name": "name_last", "value": "Doe"}
]
}data is an array of {name, value} pairs keyed by the list’s system column names. Add a column by mapping _d.<system column name>. The email is sent in plain text because it is the recipient’s send address; events without an email are not sent.
Testing
- In Signal, open the Event Debugger and send a test
sign_upevent from a visitor identified with an email through the pipeline. - Confirm the delivery shows a
200response from/services2/api/Recipients. - In the Cheetah console, open the API Post’s target list and confirm the recipient was created or updated.
- Confirm the triggered campaign fired for the recipient.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
401 Unauthorized | Expired or invalid token; wrong Consumer Key/Secret | Verify credentials; Signal refreshes tokens automatically, so a persistent 401 means bad credentials or wrong region URL. |
400 Bad Request | Field uses Display Name instead of Column Name, or unknown column | Align blueprint targets with the API Post’s target-list Column Names. |
404 Not Found | Wrong regional base URL or unknown API Post ID | Confirm API Base URL matches your tenant region and API Post ID is correct. |
| Recipient created but no send | API Post not linked to an active triggered campaign | Check the API Post’s campaign configuration in the console. |