Skip to main content

Recharge Order Placed Successfully Personalization Guide

The Recharge Order Placed Successfully event triggers a Listrak Custom Event when a customer completes the order process. In the journey, you can message a customer to confirm their order date, display their billing details, and display the items included in the order .

This guide will outline the personalization options to customize the journey and messages triggered by the Recharge integration.


Personalizing the Journey with Custom Event Properties

The Custom Event called Recharge Order Placed Successfully [[Your Store Name]] is automatically created as part of the integration process. Recharge passes the following payload to Listrak customized with the specific product information for the order.

{
"eventCategory": "order",
"eventType": "OrderPlacedSuccessfully",
"eventTimestamp": "2026-04-30T11:05:00.0000000+00:00",
"customer": {
"email": "customer@example.com",
"firstName": "Jane",
"lastName": "Smith",
"externalCustomerId": "24662915678374",
"billingCity": "Philadelphia",
"billingProvince": "Pennsylvania"
},
"subscription": {
"id": "784594001",
"status": "active",
"createdAt": "2026-03-01T10:00:00+00:00",
"updatedAt": "2026-04-30T11:05:00+00:00",
"cancelledAt": null,
"cancellationReason": null,
"orderIntervalUnit": "month",
"orderIntervalFrequency": 1,
"nextChargeScheduledAt": "2026-06-30",
"isPrepaid": false
},
"product": {
"title": "Classic Cotton T-Shirt",
"price": "18.74",
"quantity": 1,
"productId": "15268877402278",
"variantId": "56305470505126",
"sku": "T100",
"imageUrl": "https://cdn.example.com/tshirt.jpg",
"linkUrl": "https://store.example.com/products/classic-cotton-t-shirt",
"productHandle": "classic-cotton-t-shirt"
},
"order": {
"id": "9988776655",
"totalPrice": "26.74",
"totalDiscounts": "0.00",
"lineItemsCount": 1,
"chargeId": "1369590001",
"lineItems": [
{
"title": "Classic Cotton T-Shirt",
"price": "18.74",
"quantity": 1,
"productId": "15268877402278",
"variantId": "56305470505126",
"sku": "T100",
"imageUrl": "https://cdn.example.com/tshirt.jpg",
"linkUrl": "https://store.example.com/products/classic-cotton-t-shirt",
"productHandle": "classic-cotton-t-shirt"
}
]
}
}

The JSON is saved to a Custom Event field and used to personalize the message. The table below outlines all fields created in Custom Event. Fields other than the JSON can be used as criteria in a Custom Event Decision Split, allowing customers to receive different messages or different logic based on the values of these fields.

Property Name

Data Type

CustomJson

String

product_title

String

customer_billing_city

String

customer_billing_province

String

Personalizing the Message with Recharge Data

You can customize any message(s) in the journey based on the data passed in the JSON. The table below outlines the fields you can include in a message to display the data about a customer's order. The field values will match what is included in the payload mentioned in the previous section.

Object

Fields Used

customer

firstName, lastName, email, billingCity, billingProvince

subscription

nextChargeScheduledAt, isPrepaid

order

id, chargeId, totalPrice, totalDiscounts, lineItemsCount, lineItems[]

order.lineItems[]

title, sku, quantity, price, imageUrl

You have the option to create a fully coded HTML email from scratch or to edit the template that includes the basic design elements listed below.

If you code a message yourself, you can add any or all of fields from the table above. To display the personalized data, you will use the format {{object.fieldname}}. For example, to display the customer's first name uses the following tag. {{customer.firstName}}.

💡 You will need to use the ForAll Handlebars function to iterate through all of the order line item data.

{{ForAll order.lineItems}}
{{title}}, {{sku}}, {{quantity}}, {{price}}, {{imageUrl}}
{{/ForAll}}

Example Template

You can also use the example template as a starting point.

[[HB BlockType="Custom" Source="Custom.customJson"]]
<div class="email-wrapper">
<div class="email-container">
<div class="email-header"><div class="brand">Your<span>Store</span></div></div>
<div class="email-hero">
{{#if subscription.isPrepaid}}
<h1>Your prepaid order has been placed! ✅</h1>
<p>{{customer.firstName}}, your prepaid subscription order is confirmed and on its way.</p>
{{else}}
<h1>Your order is confirmed! ✅</h1>
<p>{{customer.firstName}}, your subscription order has been placed successfully.</p>
{{/if}}
</div>
<div class="email-body">
<p class="greeting">Hi <strong>{{customer.firstName}} {{customer.lastName}}</strong>,<br/><br/>Your subscription order has been successfully processed. You'll receive a shipping confirmation once it's on its way.</p>
<p class="section-label">Order Items</p>
<table style="width:100%;border-collapse:collapse;margin:0 0 28px;">
<thead>
<tr>
<th style="padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:2px solid #e2e8f0;text-align:left;"></th>
<th style="padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:2px solid #e2e8f0;text-align:left;">Item</th>
<th style="padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:2px solid #e2e8f0;text-align:left;">SKU</th>
<th style="padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:2px solid #e2e8f0;text-align:left;">Qty</th>
<th style="padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:2px solid #e2e8f0;text-align:left;">Price</th>
</tr>
</thead>
<tbody>
{{ForAll order.lineItems}}
<tr>
<td style="padding:12px 14px;border-bottom:1px solid #f1f5f9;"><img src="{{imageUrl}}" style="width:48px;height:48px;object-fit:cover;border-radius:6px;" /></td>
<td style="padding:12px 14px;border-bottom:1px solid #f1f5f9;">{{title}}</td>
<td style="padding:12px 14px;border-bottom:1px solid #f1f5f9;">{{sku}}</td>
<td style="padding:12px 14px;border-bottom:1px solid #f1f5f9;">{{quantity}}</td>
<td style="padding:12px 14px;border-bottom:1px solid #f1f5f9;">${{price}}</td>
</tr>
{{/ForAll}}
</tbody>
</table>
<div style="background:#f8fafc;border-radius:8px;padding:16px 20px;margin:0 0 28px;display:flex;justify-content:space-between;align-items:center;">
<span style="font-size:14px;font-weight:600;color:#64748b;">Order Total</span>
<span style="font-size:20px;font-weight:700;color:#1a2b4a;">${{order.totalPrice}}</span>
</div>
<table class="detail-table">
<tr><td class="label">Order ID</td><td class="value">{{order.id}}</td></tr>
<tr><td class="label">Charge ID</td><td class="value">{{order.chargeId}}</td></tr>
<tr><td class="label">Discounts Applied</td><td class="value">${{order.totalDiscounts}}</td></tr>
<tr><td class="label">Next Charge Date</td><td class="value">{{subscription.nextChargeScheduledAt}}</td></tr>
</table>
<div class="cta-wrap"><a href="#" class="cta-btn">View Order Details</a></div>
</div>
<div class="email-footer">
<p class="footer-brand">YourStore</p>
<p>This email was sent to {{customer.email}}</p>
<p>{{customer.billingCity}}, {{customer.billingProvince}}</p>
</div>
</div>
</div>
[[/HB]]

Did this answer your question?