Before enabling Attentive to manage the post-fulfillment surveys, it's very important that you create a journey to send the surveys in your Attentive account.
Available Attentive Variables
Inside the Attentive email composer, click the Variable picker. You will see five categories. The variables required to build the survey email come from three of them: Triggering event, Subscriber, and Company.
Attentive variable syntax All variables in Attentive use double curly-brace syntax: {{variableName}}. Single-brace placeholders are not substituted and will appear as literal text in the sent email. |
Triggering Event (from Shopper Approved)
These variables come directly from the Shopper Approved event payload. They are unique to each survey opportunity.
Variable | Description | Example |
{{survey_url}} | The unique, customer-specific survey link. REQUIRED for the integration to work. | |
{{triggerEvent.custom['review_date']}} | The date the survey was triggered. Use this as the "order placed on" date. | 2026-05-05 22:42:24 |
{{triggerEvent.custom['display_name']}} | Display name to use in copy (typically the merchant / store name). | Paige Testing |
{{triggerEvent.custom['domain']}} | The merchant's store domain. | yourstore.myshopify.com |
{{triggerEvent.custom['order_id']}} | The customer's order ID (may be empty when not provided). | (optional) |
{{triggerEvent.custom['feedback_id']}} | Internal Shopper Approved feedback ID — useful for analytics, not for the customer. | 219421831 |
{{triggerEvent.custom['site_id']}} | The merchant's Shopper Approved site ID. | 41956 |
{{triggerEvent.custom['overall_rating']}} | Pre-captured rating, if available (1–5). | 5 |
Subscriber
Standard Attentive contact fields. Use these for greetings and personalization.
Variable | Description |
{{subscriber.firstName}} | Customer's first name — use in greeting. |
{{subscriber.lastName}} | Customer's last name. |
{{subscriber.fullName}} | Full name (firstName + lastName). |
{{subscriber.email}} | Customer email — typically not shown in body copy. |
Company
Use Company variables in the footer to satisfy CAN-SPAM / compliance requirements.
Variable | Description |
{{companyAddress}} | Merchant's physical address. Required in the footer. |
{{unsubscribeLink}} | Attentive's unsubscribe URL. Required in the footer. |
Field-by-Field Mapping
This is the most important table in the document. It shows exactly which Attentive variable to drop in for each part of the default Shopper Approved email.
Default email field | Attentive variable to use | Variable picker category |
Customer greeting ("Hi {{name}}") | {{subscriber.firstName}} | Subscriber |
Store name in body copy | {{triggerEvent.custom['display_name']}} | Triggering event |
Dynamic order date | {{triggerEvent.custom['review_date']}} | Triggering event |
Survey link (REQUIRED) | {{triggerEvent.custom['survey_url']}} | Triggering event |
Signature / sign-off store name | {{triggerEvent.custom['display_name']}} | Triggering event |
Footer address | {{companyAddress}} | Company |
Unsubscribe link | {{unsubscribeLink}} | Company / auto-injected |
Example Email Template
Below is a ready-to-use template that mirrors the default Shopper Approved email. Paste this into your Attentive email message, then use the Variable picker to insert each placeholder — do not type the variable names by hand. Attentive renders inserted variables as styled chips, which is how you know they are bound correctly.
1 .Subject Line
{{triggerEvent.custom['display_name']}} Delivery Confirmation – Response Requested
2. Email Body
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<body style="margin: 0; padding: 0; color: #656567; font-family: Arial, Helvetica, sans-serif; font-size: 16px; line-height: 1.5;">
<div class="preheader" style="display: none; font-size: 1px; color: #333333; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden;"></div>
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="width: 100%;">
<tr>
<td style="padding: 20px;">
<p style="margin: 0 0 16px;">
Hi {{triggerEvent.custom['display_name']}},
</p>
<p style="margin: 0 0 16px;">
We're following up on the order that you placed with {{triggerEvent.custom['domain']}} on {{triggerEvent.custom['review_date']}}.
</p>
<p style="margin: 0 0 16px;">
Please choose one of the options below (the below links expire in 90 days):
</p>
<p style="margin: 0 0 8px; font-weight: bold;">
✓ Yes, I received my order.
</p>
<p style="margin: 0 0 8px;">
Please confirm that you've received your order by clicking on the link below:
</p>
<p style="margin: 0 0 24px;">
<a href="{{triggerEvent.custom['survey_url']}}" style="color: #1a73e8; text-decoration: underline;">
{{triggerEvent.custom['survey_url']}}
</a>
</p>
<p style="margin: 0 0 8px; font-weight: bold;">
✗ No, I haven't received my order yet.
</p>
<p style="margin: 0 0 24px;">
If you haven't received your order yet, please wait 24–48 hours then contact {{triggerEvent.custom['domain']}}.
</p>
<p style="margin: 0 0 8px; font-weight: bold;">
✗ I canceled my order.
</p>
<p style="margin: 0 0 24px;">
If you canceled your order then you can disregard this email and there is nothing else that you need to do at this time.
</p>
<p style="margin: 0 0 24px;">
Your response above will provide {{triggerEvent.custom['domain']}} with valuable feedback regarding your order so that they can better assist you and other customers.
</p>
<p style="margin: 0 0 8px;">
Sincerely,
</p>
<p style="margin: 0;">
{{triggerEvent.custom['domain']}}
</p>
</td>
</tr>
</table>
{{unsubscribeLink}} | Manage Email Preferences — {{companyAddress}}
</body>
</html>
3 Footer (compliance)
Use Attentive's standard unsubscribe block plus your company address. Example:
{{unsubscribeLink}} | Manage Email Preferences — {{companyAddress}}
Step-by-Step Setup in Attentive
Create a new Journey using the "from scratch" option in Attentive and select the Shopper Approved survey-eligibility event as its trigger:
Add an Email message node to the journey.
Compose the subject line using the example above. Insert {{display_name}} via the Variable picker → Triggering event.
Compose the body using the example template. For every placeholder, click into the editor at that spot and use the Variable picker rather than typing the variable name. Pick from the correct category (Subscriber, Triggering event, or Company).
Bind the survey link carefully. Select the text or button you want clickable, choose "Insert link" in Attentive, and bind the link URL to {{survey_url}} — do not paste a static URL.
Add the compliance footer with the unsubscribe link and {{companyAddress}}.
Send a test. Use Attentive's preview / test-send to confirm every variable populates correctly and that the survey link opens the right customer's survey.
Activate the journey once the test passes. Enable Attentive to manage the survey in Shopper Approved so the default email can be turned off for this account.
Common Mistakes to Avoid
Do NOT hardcode the survey URL Every customer receives a unique link via {{survey_url}}. If you paste a static URL into the editor, every customer will land on the same survey and no responses will be recorded against their account. |
Do NOT trim or shorten the survey URL parameters The long query string after "?sr=" contains the encoded customer/order identifier. URL shorteners and "clean URL" tools will break the integration. Use the variable as-is. |
Do NOT use single braces Attentive requires {{double curly-brace}} syntax. Variables written as {survey_url} or {display_name} will appear as literal text in the sent email instead of being substituted. |
Quick Reference Card
Print or pin this for the team building the journey.
Need | Use |
Customer first name | {{subscriber.firstName}} |
Order / review date | {{triggerEvent.custom['review_date']}} |
Store name | {{triggerEvent.custom['display_name']}} |
Survey link (must be dynamic) | {{triggerEvent.custom['survey_url']}} |
Footer address | {{companyAddress}} |
Footer unsubscribe | {{unsubscribeLink}} |
Text Message
You will want to keep the text brief. The text content can be whatever you want ("Please rate your recent purchase", etc). Remember to include the {{triggerEvent.custom['survey_url']}} variable, entered via the Variable picker as described above.



