How It Works
Add a customFields object to each recipient in the to array. Use Handlebars syntax ({{variableName}}) in your subject, htmlBody, and textBody to reference these fields. SendPost replaces the placeholders with values from each recipient’s customFields object.
Output
gavin@hooli.com :
Subject: Hello, Gavin! Welcome to Pied Piper!
Body: Hi Gavin, Your discount code is BELSON240 . Your account status is VIP.
erlich@piedpiper.com :
Subject: Hello, Erlich! Welcome to Pied Piper!
Body: Hi Erlich, Your discount code is BACHMAN10 . Your account status is Incubator.
Advanced Personalization
Nested Fields
Access nested properties in customFields using dot notation.
Example:
Output:
Subject: Welcome John!
HTML: Hello John Doe! We see you’re located in San Francisco, CA.
Array Iteration
Iterate over arrays in customFields using the {{#each}} helper.
Example:
Output:
Subject: Alice, Your Order History
HTML:
ORD-001: Premium Plan - $99.99
ORD-002: Add-on Storage - $29.99
Nested Objects With Arrays
Combine nested objects and arrays for complex data structures.
Example:
Output:
Subject: Order ORD-12345 Confirmed - Thank You Bob!
HTML: Order confirmation with customer info, items list, shipping address, and total
Syntax Reference
Basic Syntax
Variables: {{variableName}}
Nested properties: {{object.property}} or {{object.nested.property}}
Array iteration: {{#each arrayName}}...{{/each}}
Current item: {{this}} (inside {{#each}})
Array index: {{@index}} (0-based, inside {{#each}})
Conditionals: {{#if condition}}...{{/if}} or {{#if condition}}...{{else}}...{{/if}}
Common Patterns
Iterate over array:
Iterate over array of objects:
Check if array has items:
Nested iteration:
Important Notes
unsubscribe is a reserved custom field name. You can’t use it as a custom field name.
Case sensitivity: Field names are case-sensitive. {{firstName}} and {{FirstName}} are different.
Empty arrays: Empty arrays don’t render anything in {{#each}} blocks. Use {{#if}} to check for empty arrays.
Null/undefined values: If a nested property doesn’t exist, an empty string is rendered. Use {{#if}} to check for existence.
Data structure: Ensure your customFields structure matches your template expectations. Nested objects and arrays must be valid JSON.