Writing Messages
Each scenario sends a message template — the text of the SMS, with placeholders that Pickpad fills in from the order. This page covers the available variables, formatting guidance, and the built-in helpers for conditional and formatted text.
Message Templates
Templates support variables that are filled in automatically from the order data:
| Variable | What it inserts |
|---|---|
{{name}} | Customer's first name |
{{shortNumber}} | Short order number (e.g. #42) |
{{promiseTime}} | Estimated pickup time (e.g. 2:30 PM) |
{{stationName}} | Name of the kitchen station |
{{locationName}} | Name of the location |
{{pickpadName}} | Name of the Pickpad device |
Example templates
Hi {{name}}, your order #{{shortNumber}} is ready at {{locationName}}! Come grab it 🎉
Your order #{{shortNumber}} is being prepared and will be ready at {{promiseTime}}.
Thanks for your order, {{name}}! Hope you enjoy it. Leave us a review ⭐
Formatting tips
- Keep it short. SMS messages over 160 characters may be split into two messages and billed as two.
- Always include the order number (
{{shortNumber}}) so the customer knows which order you mean. - Avoid special characters like
&,<,>— they don't add value in SMS and can confuse some carriers. - If
{{promiseTime}}is empty (the order has no estimated time), it will appear as blank. Only include it if your POS reliably sends pickup times. - Phone numbers must be in E.164 format (e.g.
+12025551234). Messages to numbers in any other format are silently skipped.
Helpers & conditionals
Templates support a small set of built-in helpers for common formatting needs.
Text case helpers
| Helper | What it does | Example |
|---|---|---|
{{upper variable}} | ALL CAPS | {{upper name}} → JOHN |
{{lower variable}} | all lowercase | {{lower name}} → john |
{{capitalize variable}} | First letter capitalised | {{capitalize name}} → John |
Hi {{capitalize name}}, your order #{{shortNumber}} is ready!
Conditional blocks
Use {{#if variable}} to include text only when a value is present:
Hi {{name}}, your order #{{shortNumber}} is ready!{{#if promiseTime}} Pickup time: {{promiseTime}}.{{/if}}
If promiseTime is empty the pickup-time sentence is omitted entirely. Without the #if, you'd get a trailing Pickup time: . in the message.
Use {{#unless variable}} for the opposite — include text only when a value is absent:
Hi {{name}}, your order is ready!{{#unless pickpadName}} Ask staff for assistance.{{/unless}}
Comparing values
Use {{#if (eq variable "value")}} to branch on a specific value:
{{#if (eq stationName "Drive-Thru")}}Please pull forward to the pickup window.{{else}}Come inside to collect your order.{{/if}}
Branching on delivery type
You can also vary the message by delivery type within a single scenario, using these flags:
| Flag | True when the order is |
|---|---|
isPickup | a Pickup order |
isDelivery | a Delivery order |
isInPlace | a Dine-in order |
Hi {{name}}, order #{{shortNumber}}!{{#if isDelivery}} It's on the way 🚗{{/if}}{{#if isPickup}} Come grab it at {{locationName}} 🎉{{/if}}
This is an alternative to Delivery Type Targeting: use targeting when you want separate scenarios per delivery type, and these flags when you want one scenario whose wording adapts to the delivery type.
Combining helpers
Helpers can wrap each other:
Hi {{upper name}}, ORDER #{{shortNumber}} IS READY!
{{#if name}}Hi {{capitalize name}}! {{/if}}Your order #{{shortNumber}} is ready.