RudderStack
EmailSendX works as a RudderStack destination, enabling you to sync contacts and trigger automation workflows from your real-time customer data pipeline.
Overview
RudderStack is an open-source customer data platform (CDP) that routes event data from your sources (web app, mobile, server) to destinations like EmailSendX. Once configured, RudderStack automatically forwards identify() and track() events to EmailSendX in real time.
This is especially useful for teams running self-hosted infrastructure who want full control over their data pipeline without sending customer data through Segment's cloud.
identify()
Creates or updates an EmailSendX contact. Email is resolved from userId or traits.email. All traits are stored as contact metadata.
track()
Fires a custom event on the contact. The event name triggers matching CUSTOM_EVENT automations. Event properties are passed as the data payload.
Setup
Option A: RudderStack Destinations Catalog
- In RudderStack, go to Connections → Destinations → Add Destination.
- Search for EmailSendX and select it.
- Select the source you want to connect.
- In the destination configuration, enter your EmailSendX API Key and Workspace ID. Your workspace ID is available in Settings → General.
- Optionally set a default list ID for identified contacts.
- Click Save Destination.
Option B: Direct HTTP endpoint
If you prefer to call EmailSendX directly from your RudderStack transformation functions or backend:
POST https://emailsendx.com/api/rudderstack/track
Headers:
Authorization: Bearer esx_live_your_key_here
Content-Type: application/json
# Accepts RudderStack's standard event payload format
# (type: "identify" or "track")Event Handling
Both identify and track events are processed. The behavior mirrors the Segment integration:
identify — Contact upsert
// RudderStack SDK identify call
rudderanalytics.identify('user_789', {
email: 'alex@startup.io',
firstName: 'Alex',
lastName: 'Kim',
plan: 'pro',
company: 'Startup Inc',
});
// → EmailSendX upserts contact with email: alex@startup.io
// Metadata: { plan: 'pro', company: 'Startup Inc' }track — Custom event
// RudderStack SDK track call
rudderanalytics.track('trial_started', {
trialDays: 14,
plan: 'pro',
source: 'homepage',
});
// → EmailSendX fires 'trial_started' event on the contact
// Triggers any automation with trigger: CUSTOM_EVENT = 'trial_started'
// Event data: { trialDays: 14, plan: 'pro', source: 'homepage' }page() and group() calls are ignored
identify and track events from RudderStack. The page() and group() call types are accepted but not processed (no-op).Field mapping from RudderStack to EmailSendX:
| RudderStack Field | EmailSendX Field |
|---|---|
| traits.email or userId (if email format) | contact.email (required) |
| traits.firstName or traits.first_name | contact.firstName |
| traits.lastName or traits.last_name | contact.lastName |
| All other traits | contact.metadata |
| event (for track calls) | custom event name |
| properties (for track calls) | event data payload |
Using Segment instead of RudderStack?
The Segment integration works identically with the same identify/track model.