Message Templates and Variables
Rewrite what Perceny sends automatically, insert client variables, and build reusable templates for blasts — without breaking the links inside them.
Every automatic message Perceny sends comes from a template you can edit. Messaging → Templates: "Manage the SMS and email templates sent to your clients."
There are two kinds, and they behave differently.
Standard templatesCopy a link to this section
These are the messages Perceny sends on its own. Each has a fixed job:
| Template | When it goes out |
|---|---|
| Appointment Reminder | Ahead of the appointment, at your reminder lead times |
| Appointment Scheduled / Confirmed / Rescheduled / Canceled / Declined | As those things happen |
| Appointment Completed | After the visit, with details and a rebooking link |
| Appointment Ready | When the stylist marks the client ready |
| Waitlist Spot Available | When a matching slot opens |
| Walk-In Almost Ready / Kiosk Ready | A few minutes before their turn |
| Receipt | Once a ticket is paid |
| Payment Link | When you share a payment link |
| Invoice | When you send an invoice |
| Phone Invite | To a team member you invite |
| Gift Card Purchased — Buyer / Recipient | With the codes and the total |
You cannot add or delete standard templates — only rewrite their wording. If a template shows "This message is turned off in your notification settings. Turn it back on to send it.", editing it changes nothing until you re-enable it. Which messages exist and when each fires is covered in What your clients actually receive.
VariablesCopy a link to this section
Templates use single-brace variables that Perceny fills in per client. The editor lists the ones available for that template — "Available variables (tap to insert)" — so you never have to remember the spelling. Among them:
{firstName} · {clientName} · {businessName} · {stylistName} · {appointmentTime} · {estimatedTime} · {services} · {amount} · {totalAmount} · {link} · {scheduleLink} · {reviewLink} · {receiptNumber} · {address} · {businessPhoneNumber} · {planName} · {visitsRemaining} · {rewardDescription} · {expiration} · {customPolicyText}
Two rules save most of the pain:
- Insert them, do not type them. A misspelled variable renders as literal text in a real client's message.
- Never delete the link variable. A reminder without
{link}cannot be confirmed; a receipt without its link is a dead end.
Wordings for other situationsCopy a link to this section
Some templates say something different in specific circumstances, and the editor exposes each one:
- Default message — "Sent whenever none of the wordings below apply."
- When you ask for a review — sent instead of the default once your Google review link is configured and the client has hit the visit count you ask at. The helper is blunt about the trap: "Include {reviewLink} or clients will never be asked."
- Reward progress line — appended when reward notifications are on and the client is close to their next reward.
Edit all of the wordings, not only the default. The default is the one you will see while testing; the variants are the ones your best clients get.
LanguagesCopy a link to this section
You do not translate templates by hand: "Messages are automatically translated into your clients' languages." Write the English wording well and let the translation follow. The table shows which languages a template carries.
Length and costCopy a link to this section
Under the body, the editor tells you what your rewrite costs:
- "About N segment(s) per message, same as the M we send by default — no credits are charged."
- "About N segment(s) per message against the M we send by default: the extra E cost C credits every time this message goes out."
That second line is the one to watch. Adding a friendly sentence to your reminder can push it from one segment to two — on every reminder, forever. Emoji are worse than they look: they drop the segment limit from 160 characters to 70. See Credits and segments.
Custom templatesCopy a link to this section
Custom Templates are for blasts: "Reusable message templates with client variables for your blasts. Channels are picked when you send."
Create one with a name and a body — Hey {firstName}, we have two openings Friday… — and it becomes selectable in the blast composer. Because channels are chosen at send time, one custom template can go out as a text and as an email, and you can tweak the wording per channel in the composer without editing the template.
You need at least one before you can send a blast: "Create a custom template first to send a blast."
Who can edit themCopy a link to this section
The Manage Message Templates permission: "Create and edit the templates used for automatic and blast messages." Grant it narrowly. A template edit changes what every client receives from then on, and there is no per-message approval step.
Test before you trustCopy a link to this section
Book yourself a real appointment with your own phone number on the client record, let the reminder fire, and read it on a phone. Variables that look fine in the editor are how you discover that {estimatedTime} reads oddly in your sentence, or that your message wraps into a second segment.