--- title: "Set up MoEngage messages for Jacquard" slug: "set-up-moengage-messages-for-jacquard" updated: 2026-10-20T09:53:18Z published: 2026-10-20T09:53:18Z canonical: "support.jacquard.com/set-up-moengage-messages-for-jacquard" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.jacquard.com/llms.txt > Use this file to discover all available pages before exploring further. # Set up MoEngage messages for Jacquard For MoEngage marketers. Call the Jacquard Content API in each email field, add fallbacks, then throttle and schedule the send. **Placeholders:** example values (for example names in code) and values in angle brackets are account-specific. Your Jacquard contact provides them. **Existing customers:** don’t change existing campaigns. Use this guide for new touchpoints only. ## Message setup For the team that builds MoEngage campaigns and flows. ### 1. Jacquard | Before you start **1.1 Prerequisites** - Technical setup complete, including the Content API. - Touchpoint created and content approved in Jacquard. **1.2 Get the details** From the touchpoint’s **Connect** tab: touchpoint ID and field keys, for example `subject_line`, `preheader`. ### 2. MoEngage | Emails | Part | Reference | | --- | --- | | Subject line | `jq.content.fragments.subject_line` | | Preheader | `jq.content.fragments.preheader` | | Other parts (headline, CTA, body) | `jq.content.fragments.field_key`, key from the Connect tab | **2.1 Subject line** Paste into the subject line. Replace the touchpoint ID and control copy. ```plaintext {% set jq = ContentApi.jacquardContentAPI({({"params":{"touchpoint_id":"TOUCHPOINT_ID","recipient_id":"{{UserAttribute['ID']}}","delivery_id":"{{CampaignAttribute['_id']}}"},"static_params":{},"dynamic_params":{},"request_body":{}})}) %}{{jq.content.fragments.subject_line|default("YOUR CONTROL COPY")}} ``` **2.2 Preheader** Paste into the preheader: ```plaintext {% set jq = ContentApi.jacquardContentAPI({({"params":{"touchpoint_id":"TOUCHPOINT_ID","recipient_id":"{{UserAttribute['ID']}}","delivery_id":"{{CampaignAttribute['_id']}}"},"static_params":{},"dynamic_params":{},"request_body":{}})}) %}{{jq.content.fragments.preheader|default("YOUR CONTROL COPY")}} ``` **2.3 Body** Paste the Content API call once at the top of the email HTML: ```plaintext {% set jq = ContentApi.jacquardContentAPI({({"params":{"touchpoint_id":"TOUCHPOINT_ID","recipient_id":"{{UserAttribute['ID']}}","delivery_id":"{{CampaignAttribute['_id']}}"},"static_params":{},"dynamic_params":{},"request_body":{}})}) %} ``` Then use fields anywhere in the body, for example: ```plaintext {{jq.content.fragments.headline|default("YOUR CONTROL COPY")}} ``` **2.4 Fallback** - The `default` copy is used if Jacquard returns no content for that part. - Use your control copy from Jacquard. **2.5 Personalisation** - Jacquard copy can contain merge tags, for example `{{first_name}}`. - Check they render in a test send. **2.6 Save snippets** Snippets only change by touchpoint ID, field key and control copy. Save them in your code library. **Engagement data:** Opens, clicks and other engagement data come from the S3 export in the technical setup guide. ### 3. MoEngage | Push messages Skip if Jacquard only optimises email. **3.1 Add the snippet** Use the same call and field pattern in each Jacquard-controlled push field. **3.2 Test** Send to a test device. Check nothing is truncated. ### 4. MoEngage and Jacquard | Schedule and go live Required for broadcast Dynamic Optimisation. **4.1 Set a request limit** - In **Delivery Controls**, set **Request Limit**. - Formula: audience ÷ hours ÷ 60 = requests per minute. - Example: 1,000,000 over 6 hours = 2,778 per minute. - Maximum: 60,000 per minute. - Longer send windows give Jacquard more time to optimise. **4.2 Start time** The Jacquard optimisation start must be at least 30 minutes before the MoEngage send. **4.3 Activate in Jacquard** Approve the experiment plan and activate the touchpoint. **4.4 Publish** Schedule and publish the campaign. ## Reference ### Response and troubleshooting Example Content API response. Message copy is under `content.fragments`. ```plaintext {  "touchpoint_id": "1cd96c96-…",  "is_control_group": false,  "content": {    "channel": "email",    "fragments": {      "subject_line": "{{first_name}}, take 50% off all cycling products",      "preheader": "Bring more energy to your rides without paying full price."    }  },  "tracking": { "request_id": "33fec309-…" } } ``` #### Troubleshooting **Fallback copy is sent** Check the touchpoint ID, the field key, and that the path starts `jq.content.fragments.` Check the touchpoint is active in Jacquard. **Body field is empty** The Content API call must be in the body above the field. **Merge tag shows as text** For example `{{first_name}}`. Report to your Jacquard contact.