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

  1. Sign in to your Xtremepush project.
  2. Go to Settings > Integrations.
  3. 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

FieldRequiredDescription
app_tokenYesYour Xtremepush project App Token (Settings > Integrations). Sent in the request body to authenticate event hits.
api_base_urlYesRegion host: https://api.eu.xtremepush.com (EU) or https://api.us.xtremepush.com (US).

Configure in Signal

Add the integration

  1. Go to Integrations > Add Integration > Xtremepush.
  2. Choose the Default preset.
  3. Enter your App Token and select the correct API Base URL for your region.
  4. Select the consent categories that should gate delivery (typically marketing).
  5. 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.

SignalFieldNotes
External user IDuser_idRequired. The identifier Xtremepush keys profiles on. Auto-creates the user if unknown.
Emailuser_attributes.emailPlain (not hashed) — Xtremepush is a first-party engagement platform that messages the user directly, so it needs the raw address.
First / last nameuser_attributes.first_name, user_attributes.last_nameProfile traits from datafly.identify().
Phoneuser_attributes.phoneProfile 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.

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 eventXtremepush event
pagepage_view
Product Viewedproduct_viewed
Product Addedadd_to_cart
Checkout Startedcheckout_started
Order Completedpurchase
Signed Upsign_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

  1. In Signal, open the Event Debugger for your Xtremepush integration.
  2. Trigger an event on your site (e.g. a purchase).
  3. Confirm Signal received {"success": true, "code": 200} from Xtremepush.
  4. In Xtremepush, open the user profile for the user_id you sent and confirm the event appears in the profile’s event/activity history.
  5. If you have a campaign triggered by the event, confirm it fires.

Troubleshooting

ProblemSolution
success: false / 401 / 403App 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 visibleCheck you are sending to the correct region host (EU vs US). Wrong region returns success but matches nothing useful.
New/duplicate users appearingThe 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 appliedConsent group names are project-specific. Confirm the exact channel + group names in Xtremepush and update the mapping.
400 errorsMissing required user_id or event, or malformed body. Inspect the payload in Signal’s Event Debugger.