Selligent (Marigold Engage)
Datafly Signal delivers events to Selligent by Marigold (Marigold Engage) server-to-server using the Signals API. Each event becomes a signal in the Signals & Moments platform, where it can trigger Interactive Moments, journeys, and real-time personalisation — without a client-side tag.
Prerequisites
Before configuring Selligent in Signal, you need:
- A Selligent by Marigold (Marigold Engage) account with Interactive Moments enabled.
- A Signals API key and secret.
- Your Selligent instance base URL (Selligent is multi-instance, so this is specific to your account).
Step 1: Find your instance base URL
Your Selligent instance runs on a geographic or per-customer host (for example https://customername.module.slgnt.eu). Find the exact base URL in your Selligent admin configuration. You will use it as the signals_host value (no trailing slash).
Step 2: Create an audience configuration and generate keys
- In an Interactive Moments account, create an audience configuration.
- A Signals API key and secret are generated automatically for that configuration.
- The key is disabled by default — click Enable so it can authenticate API calls.
If the key is left disabled in the Selligent UI, every signal will be rejected with a 401/403. Enable it before testing.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
signals_host | Yes | Your Selligent instance base URL, e.g. https://customername.module.slgnt.eu. No trailing slash. |
api_key | Yes | The Signals API key for your audience configuration. |
api_secret | Yes | The Signals API secret. Sent with the key as X-Api-Key: key:secret. |
id_type | No | How the profile is resolved: email (default) or external (your own customer id). |
Management UI Setup
- Go to Integrations > Add Integration > Selligent (Marigold Engage).
- Choose a variant:
- Default — lifecycle and engagement signals (page, sign-up, login, product view, cart, purchase).
- Retail — full e-commerce funnel (product views, cart add/remove, checkout, purchase).
- Enter your
signals_host,api_key, andapi_secret. - (Optional) Set
id_typetoexternalif you identify profiles by your own customer id instead of email. - Select consent categories (typically
marketing). - Click Save.
API Endpoint
POST https://{signals_host}/signals/v1/signals
X-Api-Key: {api_key}:{api_secret}
Content-Type: application/jsonEach request delivers a single signal as a JSON object.
Identity Signals
Selligent matches each signal to a profile using the idType and value fields:
| Field | Description |
|---|---|
idType | How the profile is resolved. email (default) matches on email address; external matches on your own customer identifier. |
value | The identifier matching idType. For email, Signal uses the email from datafly.identify(); for external, the user id. |
Signal also forwards supporting attributes inside the signal data object — external_id (your user id), anonymous_id (Signal’s stable pseudonymous id), and marketing_consent.
How to identify a profile
Call datafly.identify() when a user logs in, registers, or submits a form so the signal can be matched to a contact:
datafly.identify("user-123", {
email: "jane.doe@example.com"
});The Signals API needs a resolvable profile identifier (value). If no email (or external id) is available, the signal cannot be matched to a contact and is rejected — make sure identity is set before key conversion events.
Event Mapping
Default preset
| Signal event | Selligent signal name |
|---|---|
page | page_view |
Signed Up | sign_up |
Logged In | login |
Product Viewed | product_viewed |
Product Added | add_to_cart |
Order Completed | purchase |
A Retail preset adds cart removal and checkout signals. To customise, edit the integration’s Field Mappings in the Management UI.
Example: Purchase signal
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",
products: [
{ product_id: "SKU-A", name: "Widget", price: 49.99, quantity: 2 },
{ product_id: "SKU-B", name: "Gadget", price: 30.01, quantity: 1 }
]
});Signal sent by Datafly:
{
"name": "purchase",
"idType": "email",
"value": "jane.doe@example.com",
"data": {
"email": "jane.doe@example.com",
"external_id": "user-123",
"anonymous_id": "a1b2c3d4e5f6",
"marketing_consent": "true",
"order_id": "ORD-001",
"value": 129.99,
"currency": "USD",
"products": [
{ "product_id": "SKU-A", "name": "Widget", "price": 49.99, "quantity": 2 },
{ "product_id": "SKU-B", "name": "Gadget", "price": 30.01, "quantity": 1 }
]
}
}Testing Your Integration
Send a test signal
Trigger a tracked event on your site (or replay one from Signal’s event debugger) with a known email identity.
Confirm a 2xx response
The Signals API returns a 2xx status on success. Use Signal’s event debugger to inspect the outbound payload and the Selligent response code.
Verify in Selligent
In the Signals & Moments platform, confirm the signal arrived for the audience configuration and that any Interactive Moment listening for that signal name fired.
Troubleshooting
| Problem | Solution |
|---|---|
401 / 403 Unauthorized | The API key is disabled in the Selligent UI, or the X-Api-Key value is not in the form key:secret. Enable the key and re-check the key/secret. |
404 Not Found | Wrong signals_host for your instance, or the Signals path is incorrect. Confirm the base URL from your Selligent admin configuration. |
400 Bad Request | The signal is missing name or value, or idType is unknown. Ensure identity is set via datafly.identify() and the event is mapped. |
| Signal arrives but no Moment fires | The signal name does not match a configured Interactive Moment trigger. Align the vendor_event_name in the blueprint with the signal name Selligent expects. |
| Profile not matched | The value does not correspond to a known contact for the chosen idType. Verify the email/external id exists in Selligent. |
Notes
- Selligent is multi-instance; there is no single global host. The base URL must be set per integration from your account’s admin configuration.
- Today the Signals API supports
emailandexternalprofile identification, withphone,deviceId,appId, andmarketingidentification documented as becoming available — setid_typeaccordingly once available.