---
name: Moengage
description: Use when building customer engagement campaigns, integrating SDKs, managing user data and events, creating segments, sending messages across channels (push, email, SMS, WhatsApp, in-app), analyzing campaign performance, or configuring workflows and automations.
metadata:
    mintlify-proj: moengage
    version: "1.0"
---

# MoEngage Skill Reference

## Product Summary

MoEngage is an insights-led customer engagement platform that helps teams understand audiences, engage them across channels, and build lasting relationships from a single dashboard. Agents use MoEngage to create campaigns, manage user data, build segments, send messages via push/email/SMS/WhatsApp/in-app, analyze performance, and automate customer journeys. Key files: API keys stored in Settings > Account > APIs; SDKs available for Android, iOS, Web, Flutter, React Native, and others; campaigns created via the Campaigns section; data tracked through SDKs or APIs. Primary docs: https://moengage.com/docs

## When to Use

Reach for this skill when:
- **Building campaigns**: Creating push, email, SMS, WhatsApp, in-app, or on-site messaging campaigns
- **Integrating SDKs**: Setting up MoEngage SDKs for Android, iOS, Web, Flutter, React Native, or other platforms
- **Managing user data**: Tracking user attributes, events, and profiles via SDK or API
- **Segmentation**: Building audience segments based on behavior, attributes, or affinity
- **Analytics**: Analyzing campaign performance, user behavior, funnels, retention, or custom dashboards
- **Workflows**: Creating cross-channel flows with triggers, conditions, branching, and A/B splits
- **API integration**: Programmatically managing campaigns, users, segments, or templates
- **Troubleshooting**: Debugging SDK integration, campaign delivery, personalization, or data tracking issues

## Quick Reference

### Key API Endpoints

| Task | Method | Endpoint | Notes |
|------|--------|----------|-------|
| Create/update user | POST | `/customer/{workspace_id}` | Requires Data API key |
| Track event | POST | `/event/{workspace_id}` | Requires Data API key |
| Create campaign | POST | `/campaigns` | Requires Campaign API key; v5 supports Email/Push only |
| Send push | POST | `/transaction/sendpush` | Requires Push API key |
| Create segment | POST | `/v3/custom-segments` | Requires Campaign API key |
| Fetch user | POST | `/customers/export` | Requires Data API key |
| Merge users | POST | `/customer/merge` | Requires Data API key |

### Data Centers & Base URLs

| Region | Dashboard URL | API Base URL |
|--------|---------------|--------------|
| US | `https://dashboard-01.moengage.com` | `https://api-01.moengage.com` |
| EU | `https://dashboard-02.moengage.com` | `https://api-02.moengage.com` |
| India | `https://dashboard-03.moengage.com` | `https://api-03.moengage.com` |
| Indonesia | `https://dashboard-06.moengage.com` | `https://api-06.moengage.com` |

### Authentication

All API requests require Basic Authentication:
```
Authorization: Basic {base64(workspace_id:api_key)}
```

Get credentials from Settings > Account > APIs. Different APIs require different keys (Data, Push, Campaign, Personalize, Inform).

### Messaging Channels

| Channel | Best For | Key Features |
|---------|----------|--------------|
| Mobile Push | Immediate action, re-engagement | Android/iOS, rich templates, deep links |
| Web Push | Desktop/mobile web visitors | Browser notifications, no email required |
| Email | Detailed content, nurturing | HTML editor, templates, personalization |
| SMS/MMS/RCS | High-priority alerts | Text + rich media, high open rates |
| WhatsApp | Personal, trusted channel | Pre-approved templates, rich media |
| In-App | Contextual, non-intrusive | Triggers on app events, drag-drop editor |
| On-Site | Lead capture, real-time personalization | Pop-ups, surveys, exit-intent |
| Cards | User-initiated engagement | Feed-based, evergreen content |

### Campaign Delivery Types

