Bluecore
Bluecore is a retail marketing platform that powers triggered email and SMS campaigns, predictive audiences, and product recommendations from a customer’s browsing and purchase behaviour. Datafly Signal delivers events to Bluecore server-to-server using the Events API, so behavioural and commerce signals reach Bluecore reliably without a browser pixel.
This integration is currently in alpha. Configuration and behaviour may change.
Prerequisites
Complete these steps with Bluecore before configuring Signal.
Get your Bluecore namespace token
Your Bluecore namespace (also called the token) identifies your account on every API call (for example bluestore). It is shown in your Bluecore account settings, or your Bluecore Customer Success Manager can provide it. This token is a write credential — keep it server-side only and never expose it in browser code.
Confirm your product catalog IDs
Commerce events reference products by ID. The id you send in the products array must match the product IDs in your Bluecore product catalog, otherwise Bluecore cannot resolve the product for recommendations and triggers. Confirm the ID scheme (SKU, parent product ID, etc.) your catalog uses.
Confirm identity strategy
Bluecore keys customer profiles on the plaintext email address. Signal sends the email as both distinct_id and customer.email. For visitors seen before an email is captured, Signal sends a non-email distinct_id (the Signal anonymous ID); a later identify event links that anonymous ID to the captured email.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
namespace | string | Yes | Your Bluecore namespace / token (e.g. bluestore). Sent as properties.token on every event. |
Configure in Signal
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Bluecore under the Marketing Automation category.
- Click Install, and enter your namespace.
- Click Install Integration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/bluecore/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Bluecore",
"variant": "default",
"config": {
"namespace": "bluestore"
},
"delivery_mode": "server_side"
}'API Endpoint
Signal delivers each event as a POST to the Bluecore Events API:
POST https://api.bluecore.app/api/track/mobile/v1There is no Authorization header — Bluecore authenticates by the namespace token carried in the request body at properties.token. A successful call returns 202 Accepted; Bluecore validates and processes the event asynchronously.
Identity Signals
| Field | Source | Notes |
|---|---|---|
distinct_id | traits.email, falling back to anonymous_id | Required on every event. Email when known, otherwise the Signal anonymous ID. |
customer.email | traits.email | Plaintext email — Bluecore’s primary customer key. Not hashed. |
Bluecore matches on the plaintext email address, so Signal sends it unhashed — unlike advertising pixels and CAPI integrations, which receive SHA-256 hashed identifiers.
Event Mapping
Signal’s GA4-style event names are mapped to Bluecore’s standard event names. Unmapped events are dropped.
| Datafly Event | Bluecore Event | Notes |
|---|---|---|
page | viewed_page | Page URL and title as event properties. |
Product Viewed | viewed_product | Single product in the products array. |
Products Searched | search | Uses search_term instead of products. |
Product Added | add_to_cart | Product, price, quantity. |
Product Removed | remove_from_cart | Product reference. |
Product Added to Wishlist | wishlist | Product reference. |
Order Completed | purchase | order_id, total, and the purchased products. |
Signed Up | optin | Opt-in to marketing. |
Unsubscribed | unsubscribe | Opt-out of marketing. |
Example: Order Completed
A Datafly.js call on your site:
datafly.track("Order Completed", {
order_id: "ORD-1001",
revenue: 49.90,
currency: "USD",
products: [
{ product_id: "SKU123", price: 39.90, quantity: 1 },
{ product_id: "SKU456", price: 10.00, quantity: 1 }
]
});is delivered to Bluecore as:
{
"event": "purchase",
"properties": {
"token": "bluestore",
"distinct_id": "jane@example.com",
"customer": { "email": "jane@example.com" },
"order_id": "ORD-1001",
"total": 49.90,
"products": [
{ "id": "SKU123", "price": 39.90, "quantity": 1 },
{ "id": "SKU456", "price": 10.00, "quantity": 1 }
]
}
}Consent
Bluecore events should be sent under the marketing consent category. The Events API has no per-event consent flag — opt-in and opt-out are explicit optin and unsubscribe events. Signal gates marketing delivery on the visitor’s consent state so events only reach Bluecore when marketing consent is granted.
Testing
- Trigger a test event (for example a product view) from your website.
- In Signal, check Live Events to confirm delivery with a
202 Acceptedresponse. - In Bluecore, verify the customer and behaviour appear in Audience Builder, or ask Bluecore support to confirm receipt — the Events API does not return a per-event lookup.
Bluecore returns 202 for accepted events and validates asynchronously, so a 202 confirms receipt but not downstream processing. Use Audience Builder to confirm the event resolved against a customer profile.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 / 403 | Invalid or unauthorised namespace token | Confirm the namespace value matches your Bluecore account token exactly. |
400 Bad Request | Missing distinct_id or malformed body | Ensure the event carries an email or anonymous ID; check the mapping. |
| Events accepted but no customer in Bluecore | Anonymous distinct_id never linked | Confirm an identify / opt-in event fires once the email is captured. |
| Products not resolving | Product id mismatch | The id must match an ID in your Bluecore product catalog. |
429 Too Many Requests | Rate limit exceeded | Signal retries automatically with backoff. |
See the Bluecore Events API documentation for the full reference.