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.
Why route Selligent (Marigold Engage) through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Selligent (Marigold Engage) even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Presets for Default and Retail. The mapping starts from a working configuration for your vertical instead of a blank field map.
- One consent decision governs every destination. Selligent (Marigold Engage) is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
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 Signals API host, for example https://customername.module.slgnt.eu. Marigold publishes no global host. 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. |
site | Yes | The site or domain the signals come from (for example www.example.com), sent as data.site. Every Signals event requires it. |
id_type | No | Leave blank. Used only by blueprints before 0.5.0. |
Management UI Setup
- Go to Integrations > Add Integration > Selligent (Marigold Engage).
- Choose a preset:
- Default: product view, cart add, purchase, sign-in and sign-up signals.
- Retail: the default signals plus category browse and cart remove.
- Enter
signals_host,api_key,api_secretandsite. - Select consent categories.
- Click Save.
API Endpoints
The Signals API has one path per signal type (Signals API reference and OpenAPI file, “Signal API”):
| Signal event | Signals path |
|---|---|
view_item | POST {signals_host}/api/signal/d/v1/product/browse |
view_item_list (Retail) | POST {signals_host}/api/signal/d/v1/category/browse |
add_to_cart | POST {signals_host}/api/signal/d/v1/cart/add |
remove_from_cart (Retail) | POST {signals_host}/api/signal/d/v1/cart/remove |
purchase | POST {signals_host}/api/signal/d/v1/cart/purchase |
login | POST {signals_host}/api/signal/d/v1/site/signin |
sign_up | POST {signals_host}/api/signal/d/v1/lifecycle/signup |
Every request carries X-Api-Key: {api_key}:{api_secret} and Content-Type: application/json. Page views are not sent: the Signals API has no page signal. Every other event is dropped.
The reference’s introduction documents the X-Api-Key header; its per-path operations also describe a JWT from /api/signal/d/v1/authenticate. Signal uses X-Api-Key. No live Signals account has confirmed it yet.
Identity Signals
Each signal identifies the profile inside data:
| Field | Source |
|---|---|
data.idType | email |
data.email | The email identify trait, trimmed and lower-cased. Required: events without an email are dropped. |
data.customerId | The user ID, when known. |
data.profileAttributes.profileFirstName / profileLastName | The first_name / last_name traits. |
data.eventAttributes.userAgent / ip | The request’s user agent and IP. |
The email is sent in clear: Marigold Engage keys the profile on it. Cookie consent is not forwarded as a marketing opt-in.
datafly.identify("user-123", { email: "jane.doe@example.com", first_name: "Jane" });Event Mapping
Example: Purchase signal
Datafly.js call:
datafly.track("purchase", {
transaction_id: "ORD-001",
value: 129.99,
currency: "usd",
items: [
{ item_id: "SKU-A", item_name: "Widget", item_category: "Gadgets", price: 49.99, quantity: 2 },
{ item_id: "SKU-B", item_name: "Gizmo", price: 30.01, quantity: 1 }
]
});Signal sent by Datafly (POST {signals_host}/api/signal/d/v1/cart/purchase):
{
"specversion": "1.0",
"type": "event.signal",
"dataschema": "evt:signal/v1",
"id": "3f1c2a90-7d4e-4b8a-9c61-2f0e5d7a1b22",
"time": "2026-09-23T10:15:00.000Z",
"name": "cart_purchase",
"data": {
"idType": "email",
"email": "jane.doe@example.com",
"customerId": "user-123",
"site": "www.example.com",
"cartId": "ORD-001",
"transactionId": "ORD-001",
"transactionSource": "web",
"total": 129.99,
"currency": "USD",
"items": [
{ "sku": "SKU-A", "name": "Widget", "category": "Gadgets", "baseprice": 49.99, "quantity": 2 },
{ "sku": "SKU-B", "name": "Gizmo", "baseprice": 30.01, "quantity": 1 }
],
"profileAttributes": { "profileFirstName": "Jane" }
}
}cartId is the site’s cart_id when sent, else the order ID; for cart signals it falls back to the anonymous ID. Browse signals carry sections (the item categories) and elements ({type: "product", id, name} per item), which the Signals schema requires. The root name is a legacy field kept for integrations installed before 0.5.0.
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 200 on success. Use Signal’s event debugger to inspect the outbound payload and the response code.
Verify in Marigold Engage
In Signals & Moments, confirm the signal arrived for the audience configuration and that any Interactive Moment listening for it fired.
Troubleshooting
| Problem | Solution |
|---|---|
401 Unauthorized | The API key is disabled in the Marigold UI, or the X-Api-Key value is not key:secret. |
404 Not Found | Wrong signals_host for your account. |
400 Bad Request | A required signal field is missing (for example site, cartId, or items[].sku). Check the event carries items[] with item_id and quantity. |
| No signals at all | Events without an email trait are dropped; call datafly.identify() with an email first. |