Skip to main content

Overview

The Personalization Preview feature enables you to tailor content effectively, ensuring it meets the needs of your target audience. It lets you visualize how your personalized content will appear to end users. Previewing helps identify errors in Jinja code, provides precise character-level error notifications, helps fix the issues, and enhances the outcomes.

Channels That Support Personalized Preview

Personalized preview allows you to preview the personalized messages of campaigns for one of your users.
ChannelSupports Personalization?
PushYes
EmailYes
SMSYes
RCSYes
MMSYes
In-app MessagingNo
On-site MessagingNo
CardsNo
ConnectorNo
WhatsAppYes
Facebook AudienceNA
Google Ads AudienceNA

Types of Personalization Supported for Personalized Preview

Personalized preview is supported for all types of personalization, such as user attributes, event attributes, Recommendations, and content APIs.
Personalization TypeSupported?
User attributeYes
Event attributeYes
Product setsYes
Content APIYes
Content blockYes
Auxiliary dataYes
Campaign attributeYes
Business event attributeYes
CouponYes

Preview Personalized Campaign Content

This section describes how to preview personalized content in campaigns.

Push, SMS, and WhatsApp

  1. Navigate to step 2 of your campaign creation process. CreatePushCampaign.png
  2. Under Preview type, click Personalized. MoEngage will randomly select a user and render a personalized preview for that user.
  3. Use the edit icon to change the default user. Screenshot_2021-08-31_at_12.03.43_PM.png
  4. Use the Select user by and User identifier value lists to select the user you want to use for preview.
    Use For Preview
  5. Click Fetch user data. MoEngage will load all the attributes used in the campaign. The fallbacks, where applicable, are displayed next to the attributes.
    • User and event attributes: These values are directly taken from the user data. You can change the attribute values and switch between fallback and actual values.
      After selecting all the values, click Refresh/Update preview to render the preview with the selected values.
      image (3).png
      To enable Update Preview for your account, please contact your MoEngage Customer Success Manager (CSM) or the Support team.
    • Product sets: These values are directly taken from the product data. However, they are shown as JSON. Change the JSON object based on your requirement and click Refresh/Update preview.
    • Content APIs: MoEngage fetches these values using the configured APIs. You can change values in the JSON object for previews here. PersonalizedPreview.png If the endpoint is not reachable, an empty response is displayed. This will let you create your temporary data for preview purposes.
  6. After selecting the user and previewing them, you can close the slide-out and continue with the campaign changes. The selected user details are stored for your future previews.

Email

  1. Navigate to step 2 of email campaign creation. You have the following options to create content for your email campaigns:
  2. Similar to Push and SMS, you can select a user and preview your email message for the selected user. personalizationupdatedpic.png
Note that you can pass personalized data for inbox previews. To do this, turn the Use personalized preview data toggle on while running inbox previews. Click here to learn more about the inbox previews. InboxPreview_Personalization.png

Edit Personalized Preview Output

You can modify the personalized preview output to better align the content with your campaign goals and audience preferences, ensuring the preview accurately reflects your marketing intent. To edit the personalized preview output, perform the following steps:
  1. On the Personalized preview page, click the text box next to the personalization inputs and enter the data. You can also edit product sets by expanding the product sets list and clicking the edit icon. After editing the output, click Refresh/Update previewto update it.
    To enable Update Preview for your account, please contact your MoEngage Customer Success Manager (CSM) or the Support team.
    edittttprevieww.gif
  2. Turn on the Use sample data from the personalized preview for the test toggle to test your campaigns with the updated personalized preview output to evaluate their performance and effectiveness before launch. editttt3.gif

Error Detection

This is an Early Access feature. To enable it for your account, please contact your MoEngage Customer Success Manager (CSM) or the Support team.
If there are issues with your personalization, the preview pane will display an error breakdown.
  • If your message has multiple issues, such as a broken user attribute and event attributes, they are all displayed simultaneously.
  • If your message has issues arising from product set/content API/content blocks/AUX data, the first error category encountered is shown on the UI.
  • Each error includes an error category (to identify the source) and a description (to explain the resolution).

Error Categories and Descriptions