| Type | Trigger | Use Case |
|------|---------|----------|
| One-Time | Manual or scheduled | Flash sales, announcements, newsletters |
| Periodic | Recurring schedule | Weekly emails, monthly re-engagement |
| Event-Triggered | User action (app/web event) | Cart abandonment, welcome series, post-purchase |
| Business Event-Triggered | Backend system event | Price drops, payment failures, fraud alerts |
| Location-Triggered | Geofence entry/exit | Store promotions, location-based offers |
| Device-Triggered | Local device activity | Offline messaging, app open reminders |

### SDK Integration Checklist

- [ ] Install SDK (Android/iOS/Web/Flutter/React Native)
- [ ] Initialize SDK with workspace ID and data center
- [ ] Track user attributes (name, email, mobile, custom attributes)
- [ ] Track events and event attributes
- [ ] Configure push (FCM for Android, APNS for iOS)
- [ ] Enable deep linking and screen names
- [ ] Set up notification center (optional)
- [ ] Configure email connector (SMTP settings)
- [ ] Validate integration (use MoEngage Assist Chrome extension for Web)
- [ ] Test on physical devices before release

## Decision Guidance

### When to Use X vs Y

| Scenario | Choose | Why |
|----------|--------|-----|
| Need immediate user action | Push/SMS | High visibility, immediate delivery |
| Detailed content, long-form | Email | Rich formatting, better for narratives |
| Personal, trusted channel | WhatsApp | High engagement, widely adopted |
| Contextual, in-app guidance | In-App Message | Non-intrusive, triggered on user action |
| Capture leads on website | On-Site Message | Real-time, exit-intent, form capture |
| Evergreen, user-initiated | Cards | Feed-based, no interruption |
| Retarget on social/search | Facebook/Google Ads Audience | Leverage existing ad spend, broad reach |
| Custom third-party integration | Connectors | Forward data to CRM, warehouse, or custom tools |

### API v5 vs v1 Campaigns

| Feature | v5 | v1 |
|---------|----|----|
| Supported channels | Email, Push | Email, Push, SMS, WhatsApp, Facebook, Google Ads, Connectors |
| Create/Update | Yes | Yes |
| SMS campaigns | No (use dashboard) | Yes |
| Validation | Yes | No |
| Recommended | New integrations | Legacy, SMS campaigns |

### Segment Types

| Type | Use Case | Refresh |
|------|----------|---------|
| Rule-Based | Behavior, attributes, affinity | Real-time |
| File-Based | Bulk import, external lists | Manual upload |
| Warehouse | Data warehouse queries | Scheduled |
| RFM | Recency, frequency, monetary | Periodic |
| Affinity | User similarity, lookalike | Periodic |

## Workflow

### Create a Campaign (General Steps)

1. **Define audience**: Go to Campaigns > Create Campaign > Select channel (Push/Email/SMS/etc.)
2. **Target users**: Choose segment or create inline filter; check reachability
3. **Create content**: Use drag-drop editor, templates, or custom HTML; add personalization (Jinja syntax)
4. **Schedule delivery**: Choose delivery type (One-Time, Periodic, Event-Triggered, etc.); set timing
5. **Set goals**: Define conversion goals and tracking parameters
6. **Review**: Preview on test device; check personalization with test user
7. **Publish**: Submit for approval (if enabled) or publish directly
8. **Monitor**: Track analytics, impressions, clicks, conversions; debug failures

### Integrate SDK (Android Example)

1. **Install**: Add MoEngage dependency to `build.gradle`
2. **Initialize**: Call `MoEngage.initialize()` in Application class with workspace ID and data center
3. **Track user**: Call `MoEngage.setUserAttribute()` for name, email, mobile, custom attributes
4. **Track events**: Call `MoEngage.trackEvent()` for user actions
5. **Configure push**: Set up FCM, add Firebase receiver to manifest, handle push payload
6. **Test**: Use MoEngage SDK logger to verify data is being sent
7. **Release**: Run release checklist before submitting to Play Store

