<!-- https://missblue.dev/help/articles/reusable-templates -->

[Using the Message Center](https://missblue.dev/help/collections/message-center)

# Write a message once and reuse it

Save the message you keep retyping, fill in each person's details, and see exactly what it will say before it goes.

Miss Blue team  Updated September 19, 2026  3 min read

[Browse this collection](https://missblue.dev/help/collections/message-center)

## What a template is for

The message you have typed from memory more than ten times. Save it once, pick it whenever you need it, and it arrives with each person's own details filled in.

Picking a template into a message copies the text. Editing the template afterwards changes nothing you have already written from it, which is what you want — the alternative silently rewrites a message somebody already approved, possibly one that has been queued for a week.

![The Templates screen: a table of saved messages with the variables each uses and when it was made.](/_next/image?url=%2Fhelp%2Ftemplates-list.png&w=3840&q=75)

Every saved template, and which variables each one needs.

## Filling in each person's details

Templates use Liquid, the same syntax as Shopify and Mailchimp, so most of what you already know works.

{{ contact.name }} fills in their name. {{ contact.name | default: "there" }} says "there" for the people you have no name for — worth doing, because a message that begins "Hi ," is the sort of thing a customer notices.

{% if contact.first\_name %}…{% endif %} includes a whole phrase only when you have the value, and filters like | upcase change how a value is written.

{{ contact.first\_name }} and {{ contact.last\_name }} split their name, and anything stored on the contact as a custom field fills in as {{ contact.custom.<name> }}. The same variables work in announcements, scheduled messages and automation steps, filled in when each message sends.

A template with a fallback

> Hi {{ contact.name | default: "there" }}, a reminder about your appointment tomorrow at {{ contact.custom.appointment\_time | default: "the usual time" }}.

## See what it will actually say

The preview under the message box is rendered by the same code that sends it, so what you see is what goes out. It also counts how often each variable is empty across the people you are actually sending to.

"contact.name is empty for 38 of 412 people" is a decision you can make; "contact.name may be empty" is not. Add a fallback fills in the filter for you.

![The New template dialog showing the message with Liquid variables, a rendered preview reading Hi Dana, and a warning that appointment.time is empty for 38 of 412 people.](/_next/image?url=%2Fhelp%2Ftemplate-editor.png&w=3840&q=75)

The preview renders as you type, and says how many people have an empty variable.

## If a template will not save

A template that cannot be read is refused when you save it, with the problem in one line. That is deliberate: a broken template discovered at send time has no good outcome, because printing the raw text to a customer is worse than not sending at all.

The usual cause is an unclosed tag — {% if %} with no {% endif %}.

-   [Automations reference](https://missblue.dev/docs/automations)

## Related articles

-   [Schedule a message for later Write a text now, pick the moment it arrives, and change or cancel it until then. 3 min read](https://missblue.dev/help/articles/schedule-a-message)
-   [Send one message to a list of people Reach a list from your business line as a separate conversation each, at a pace that keeps the line healthy. 3 min read](https://missblue.dev/help/articles/send-an-announcement)
-   [Build an automation When somebody texts you, send a reply, wait, check whether they answered, and follow up. 5 min read](https://missblue.dev/help/articles/build-an-automation)

## Still need a hand?

Send us your question, or text the team at (929) 272-7048.

[Contact the team](https://missblue.dev/contact)  [Text us](sms:+19292727048)
