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.

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, or 101).
  • A user identifier on your events. Signal maps its user_id to MoEngage’s customer_id.

Configuration

In MoEngage, go to Settings → Account → APIs:

ValueWhere to find it
Workspace IDUnder Workspace ID — click the copy icon. Used as both the URL path and the Basic Auth username.
Data API keyIn the API keys section, copy the key from the Data tile. Used as the Basic Auth password.
Data centerThe cluster number in your dashboard URL (e.g. dashboard-01.moengage.com01).

Configure in Signal

  1. In Signal, add the MoEngage integration.
  2. Enter your Workspace ID, Data API Key, and Data Center.
  3. Attach the MoEngage blueprint to your pipeline and choose a preset (Retail or B2B / SaaS).
  4. 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/json

A 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

MoEngage resolves a profile from the customer_id first. Signal also forwards reserved identity attributes so MoEngage can match and enrich the profile:

Signal sourceMoEngage fieldNotes
user_idcustomer_id (root)Primary user identifier. Required.
$traits.emailuser_identifiers.u_emReserved email attribute.
$traits.phoneuser_identifiers.u_mbReserved mobile attribute, normalised to E.164.
$traits.first_nameattributes.u_fnStandard first-name attribute.
$traits.last_nameattributes.u_lnStandard last-name attribute.

MoEngage does not require hashing for these fields — it stores the raw values on the profile, so Signal sends email and phone in clear within the encrypted server-to-server request. Phone numbers are normalised to E.164 before sending.

Reserved prefix: never use moe_ as a prefix on event names or attributes — it is reserved by MoEngage and may cause events to be dropped.

Event Mapping

Signal maps each event to a MoEngage action. The event name becomes action, identity fields land at the payload root, and event properties land in the action’s attributes object.

Example — a purchase captured with Datafly.js:

datafly.track("Order Completed", {
  order_id: "ORD-1001",
  revenue: 89.99,
  currency: "GBP",
  coupon: "WELCOME10",
});

Resulting MoEngage payload:

{
  "type": "event",
  "customer_id": "u_8842",
  "user_identifiers": {
    "u_em": "jane@example.com",
    "u_mb": "+447700900123"
  },
  "actions": [
    {
      "action": "Order Completed",
      "platform": "web",
      "attributes": {
        "order_id": "ORD-1001",
        "value": 89.99,
        "currency": "GBP",
        "coupon": "WELCOME10"
      }
    }
  ]
}

The default presets map these events:

Signal eventMoEngage action
pagePage Viewed
Products SearchedProducts Searched
Product ViewedProduct Viewed
Product AddedProduct Added
Checkout StartedCheckout Started
Order CompletedOrder Completed
Signed UpSigned Up
Logged InLogged In
Subscription StartedSubscription Started

Events not in your blueprint are dropped before delivery.

Testing

  1. Trigger a mapped event on your site (e.g. complete a test order).
  2. In Signal’s Event Debugger, confirm the event delivered with a 200 response.
  3. In MoEngage, open the user profile for that customer_id and confirm the action appears under the user’s activity. Processing is asynchronous, so allow a short delay.

Troubleshooting

SymptomLikely cause
401 UnauthorizedWrong Workspace ID or Data API key, or the wrong key type (use the Data tile key, not a campaign/report key).
403 ForbiddenAccount suspended or blocked.
404 / connection errorWrong data center — confirm the cluster number from your dashboard URL.
400 Bad RequestMissing customer_id, or malformed attributes.
413 Payload Too LargeEvent exceeds 128 KB — reduce array/attribute size.
429 Too Many RequestsOver 30,000 events/minute; Signal retries with backoff.
Events deliver but profile not updatingcustomer_id does not match an existing profile and Identity Resolution is off — confirm your identifier strategy.