MoEngage · AsyncAPI Specification
Moengage Webhooks
Version
View Spec
View on GitHub
Customer EngagementMarketing AutomationCustomer Data PlatformPush NotificationsEmailSMSWhatsAppIn-App MessagingSegmentationPersonalizationCampaign ManagementAnalyticsMobile SDKMCPMarTechAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-14'
method: searched
source: https://www.moengage.com/docs/api/data/moengage-streams
sources:
- https://www.moengage.com/docs/api/data/moengage-streams
- https://www.moengage.com/docs/partner-guide/data-and-analytics/workflow-automation/webhook
spec_type: none
spec_note: >-
MoEngage publishes no AsyncAPI document. Neither the documentation repository
(github.com/moengage/moengage-documentation, which carries 30 OpenAPI files under /api) nor any host
in apis.yml serves an /asyncapi.yaml or /asyncapi.json. What MoEngage does publish is two documented
OUTBOUND HTTP callback surfaces — Streams (near real-time event export) and Alerts webhooks — both
captured below as a webhook catalog. This artifact carries a Webhooks pointer, not an AsyncAPI one.
direction: outbound
direction_note: >-
Both surfaces are MoEngage-initiated. MoEngage POSTs to a customer-owned HTTPS endpoint; there is no
inbound webhook receiver on the MoEngage side and no subscription API — enablement is a support/CSM
request, not a self-serve API call.
surfaces:
- name: MoEngage Streams
docs: https://www.moengage.com/docs/api/data/moengage-streams
purpose: >-
Near real-time export of campaign interaction events and user action events to a customer endpoint,
a data lake, or an integrated partner (Mixpanel, Amplitude, Segment, mParticle, RudderStack).
packaging: Streams add-on
transport:
protocol: https
method: POST
content_type: application/json
destination: customer-supplied API endpoint
authentication:
options:
- none
- {type: basic, fields: [username, password]}
- {type: oauth2, grant: client_credentials}
- {type: custom-header, values: [API key, Bearer token], note: Configured via a support ticket.}
batching:
default_batch_size: 100
unit: events per request
retries:
trigger: any non-2XX response
scope: the entire batch is retried
attempts: 3
backoff_seconds: [30, 60, 120]
latency: near real-time
payload:
envelope_fields: [app_name, source, moe_request_id, events]
event_fields: [event_name, event_code, event_uuid, event_time, uid, event_attributes, user_attributes, device_attributes]
event_time_format: epoch seconds
default_event_attributes: [campaign_id, campaign_name, campaign_type, campaign_channel]
constraints:
- Data that occurred before Streams was configured cannot be exported.
- >-
User attributes are updated asynchronously, so the latest attribute values are not guaranteed in an
export.
enablement: >-
Raise a request with the MoEngage CSM or support team supplying the destination endpoint, the event
list, the user/device attributes to include, the auth method, and the workspace. There is no
self-serve subscription API.
events:
- group: email
names: [MOE_EMAIL_SENT, MOE_EMAIL_DELIVERED, MOE_EMAIL_OPEN, MOE_EMAIL_CLICK, MOE_EMAIL_HARD_BOUNCE,
MOE_EMAIL_SOFT_BOUNCE, MOE_EMAIL_DROP, MOE_EMAIL_UNSUBSCRIBE, MOE_EMAIL_SPAM]
- group: sms
names: [SMS_SENT, SMS_DELIVERED]
- group: push
names: [NOTIFICATION_RECEIVED_MOE, NOTIFICATION_CLICKED_MOE, NOTIFICATION_CLEARED_MOE, NOTIFICATION_CLICKED_IOS_MOE,
NOTIFICATION_RECEIVED_WEB_MOE, NOTIFICATION_CLICKED_WEB_MOE]
- group: in-app-and-cards
names: [MOE_IN_APP_SHOWN, MOE_IN_APP_CLICKED, MOE_IN_APP_DISMISSED, MOE_CARD_SENT, MOE_CARD_VIEWED,
MOE_CARD_CLICKED]
- group: flows
names: [USER_ENTERED_FLOW, USER_EXITED_FLOW]
events_note: >-
Additional documented groups for on-site messaging, connector campaigns and control groups exist on
the Streams page; only the event names transcribed verbatim from the documentation are listed above.
- name: MoEngage Alerts webhook
docs: https://www.moengage.com/docs/partner-guide/data-and-analytics/workflow-automation/webhook
purpose: >-
Operational alerting. When a configured MoEngage alert fires, MoEngage POSTs the alert payload to a
customer webhook URL.
transport:
protocol: https
method: POST
content_type: application/json
destination: customer-supplied webhook URL
authentication:
type: signature
header: Signature
algorithm: SHA-256
computation: SHA-256 hexdigest of the API key concatenated with the raw request body
key: Campaign Report API Key
payload:
core_fields: [alert_id, alert_name, alert_type, db_name, alert_triggered_at, alert_evaluation_criteria]
alert_evaluation_criteria_fields: [name, operator, threshold, unit, range_start, range_end]
optional_fields: [entity_data]
entity_data_fields: [campaign_name, campaign_id, flow_name, channel, current_value, moving_avg_value]
events:
- group: alerts
names: [CAMPAIGN_STATS, FLOW_STATS, CAMPAIGN_EXPIRY, APNS_TOKEN_EXPIRY, FACEBOOK_TOKEN_EXPIRY]
retries:
documented: false
note: >-
The documentation does not state retry counts, timeout, or expected response codes for the alerts
webhook. Recorded as an honest gap.
related:
- name: Connector campaigns
docs: https://help.moengage.com/hc/en-us/articles/214247906-Create-a-Connector-Campaign
note: >-
A campaign channel rather than an event surface — a marketer authors an HTTP request (JSON,
form-encoded, or raw, with Basic/OAuth 2.0/header auth) that MoEngage sends to a third-party URL per
targeted user. Listed for completeness; it is user-authored outbound traffic, not a published event
catalog.
cross_links:
authentication: authentication/moengage-authentication.yml
conventions: conventions/moengage-conventions.yml
rate_limits: rate-limits/moengage-rate-limits.yml
gaps:
- No AsyncAPI, CloudEvents, or JSON Schema document is published for either payload.
- No self-serve subscription/management API for Streams destinations — enablement is a support ticket.
- No documented signature scheme on the Streams callback (only on the Alerts webhook).
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/moengage-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.