MoEngage
MoEngage is a cross-channel customer engagement platform. Datafly Signal delivers your first-party events server-to-server to the MoEngage Track Event (Data Import) API, so user actions captured on your site reach MoEngage without a browser SDK — feeding segmentation, journeys, and campaign triggers.
Why route MoEngage through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach MoEngage even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Delivery is batched, rate-limited, and retried. Signal buffers to Kafka, respects the MoEngage rate limit, and retries on 429 or transient failure rather than dropping the event.
- Presets for Retail and B2B / SaaS. The mapping starts from a working configuration for your vertical instead of a blank field map.
- One consent decision governs every destination. MoEngage is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
- A MoEngage account with API access enabled.
- Your Workspace ID (formerly “App ID”) and Data API key, both from Settings → Account → APIs.
- Your MoEngage data center number (the cluster shown in your dashboard URL:
01,02,03,04,05,06, or101). - A user identifier on your events. Signal maps its
user_idto MoEngage’scustomer_id.
Configuration
In MoEngage, go to Settings → Account → APIs:
| Value | Where to find it |
|---|---|
| Workspace ID | Under Workspace ID — click the copy icon. Used as both the URL path and the Basic Auth username. |
| Data API key | In the API keys section, copy the key from the Data tile. Used as the Basic Auth password. |
| Data center | The cluster number in your dashboard URL (e.g. dashboard-01.moengage.com → 01). |
Configure in Signal
- In Signal, add the MoEngage integration.
- Enter your Workspace ID, Data API Key, and Data Center.
- Attach the MoEngage blueprint to your pipeline and choose a preset (Retail or B2B / SaaS).
- Enable the events you want to forward, then save.
API Endpoint
Signal sends a POST request per event:
POST https://api-{data_center}.moengage.com/v1/event/{workspace_id}
Authorization: Basic base64(workspace_id:api_key)
Content-Type: application/jsonA 200 response means the event was accepted and will be processed asynchronously. MoEngage enforces a limit of 30,000 events per minute and a 128 KB maximum payload size.
Identity Signals
Server-side event delivery to the MoEngage Track Event (Data) API. Maps Signal events to MoEngage actions keyed by customer_id (the Signal user_id), with the email (trimmed, lowercased) and mobile number (E.164) as user identifiers u_em / u_mb for identity resolution, the event time as current_time, and per-action attributes for segmentation and campaign triggers. Anonymous events are not sent.
| Field | Source | Notes |
|---|---|---|
customer_id | user_id | Required by the Track Event API unless identity resolution is enabled. |
user_identifiers.u_em | traits.email | Trimmed and lowercased; MoEngage identifier matching is case-sensitive. |
user_identifiers.u_mb | traits.phone | E.164. |
Event Mapping
Blueprint 0.7.0, reviewed against the vendor’s documentation on 2026-09-23. Each preset maps the events below; every other event is dropped. Events use the canonical names from the event specs (transaction_id, value, items[], search_term); the legacy order_id, revenue and flat product fields are still read as a fallback.
Retail / E-commerce (ecommerce)
Retail funnel as MoEngage actions: page, search, product viewed, added to cart and wishlist, checkout started, order completed and refunded, with product, value (currency upper-cased) and order attributes for segmentation and cart or browse abandonment flows.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | Page Viewed | url, title, referrer |
search | Products Searched | search_term |
view_item | Product Viewed | product_id, product_name, category, brand, price, quantity, value, currency |
add_to_cart | Product Added | product_id, product_name, category, brand, price, quantity, value, currency |
add_to_wishlist | Product Added to Wishlist | product_id, product_name, category, brand, price, quantity, value, currency |
begin_checkout | Checkout Started | value, currency, coupon, product_ids |
purchase | Order Completed | order_id, value, currency, tax, shipping, coupon, product_ids |
refund | Order Refunded | order_id, value, currency, tax, shipping, coupon, product_ids |
B2B / SaaS (saas)
Account lifecycle as MoEngage actions: sign-up, login, trial, subscription started and cancelled, lead generated, with plan and value attributes.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | Page Viewed | url, title, referrer |
sign_up | Signed Up | method |
login | Logged In | method |
trial_started | Trial Started | plan, value, currency |
subscription_started | Subscription Started | plan, billing_cycle, value, currency |
subscription_cancelled | Subscription Cancelled | plan |
generate_lead | Lead Generated | lead_source |
Default (default)
Core MoEngage Track Event actions for any site: page views, sign-up, login and purchase, keyed by customer_id (the Signal user_id) with the email (trimmed, lowercased) and mobile number (E.164) as user identifiers for identity resolution. MoEngage requires customer_id unless identity resolution is enabled, so anonymous events are not sent.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | Page Viewed | url, title, referrer |
sign_up | Signed Up | method |
login | Logged In | method |
purchase | Order Completed | order_id, value, currency, tax, shipping, coupon, product_ids |
Media / Publishing (media)
Content engagement as MoEngage actions: content viewed, video started and completed, sign-up and subscription, for OTT and publisher re-engagement journeys.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | Page Viewed | url, title, referrer |
sign_up | Signed Up | method |
content_viewed | Content Viewed | content_id, content_type, content_title, content_category |
video_content_started | Video Started | asset_id, title, programme, genre |
video_content_completed | Video Completed | asset_id, title |
subscription_started | Subscription Started | plan, value, currency |
An identified purchase (preset ecommerce) is delivered as:
POST https://api-02.moengage.com/v1/event/WS123{
"actions": [
{
"action": "Order Completed",
"attributes": {
"coupon": "SUMMER",
"currency": "GBP",
"order_id": "T-1001",
"product_ids": [
"SKU_1",
"SKU_2"
],
"shipping": 4.99,
"tax": 73.33,
"value": 439.99
},
"current_time": 1758600000,
"platform": "web"
}
],
"customer_id": "crm-user-7",
"type": "event",
"user_identifiers": {
"u_em": "jane.doe@example.com",
"u_mb": "+447700900123"
}
}Testing
- Trigger a mapped event on your site (e.g. complete a test order).
- In Signal’s Event Debugger, confirm the event delivered with a
200response. - In MoEngage, open the user profile for that
customer_idand confirm the action appears under the user’s activity. Processing is asynchronous, so allow a short delay.
Troubleshooting
| Symptom | Likely cause |
|---|---|
401 Unauthorized | Wrong Workspace ID or Data API key, or the wrong key type (use the Data tile key, not a campaign/report key). |
403 Forbidden | Account suspended or blocked. |
404 / connection error | Wrong data center — confirm the cluster number from your dashboard URL. |
400 Bad Request | Missing customer_id, or malformed attributes. |
413 Payload Too Large | Event exceeds 128 KB — reduce array/attribute size. |
429 Too Many Requests | Over 30,000 events/minute; Signal retries with backoff. |
| Events deliver but profile not updating | customer_id does not match an existing profile and Identity Resolution is off — confirm your identifier strategy. |