Blueshift
AI-powered customer data platform for predictive segmentation, personalised messaging, and cross-channel campaign orchestration.
Why route Blueshift through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Blueshift even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Client IP and user agent are carried in the payload. Both are taken from the original visitor request rather than your server, which is what Blueshift needs to attribute the event to the right session.
- One consent decision governs every destination. Blueshift is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Complete these steps in Blueshift before configuring Signal.
Access your Blueshift account
Log in to the Blueshift dashboard at app.getblueshift.com (or your EU dashboard).
Find your Event API key
Go to Account Settings > API Keys and copy the Event API Key. Signal sends it as the HTTP Basic username with an empty password; the User API key is not used.
Note your region
If your account is in Blueshift’s EU data centre, set the integration’s Region to EU so events go to api.eu.getblueshift.com.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
event_api_key | secret | Yes | Your Blueshift Event API key. Found in Account Settings > API Keys. Sent as the HTTP Basic username with an empty password. |
region | select | No | us (default, api.getblueshift.com) or eu (api.eu.getblueshift.com) for accounts in Blueshift’s EU data centre. |
retailer_id | string | No | Not used by the Event API; kept for reference. |
Signal Setup
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Blueshift under the CDP category.
- Click Install, and fill in the required fields with the credentials gathered above.
- Click Install Integration to create the integration with a ready-to-use default configuration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/blueshift/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Blueshift",
"variant": "default",
"config": {
"event_api_key": "xxxxxxxxxxxxxxxxxxxx",
"region": "us"
},
"delivery_mode": "server_side"
}'API endpoint
POST https://api.getblueshift.com/api/v1/event (US)
POST https://api.eu.getblueshift.com/api/v1/event (EU)Allow egress to the host of your region from the network your delivery workers run on.
Event Mapping
Each event is a flat JSON object with Blueshift’s event name and attributes:
| Signal event | Blueshift event | Attributes |
|---|---|---|
page | pageload | url, referrer |
view_item | view | products[].sku, product_ids |
add_to_cart, remove_from_cart | add_to_cart, remove_from_cart | product_id, product_ids, products[] |
begin_checkout | checkout | total, currency, coupon, products[] (sku, price, quantity) |
purchase | purchase | order_id, revenue, currency (upper-cased), tax, shipping, coupon, products[] (sku, price, quantity) |
search | search | keywords |
add_to_wishlist, refund | wishlist, refund | product or order fields |
identify | identify | identifiers only |
subscription_started / _upgraded / _downgraded / _renewed / _cancelled (B2B / SaaS and Media presets) | subscription_start / _upgrade / _downgrade / _billing / _cancel | subscription_plan_type, subscription_amount, subscription_period_type |
| Other events of the preset’s event spec | Signal event name | every documented property |
Every event also carries customer_id, email, event_uuid (the Signal event ID, Blueshift’s dedup key), ip, user_agent and timestamp (ISO 8601). Presets: Retail, Default, B2B / SaaS and Media & Streaming.
Identity
| Field | Source | Notes |
|---|---|---|
customer_id | user_id from datafly.identify() | The canonical Blueshift identifier. |
email | identify traits | Trimmed and lower-cased, sent as it is: Blueshift sends messages to the address, so it cannot be hashed. |
Blueshift rejects an event with no identifier, and its anonymous identifier is its own browser cookie, which Signal does not read. Only events from visitors with a user ID or an e-mail address are sent; anonymous browsing is not.
Consent
Blueshift events should be sent under the marketing category by default. Signal forwards the visitor’s CMP consent state on every event so Blueshift can suppress messages for visitors who declined marketing communications.
Delivery
Events are delivered server-side from your Datafly Signal infrastructure directly to the Blueshift API. No client-side scripts are loaded for this integration.
Verify it’s working
- After installing the integration, trigger a test event from your website or via the Signal event API.
- In Blueshift, navigate to Data > Event Stream to view recently received events.
- Search for the test customer under Customers to verify profile creation or update.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid Event API key, or the wrong region | Verify the Event API key in Blueshift Account Settings > API Keys and that the region matches your account |
400 Bad Request | Missing required fields | Ensure events include at least one user identifier (customer_id or email) |
| Purchase events not tracked | Missing retailer ID | Add the retailer_id to the integration config for e-commerce event support |
| Events delivered but not in Event Stream | Processing delay | Blueshift may take a few minutes to process events. Wait and refresh the Event Stream |
Visit Blueshift documentation for full API reference and event tracking details.
See also
- Bloomreach CDP — commerce-focused CDP
- Customer.io — behavioural messaging
- Iterable — cross-channel marketing