Docs/Integrations/RudderStack

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

  1. In RudderStack, go to Connections → Destinations → Add Destination.
  2. Search for EmailSendX and select it.
  3. Select the source you want to connect.
  4. In the destination configuration, enter your EmailSendX API Key and Workspace ID. Your workspace ID is available in Settings → General.
  5. Optionally set a default list ID for identified contacts.
  6. Click Save Destination.

Option B: Direct HTTP endpoint

If you prefer to call EmailSendX directly from your RudderStack transformation functions or backend:

bash
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

js
// 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

js
// 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

EmailSendX only processes 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 FieldEmailSendX Field
traits.email or userId (if email format)contact.email (required)
traits.firstName or traits.first_namecontact.firstName
traits.lastName or traits.last_namecontact.lastName
All other traitscontact.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.