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, 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.com → 01).

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

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.

FieldSourceNotes
customer_iduser_idRequired by the Track Event API unless identity resolution is enabled.
user_identifiers.u_emtraits.emailTrimmed and lowercased; MoEngage identifier matching is case-sensitive.
user_identifiers.u_mbtraits.phoneE.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 eventVendor event / callFields
pagePage Viewedurl, title, referrer
searchProducts Searchedsearch_term
view_itemProduct Viewedproduct_id, product_name, category, brand, price, quantity, value, currency
add_to_cartProduct Addedproduct_id, product_name, category, brand, price, quantity, value, currency
add_to_wishlistProduct Added to Wishlistproduct_id, product_name, category, brand, price, quantity, value, currency
begin_checkoutCheckout Startedvalue, currency, coupon, product_ids
purchaseOrder Completedorder_id, value, currency, tax, shipping, coupon, product_ids
refundOrder Refundedorder_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 eventVendor event / callFields
pagePage Viewedurl, title, referrer
sign_upSigned Upmethod
loginLogged Inmethod
trial_startedTrial Startedplan, value, currency
subscription_startedSubscription Startedplan, billing_cycle, value, currency
subscription_cancelledSubscription Cancelledplan
generate_leadLead Generatedlead_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 eventVendor event / callFields
pagePage Viewedurl, title, referrer
sign_upSigned Upmethod
loginLogged Inmethod
purchaseOrder Completedorder_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 eventVendor event / callFields
pagePage Viewedurl, title, referrer
sign_upSigned Upmethod
content_viewedContent Viewedcontent_id, content_type, content_title, content_category
video_content_startedVideo Startedasset_id, title, programme, genre
video_content_completedVideo Completedasset_id, title
subscription_startedSubscription Startedplan, 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

  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.