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.
| Channel | Supports Personalization? |
|---|---|
| Push | Yes |
| Yes | |
| SMS | Yes |
| RCS | Yes |
| MMS | Yes |
| In-app Messaging | No |
| On-site Messaging | No |
| Cards | No |
| Connector | No |
| Yes | |
| Facebook Audience | NA |
| Google Ads Audience | NA |
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 Type | Supported? |
|---|---|
| User attribute | Yes |
| Event attribute | Yes |
| Product sets | Yes |
| Content API | Yes |
| Content block | Yes |
| Auxiliary data | Yes |
| Campaign attribute | Yes |
| Business event attribute | Yes |
| Coupon | Yes |
Preview Personalized Campaign Content
This section describes how to preview personalized content in campaigns.
Push, SMS, and WhatsApp
- Navigate to step 2 of your campaign creation process.
- Under Preview type, click Personalized. MoEngage will randomly select a user and render a personalized preview for that user.
- Use the edit icon to change the default user.
- Use the Select user by and User identifier value lists to select the user you want to use for preview.
-
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.
Info
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.
-
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 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.
- Navigate to step 2 of email campaign creation. You have the following options to create content for your email campaigns:
- Create content with the Drag-and-Drop editor
-
Create content with Custom HTML Editor
Both options support a personalized preview as follows:- While creating email content with the drag-and-drop editor, you can access the personalized preview as shown below:
- While creating email content with an HTML editor, you can access the personalized preview through the View advanced preview option as shown below:
- While creating email content with the drag-and-drop editor, you can access the personalized preview as shown below:
- Similar to Push and SMS, you can select a user and preview your email message for the selected user.
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.
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:
- 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 preview to update it.
Info
To enable Update Preview for your account, please contact your MoEngage Customer Success Manager (CSM) or the Support team.
-
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.
Error Detection
|
Early Access 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 Group | Covered Category | Description and Example |
|---|---|---|
|
Individual Categories Attributes or resources specific to a defined feature. |
User Attributes |
Error Label: "User attribute" Example: LastSeen is missing
|
| Event Attributes |
Error Label: "Event" or "Event attribute" Example 1: No event found for event name : MOE_WHATSAPP_DELIVERED in the last 15 daysExample 2: admin.admininvalid is missing
|
|
| Business Events |
Error Label: "Business event attribute" Example: testInavlid is missing
|
|
| Campaign Attributes |
Error Label: "Campaign attribute" Example: cn is missing
|
|
| Content Blocks |
Error Label: "Content Block" Example: Content Blocks ['whaapp_cb_1'] not found
|
|
| Content API |
Error Label: "Content API" Example: Content API with name 'KOBA_ContePI_Dynamic' not found in the database
|
|
| Product Sets |
Error Label: "Product Set" Example: Product Set PP_Enhcement not found
|
|
| Unknown Category | Coupon Data |
Error Label: "Unknown attribute" Example: Couponded_listjn is missing
|
| Uncategorised | Aux Data and Conditional Logic | Triggered 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 Errors | Template Syntax |
Error Label: "Jinja syntax error" Example: Error in parsing jinja template format. Error expected token ':', got '}'
|
| Data Type Mismatch | Data Validation |
Error Label: "Data Type Mismatch" Example: Field First Name expected string object, but got integer value
|
| SMS/Push Preview | Email Preview |
|---|---|
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.
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
- 2. invalidAttribute2 is missing
Validation Scenarios
Scenario 1: All Data Present
-
Input: The selected user has values for
Core_Observability,invalidAttribute, andinvalidAttribute2. - 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
- Review the errors in the right-side pane.
- Edit your Jinja code or modify the sample attribute values.
- Click Refresh/Update Preview to see the corrected content.
- 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.