canonical: https://jentic.com/apis/moengage.com/moengage

# MoEngage API

MoEngage is a customer engagement platform that powers cross-channel campaigns across push, email, SMS, in-app, and web. The management API exposes 6 endpoints for tracking customer attributes, ingesting events, deleting users for GDPR compliance, listing campaigns and segments, and reading per-campaign delivery stats. Authentication uses HTTP Basic with the MoEngage App ID as username and the API key as password.

## For AI agents

Track customer attributes, ingest events, fetch campaign stats and segments, and process GDPR deletions on the MoEngage engagement platform.

## Scope

Does not send raw push notifications, build campaigns from scratch, or expose template-level editing - use for customer attribute sync, event ingestion, GDPR deletion, and read-only campaign and segment listing only.

## Capabilities

- Update customer attributes such as plan, lifecycle stage, or last_active_at
- Ingest a user event with custom attributes for campaign triggering
- Process a GDPR deletion request for a specific MoEngage customer
- List all running and scheduled campaigns in a MoEngage workspace
- Pull delivery and engagement stats for a specific campaign
- List the segments configured for a workspace

## Use cases

### Customer Attribute Sync

Sync user profile changes from a CRM or product backend into MoEngage so segmentation and lifecycle campaigns reflect current state. POST /customer accepts a user identifier and an attributes object - plan, country, last_login_at, lifecycle_stage - and MoEngage merges them into the existing profile. Most teams ship the sync as a webhook handler from the CRM in under a week.

Example prompt: When a CRM contact's plan field changes, post the new value to MoEngage POST /customer with the user_id and updated attribute

### Campaign Performance Reporting

Pull delivery, open, and click stats for active MoEngage campaigns into a marketing dashboard or weekly report. GET /campaigns lists every campaign with its metadata, GET `/campaigns/{campaignId}/stats` returns sent, delivered, opened, and clicked counts. Teams use this to compare cohorts across channels without exporting from the MoEngage UI.

Example prompt: List all campaigns sent in the last 7 days and pull delivery and open rates for each via GET `/campaigns/{campaignId}/stats`

### GDPR Deletion Pipeline

Honour right-to-be-forgotten requests by removing the user record from MoEngage when a customer asks for deletion. POST /delete_user with the user identifier triggers MoEngage's deletion workflow, which removes profile, events, and segment memberships. The endpoint is intended to be wired into the company-wide deletion pipeline alongside CRM and warehouse deletes.

Example prompt: For each entry in the deletion-requests queue, call POST /delete_user with the user_id and log the response status

### Agent-Driven Campaign Audit via Jentic

Use a Jentic-connected agent to audit MoEngage campaigns weekly - checking which are still running, comparing delivery rates, and flagging segments with stale rules. The agent searches Jentic for the campaigns and segments operations, loads the schemas, and reads the data with workspace credentials drawn from the vault.

Example prompt: List campaigns and their stats, then return the names of campaigns whose open rate dropped more than 30% week-over-week

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/customer` | Update customer attributes |
| POST | `/event` | Ingest a user event |
| POST | `/delete_user` | Delete a user for GDPR compliance |
| GET | `/campaigns` | List all campaigns |
| GET | `/campaigns/{campaignId}/stats` | Get delivery and engagement stats for a campaign |
| GET | `/segments` | List segments configured for the workspace |

## Key resources

- **Customer** — Update customer attributes and profile data
- **Event** — Ingest user events with custom attributes for campaign triggering
- **Campaigns** — List campaigns and pull per-campaign delivery and engagement stats
- **Segments** — List the segments configured for a workspace
- **Users** — Delete a user record for GDPR compliance

## Why Jentic

- **Setup:** Wiring the MoEngage API by hand means combining your app id and key into an HTTP Basic header, picking the right regional host such as api-01, and coding the customer, event, and campaign calls yourself. Through Jentic you install once, import the MoEngage API from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** MoEngage sends the customer and event target in the request body, so you limit the agent to the operations it needs, such as syncing a customer attribute or listing campaigns. You choose the operations it may call, so a destructive one like GDPR user deletion is not included unless you add it.
- **Credential handling:** Your MoEngage app id and API key are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list MoEngage campaigns' or 'sync a customer attribute', and Jentic returns the matching MoEngage operation with its schema so the agent calls the right endpoint without browsing docs.

## Related APIs

- **MoEngage Data API** — The MoEngage Data API is the dedicated high-volume event ingestion endpoint.
- **Braze API** — Braze offers a broadly equivalent customer engagement platform with cross-channel campaigns.
- **Klaviyo API** — Klaviyo focuses on e-commerce email and SMS marketing automation.

## FAQ

### What authentication does the MoEngage API use?

MoEngage uses HTTP Basic auth with the workspace App ID as the username and the workspace API key as the password against base URL https://api-01.moengage.com/v1. Through Jentic, both values are stored encrypted in your Jentic One instance and combined into the Authorization header at execution time so the agent never sees them.

### Can I get delivery stats for a specific campaign?

Yes. GET `/campaigns/{campaignId}/stats` returns delivery, open, click, and other engagement metrics for that campaign. Use GET /campaigns first to enumerate available campaign IDs, then iterate through the IDs to populate a reporting dashboard.

### What are the rate limits for the MoEngage API?

The OpenAPI spec does not declare a numeric rate limit. MoEngage applies per-workspace ceilings at the platform level - agents should batch /customer and /event calls, respect 429 responses with exponential backoff, and prefer webhooks where MoEngage offers them rather than tight polling on /campaigns.

### How do I list campaigns through Jentic?

Run pip install jentic, then search Jentic for 'list campaigns in MoEngage'. Jentic returns the GET /campaigns operation with its query schema. Load the schema, pass any filters, and execute. The Basic auth header is resolved from the vault.

### How do I delete a user from MoEngage for GDPR?

POST /delete_user with the customer identifier in the request body triggers MoEngage's deletion workflow, which removes the profile, associated events, and segment memberships. Wire it into the company-wide deletion pipeline alongside CRM and warehouse deletions to honour right-to-be-forgotten requests end-to-end.

### Should I use this API or the MoEngage Data API for sending events?

Use this management API (POST /event) for low-volume events that ride alongside customer attribute and campaign reads. Use the dedicated MoEngage Data API (POST /events under api_slug: data-api) for high-volume server-side ingestion - it is purpose-built for streaming events and uses dedicated MOE-APPID and MOE-API-KEY headers.

### Can I limit what my agent is allowed to do with the MoEngage API?

Yes. Jentic One is self-hosted by you, so your own rules decide which MoEngage operations and credentials the agent may use. You can grant only the operations it needs, such as POST /customer to sync an attribute or GET /campaigns to list campaigns, while excluding a destructive one like POST /delete_user for GDPR deletion unless you deliberately add it. Because MoEngage passes the customer and event target in the request body, you keep the agent scoped to reads and low-risk writes rather than account-wide changes.
