Xtremepush
Datafly Signal delivers events to Xtremepush server-to-server using the External Event API (event hits). Each event can trigger a real-time Xtremepush campaign or workflow (email, push, SMS, web, in-app) and updates the matching user profile — with no client-side Xtremepush SDK in the page.
Prerequisites
Before configuring Xtremepush in Signal you need an active Xtremepush project and its App Token.
Step 1: Find your project region
Xtremepush projects are hosted in a region. Note whether your project is on the EU or US platform — this determines the API host:
- EU:
https://api.eu.xtremepush.com - US:
https://api.us.xtremepush.com
Sending events to the wrong region will silently fail to match your project.
Step 2: Get your App Token
- Sign in to your Xtremepush project.
- Go to Settings > Integrations.
- Copy the App Token for your project.
Xtremepush is migrating authentication to OAuth 2.0. Projects created after the June 2026 Xtremepush release use OAuth 2.0 client credentials instead of an App Token. If your project does not expose an App Token, contact Datafly support — an OAuth-based variant of this integration is required.
Step 3: Decide your external user ID
Xtremepush identifies users by an external user_id. Use the same identifier you use elsewhere in Xtremepush (your web/mobile SDK external ID, your CRM/customer ID). If Xtremepush receives a user_id it has not seen, it auto-creates a new profile — so a mismatched ID silently creates orphan users.
Configuration
| Field | Required | Description |
|---|---|---|
app_token | Yes | Your Xtremepush project App Token (Settings > Integrations). Sent in the request body to authenticate event hits. |
api_base_url | Yes | Region host: https://api.eu.xtremepush.com (EU) or https://api.us.xtremepush.com (US). |
Configure in Signal
Add the integration
- Go to Integrations > Add Integration > Xtremepush.
- Choose the Default preset.
- Enter your App Token and select the correct API Base URL for your region.
- Select the consent categories that should gate delivery (typically
marketing). - Click Save.
Map your external user ID
Make sure your pipeline supplies a stable user_id. Call datafly.identify() with your customer/CRM ID when a user is known so server events stitch to the right Xtremepush profile:
datafly.identify("crm-12345", {
email: "jane.doe@example.com",
firstName: "Jane",
lastName: "Doe"
});API Endpoint
POST https://api.eu.xtremepush.com/api/external/hit/event(or https://api.us.xtremepush.com/... for US projects)
Authentication is carried in the request body as the apptoken field. Each event is sent as a single JSON object. Xtremepush returns {"success": true, "code": 200} on acceptance.
A higher-throughput batch endpoint (/api/external/hit/events, up to 1,000 events per request) is also available; contact Datafly support if you need batching enabled.
Identity Signals
Xtremepush matches events to user profiles using the external user_id. Additional profile traits ride along in user_attributes and update the profile before any triggered campaign fires.
| Signal | Field | Notes |
|---|---|---|
| External user ID | user_id | Required. The identifier Xtremepush keys profiles on. Auto-creates the user if unknown. |
user_attributes.email | Plain (not hashed) — Xtremepush is a first-party engagement platform that messages the user directly, so it needs the raw address. | |
| First / last name | user_attributes.first_name, user_attributes.last_name | Profile traits from datafly.identify(). |
| Phone | user_attributes.phone | Profile trait for SMS/WhatsApp channels. |
Unlike advertising destinations, Xtremepush is a customer engagement platform that sends messages to your users, so identity fields such as email and phone are delivered as plain profile attributes (not SHA-256 hashed). All delivery is server-side from your own Signal infrastructure.
Consent
When your CMP consent is mapped, Signal can populate Xtremepush consent_preferences per channel. Consent group names are project-specific — confirm your actual group names in Xtremepush before relying on this mapping. Example structure:
"consent_preferences": {
"email": { "Group Marketing": 1 }
}1 = opt-in, 0 = opt-out.
Event Mapping
Signal uses GA4-style event names. The Default preset maps them to Xtremepush event names; everything else is dropped (defaults.action: drop).
| Signal event | Xtremepush event |
|---|---|
page | page_view |
Product Viewed | product_viewed |
Product Added | add_to_cart |
Checkout Started | checkout_started |
Order Completed | purchase |
Signed Up | sign_up |
Event properties land in the value object; identify traits land in user_attributes. To customise, edit the integration’s Field Mappings in the Management UI.
Example: Purchase event
Datafly.js call:
datafly.identify("crm-12345", { email: "jane.doe@example.com" });
datafly.track("Order Completed", {
order_id: "ORD-001",
revenue: 129.99,
currency: "USD"
});Xtremepush event hit sent by Signal:
{
"apptoken": "YOUR_APP_TOKEN",
"user_id": "crm-12345",
"event": "purchase",
"timestamp": "2026-06-06 11:36:00 +00:00",
"user_attributes": {
"email": "jane.doe@example.com"
},
"value": {
"order_id": "ORD-001",
"revenue": 129.99,
"currency": "USD"
}
}Testing
- In Signal, open the Event Debugger for your Xtremepush integration.
- Trigger an event on your site (e.g. a purchase).
- Confirm Signal received
{"success": true, "code": 200}from Xtremepush. - In Xtremepush, open the user profile for the
user_idyou sent and confirm the event appears in the profile’s event/activity history. - If you have a campaign triggered by the event, confirm it fires.
Troubleshooting
| Problem | Solution |
|---|---|
success: false / 401 / 403 | App Token is wrong, unauthorised, or the project is OAuth-only (post-June-2026). Re-copy the token from Settings > Integrations or switch to the OAuth variant. |
| Events accepted but not visible | Check you are sending to the correct region host (EU vs US). Wrong region returns success but matches nothing useful. |
| New/duplicate users appearing | The user_id doesn’t match your existing Xtremepush identifier. Align user_id with the external ID used by your web/mobile SDK or CRM. |
| Consent not applied | Consent group names are project-specific. Confirm the exact channel + group names in Xtremepush and update the mapping. |
| 400 errors | Missing required user_id or event, or malformed body. Inspect the payload in Signal’s Event Debugger. |