Xtremepush
Sync user profiles and audience lists to Xtremepush for omnichannel customer engagement including push notifications, email, SMS, and in-app messaging. Zeotap keeps your Xtremepush user profiles and list-based segments in sync with your warehouse data.
Prerequisites
- An Xtremepush account with API access enabled
- An Xtremepush App Token (found in Settings > Integrations > API Integration)
- Your Xtremepush API region (EU or US)
Authentication
Xtremepush uses App Token authentication.
- In Xtremepush, go to Settings > Integrations > API Integration
- Copy your App Token (unique to your project, requires admin role)
- Paste it into the App Token field in Zeotap
Note: The App Token grants full API access to the project. Take care when sharing it.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| API Region | Select | Yes | The Xtremepush API endpoint for your region. Options: EU (api.eu.xtremepush.com), US (api.us.xtremepush.com). |
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Object Type | Select | Yes | The type of data to sync. Options: User Profiles (default), List Members. |
| List ID | Text | Yes (when List Members) | The numeric ID of the Xtremepush user list. Found in Data > Audiences. Only shown when Object Type is List Members. |
Supported Operations
Sync Modes
| Mode | Supported |
|---|---|
| Upsert | Yes |
| Insert | — |
| Update | — |
| Mirror | — |
Audience Sync Modes
| Mode | Supported |
|---|---|
| Add | Yes |
| Remove | Yes |
| Mirror | Yes |
| Upsert | Yes |
Features
- Field Mapping: Yes
- Schema Introspection: No
Required Mapping Fields
| Field | Description |
|---|---|
| user_id | Unique user identifier in Xtremepush. Required when Object Type is User Profiles. |
| identifier | The user identifier value (email or user_id) for list membership operations. Required when Object Type is List Members. |
Default Destination Fields
user_id, email, first_name, last_name, mobile_number, email_subscription, sms_subscription, language, timezone
How It Works
User Profiles (Default)
When the object type is User Profiles, Zeotap imports user profile data via the Xtremepush Profile Import API. This creates new profiles or updates existing ones based on the user_id or email identifier.
For each batch:
- Zeotap collects all mapped fields into a columnar format (
columns+rows) - Rows are sent in chunks of 5,000 to the
/api/external/import/profileendpoint - Batches of 100+ records are processed asynchronously by Xtremepush (HTTP 202 response)
- Smaller batches are processed synchronously (HTTP 200 response)
Custom profile attributes can be synced by mapping source columns to attribute key names defined in your Xtremepush project.
List Members
When the object type is List Members, Zeotap manages user list membership via the Xtremepush List Import API. User lists in Xtremepush are collections of identifiers used for campaign targeting and segmentation.
- Add / Upsert: Adds identifiers to the specified list (mode:
create) - Remove: Removes identifiers from the specified list (mode:
delete) - Mirror: Adds identifiers for new/changed rows, removes identifiers for removed rows
Identifiers are typically email addresses or user IDs. Items are sent in chunks of 5,000 per request.
Rate Limits
Xtremepush does not publish strict rate limits for the External API. However, the following best practices apply:
| Recommendation | Detail |
|---|---|
| Profile import batch size | Up to 10,000 records per request (Zeotap uses 5,000) |
| Concurrent imports | Stagger imports by 5 minutes if importing the same user profiles across multiple syncs |
| Retry strategy | One immediate retry on 5xx errors, then retry after exponential backoff |
Zeotap automatically retries requests that receive HTTP 429 or 5xx responses with exponential backoff.
Best Practices
- Use consistent identifiers: Either
user_idoremailshould be consistently mapped across all syncs to avoid duplicate profiles. - E.164 phone format: Mobile numbers must use international format with country code and no plus symbol (e.g.,
353850123456for Ireland,447700900900for UK). - Set subscription status alongside channels: When syncing email or mobile_number, also map
email_subscriptionorsms_subscription(1 = opted in, 0 = opted out) to ensure proper channel addressability. - Create lists before syncing: When using the List Members object type, create the user list in Xtremepush first (under Data > Audiences) and note its numeric ID.
- Stagger large imports: For very large datasets, schedule syncs during off-peak hours and avoid overlapping imports for the same user profiles.
Troubleshooting
Authentication failed: invalid App Token
Verify that you are using the correct App Token from Settings > Integrations > API Integration. The App Token is project-specific and requires admin role access. Ensure you have not confused it with an OAuth bearer token.
Profile import returns 400 error
Check that your mapped fields include either user_id or email in the columns. The Xtremepush Profile Import API requires at least one identifier field. Also verify that column names match existing profile attribute keys in your project.
List not found (404)
Verify that the List ID is correct and that the list exists in Data > Audiences. The List ID must be a numeric identifier, not the list name.
Mobile numbers not appearing on profiles
Ensure mobile numbers are in E.164 international format without the plus symbol. For example, use 353850123456 (Ireland) or 447700900900 (UK). Numbers in local format will be rejected.
Subscription status not updating
When syncing email_subscription or sms_subscription, use numeric values: 1 for opted-in and 0 for opted-out. String values like "true" or "yes" are not supported.
Async import shows 202 but data not appearing
Batches of 100+ records are processed asynchronously. The 202 response indicates the import was accepted for processing. Check the Task History in Xtremepush for import status, including any row-level failures or warnings.
Duplicate profiles after import
This typically happens when using inconsistent casing for identifiers (e.g., User123 vs user123). Use consistent casing for user_id and email values across all imports. Trim leading and trailing spaces from identifier fields.
List member operations timing out
Large list operations (adding or removing thousands of members) may take longer than expected. Zeotap sends items in chunks of 5,000 with a 120-second timeout per request. If timeouts persist, consider reducing sync batch sizes.