user_identifier_type / user_identifier_value pair (moe_user_id, uid, or email), rather than a path parameter.
- For PII-tokenized databases, only UID and MoEngage ID are supported.
- For PII-encrypted databases, the API also accepts the encrypted email value.
Endpoints
The Subscription Categories (V5) API consists of the following endpoints:- Get Subscription Categories (V5): Fetches the active subscription-category catalog for the workspace.
- Get Subscription Preferences (V5): Fetches a user’s per-category subscription state and global unsubscribe status.
- Update Subscription Preferences (V5): Updates a user’s per-category subscription state and/or global unsubscribe status. The update is processed asynchronously — the endpoint returns
202 Acceptedand does not confirm the update has been applied.
401 until the APISIX gateway fronts this route.FAQs
Get Subscription Categories
Do I need to pass a user identifier to this endpoint?
Do I need to pass a user identifier to this endpoint?
How fresh is the category data returned by this endpoint?
How fresh is the category data returned by this endpoint?
What happens if I don't pass the channel filter?
What happens if I don't pass the channel filter?
channel=email returns the same catalog.Get Subscription Preferences
What if the email I pass matches more than one user profile?
What if the email I pass matches more than one user profile?
EMAIL_UNSUB_BASED_ON_EMAIL sentry flag is on, MoEngage processes every user profile that has the same email address.What if no profile matches the identifier I passed?
What if no profile matches the identifier I passed?
404.Can I use moe_user_id, uid, or email interchangeably?
Can I use moe_user_id, uid, or email interchangeably?
user_identifier_type to whichever identifier you hold (moe_user_id, uid, or email) along with the matching user_identifier_value. You don’t need to look up a different identifier first.Update Subscription Preferences
Why did I get a 202 instead of the updated preferences?
Why did I get a 202 instead of the updated preferences?
202 only confirms the request was accepted — it doesn’t confirm the change has taken effect yet. Poll Get Subscription Preferences for the same identifier and confirm the returned state matches what you sent.Is the is_globally_unsubscribed field optional?
Is the is_globally_unsubscribed field optional?
true unsubscribes the profile from every category on the channel, false explicitly clears an existing global unsubscribe.What happens to categories I don't include in the request?
What happens to categories I don't include in the request?
categories is a sparse map — only the category names present in the request are updated.What happens if I reuse an Idempotency-Key with a different request body?
What happens if I reuse an Idempotency-Key with a different request body?
409. Reusing the same key with the same body, however, returns the original response without reapplying the update.If channel is omitted, which categories does the update apply to?
If channel is omitted, which categories does the update apply to?
email, the only channel this API supports at present, so the update applies to the user’s email subscription categories.Are there reserved event_attributes names?
Are there reserved event_attributes names?