### Track User Data via API

1. **Get credentials**: Navigate to Settings > Account > APIs; copy Workspace ID and Data API key
2. **Encode auth**: Base64 encode `workspace_id:api_key`
3. **Create/update user**: POST to `/customer/{workspace_id}` with user attributes
4. **Track event**: POST to `/event/{workspace_id}` with event name and attributes
5. **Verify**: Check user profile in dashboard or use `/customers/export` to fetch user
6. **Handle errors**: Check HTTP status codes; common issues: invalid credentials, missing attributes, malformed JSON

### Create a Segment

1. **Choose type**: Rule-Based (real-time), File-Based (bulk import), Warehouse (query), RFM, or Affinity
2. **Define filters**: Select attributes, events, or behaviors; use aggregation (count, sum, avg)
3. **Set conditions**: Combine with AND/OR logic; use date ranges, value suggestions
4. **Preview**: Check estimated user count and reachability (push, email, SMS)
5. **Save**: Name segment, add tags, enable real-time evaluation if needed
6. **Use**: Apply to campaigns, flows, or export for external use

## Common Gotchas

- **Prefix restriction**: Never use `moe_` prefix for custom events, attributes, or user attributes—it's reserved and causes blacklisting
- **Data center mismatch**: API base URL must match dashboard data center (e.g., DC-01 uses `api-01.moengage.com`); mismatches cause 401 errors
- **Personalization failures**: Missing user attributes cause personalization to fail; always provide fallback content or ensure all users have required attributes
- **Push token drops**: Tokens expire or refresh; ensure SDK passes new tokens on app update, fresh install, and FCM refresh
- **SMS campaign API**: v5 API does not support SMS creation; use dashboard or v1 API for SMS campaigns
- **Control group re-evaluation**: Control group membership is not sticky—users may be in/out of control group per trigger or campaign instance
- **Rate limits**: APIs enforce per-workspace rate limits; responses include `x-ratelimit-*` headers; 429 status means limit exceeded
- **File encoding**: File imports must be UTF-8 encoded; non-UTF-8 files fail silently
- **Event naming**: Use consistent, descriptive event names; avoid special characters and spaces
- **Segment nesting**: Avoid deeply nested segments; they can cause performance issues
- **Delivery controls**: Frequency capping, do-not-disturb, and minimum delay settings can silently remove users from campaigns
- **Email authentication**: SMTP connector must be configured before sending email campaigns; missing connector causes campaign failure
- **Deep linking**: Deep links must be valid and app-specific; test on physical devices before campaign launch

## Verification Checklist

Before submitting work:

- [ ] **API credentials**: Verified workspace ID and API key are correct for the data center
- [ ] **Authentication**: Base64 encoding is correct; Authorization header is properly formatted
- [ ] **Data validation**: User attributes, events, and segments are properly named (no `moe_` prefix)
- [ ] **Personalization**: All required user attributes are present; fallback content is defined
- [ ] **Segment**: Estimated user count is reasonable; reachability is checked for target channel
- [ ] **Campaign content**: Tested on physical device; preview shows correct personalization
- [ ] **Delivery settings**: Timing, frequency capping, and do-not-disturb are configured as intended
- [ ] **SDK integration**: Logs show data is being sent; test user receives messages
- [ ] **Error handling**: HTTP status codes are checked; error messages are logged
- [ ] **Documentation**: API requests include required headers (Authorization, Content-Type, MOE-APPKEY if needed)

## Resources

- **Comprehensive navigation**: https://moengage.com/docs/llms.txt
- **API Reference**: https://moengage.com/docs/api/introduction
- **User Guide**: https://moengage.com/docs/user-guide/introduction
- **SDK Integration**: https://moengage.com/docs/developer-guide/introduction
- **Use Cases**: https://moengage.com/docs/use-cases/introduction

---

> For additional documentation and navigation, see: https://moengage.com/docs/llms.txt