The previewer classifies errors into major groups. The table below details how specific categories are reported, with example error messages you might encounter:
Error GroupCovered CategoryDescription and Example
Individual Categories
Attributes or resources specific to a defined feature.
User AttributesError Label: “User attribute” Example: LastSeen is missing
Event AttributesError Label: “Event” or “Event attribute” Example 1: No event found for event name : MOE\_WHATSAPP\_DELIVERED in the last 15 days Example 2: admin.admininvalid is missing
Business EventsError Label: “Business event attribute” Example: testInavlid is missing
Campaign AttributesError Label: “Campaign attribute” Example: cn is missing
Content BlocksError Label: “Content Block” Example: Content Blocks ['whaapp\_cb\_1'] not found
Content APIError Label: “Content API” Example: Content API with name 'KOBA\_ContePI\_Dynamic' not found in the database
Product SetsError Label: “Product Set” Example: Product Set PP\_Enhcement not found
Unknown CategoryCoupon DataError Label: “Unknown attribute” Example: Couponded\_listjn is missing
UncategorisedAux Data and Conditional LogicTriggered by Aux Data or attributes used in logic (e.g., {% if %}) without curly braces. Error Label: “Uncategorized” Example: No matching value/attribute found for the user
Jinja Syntax ErrorsTemplate SyntaxError Label: “Jinja syntax error” Example: Error in parsing jinja template format. Error expected token ':', got '}'
Data Type MismatchData ValidationError Label: “Data Type Mismatch” Example: Field First Name expected string object, but got integer value
SMS/Push PreviewEmail Preview
SMSPREVIEW.pngEMAILERRORPREVIEW.png

Custom Jinja Error Messages

The MOE\_NOT\_SEND tag allows you to define custom validation logic within your templates. This prevents messages from being sent if specific business conditions or data requirements are not met. These custom errors appear in the Preview Pane during testing and in the Analytics Error Breakdown post-launch.

Example 1: Single Attribute Validation

This example validates a specific event property. If the attribute is missing, MoEngage blocks the preview and displays the defined error message.
{% if not EventAttribute['invalidEventAttribute'] %} {% MOE\_NOT\_SEND("invalidEventAttribute is missing") %} {% endif %}
Preview Result: The Preview Pane will display a blocking error: “There are errors that are preventing the preview to load.” In the User attribute section, the specific error is listed: 1. First Seen not found for the u...: Custom error message provided by client.

2026-02-05_10-53-13.png

Example 2: Aggregated Validation (Multiple Errors)

To validate multiple attributes simultaneously, use independent if statements rather than elif chains. This ensures the Preview Pane aggregates all validation failures into a single list, allowing you to debug multiple missing data points at once.
{% if not EventAttribute['Core\_Observability.invalidAttribute'] %} {% MOE\_NOT\_SEND("Core\_Observability.invalidAttribute is missing") %} {% endif %}
{% if not UserAttribute['invalidAttribute'] %} {% MOE\_NOT\_SEND("invalidAttribute is missing") %} {% endif %}
{% if not UserAttribute['invalidAttribute2'] %} {% MOE\_NOT\_SEND("invalidAttribute2 is missing") %} {% endif %}
Preview Result: If a user is missing multiple attributes, the Preview Pane organizes the errors by category. For example, in this scenario:
  • Event attribute
      1. Core_Observability.invalidAttribute is missing
  • User attribute
      1. invalidAttribute is missing
      1. invalidAttribute2 is missing
multipleerror.png

Validation Scenarios

Scenario 1: All Data Present
  • Input: The selected user has values for Core\_Observability, invalidAttribute, and invalidAttribute2.
  • Result: The message is rendered successfully. The error pane remains empty.
Scenario 2: Partial Data Missing
  • Input: The selected user is missing invalidAttribute2, but other attributes are present.
  • Result: The preview is blocked.
  • Error Output: The pane displays a single error under the User attribute category: 1. invalidAttribute2 is missing.

Finalize the Preview

  1. Review the errors in the right-side pane.
  2. Edit your Jinja code or modify the sample attribute values.
  3. Click Refresh/Update Preview to see the corrected content.
  4. Turn on the Use sample data from the personalized preview for the test toggle to send a test to your device using the debugged data.

FAQs

No, any modifications made to attributes or data in the Personalized Preview are temporary and used solely for rendering the preview. They do not overwrite or save to the actual user’s profile in MoEngage.
The Update Preview button is visible only when enabled by your Customer Success Manager (CSM). If you are on the legacy interface, you will see the Refresh action.
If the endpoint is unreachable, an empty response is displayed. You can manually enter temporary JSON data in the preview window to test your campaign.
Yes, you can use the MOE_NOT_SEND tag to define custom validation logic. This prevents the message from sending if specific conditions aren’t met and displays your custom error message in the preview pane.
The preview does not update in real-time while you type. After fixing multiple errors in your template, you must click Update Preview (or Refresh) to re-run the validation. This ensures all fixes are verified at once before clearing the error list.