Loading...

Custom messages


DoTreat sends a confirmation email when an appointment is booked, reminders before it and emails when it is changed or cancelled, and shows a confirmation on the online booking page when a client has booked. You can replace DoTreat's standard texts with your own, written in any language:

  • Settings > Custom emails: the salon's confirmation, reminder, update and cancellation emails.
  • Online booking > Booking confirmation text: the text shown on the online booking page after a booking is made.

Use conditions for anything that depends on the services, staff or resources booked. The editor starts from the text currently in use; change it to make it your own. Reset to default takes you back to DoTreat's standard text. Use Preview to see the result for a sample booking.

Premium: own texts, and removing "Sent with DoTreat", are part of DoTreat Premium. On a Starter subscription you can write your texts and try them with Preview, but clients get DoTreat's standard texts until the salon is upgraded.


Write it with an AI assistant

The easiest way to write a text with conditions is to let an AI assistant, such as ChatGPT or Claude, do it. Copy the instructions below, fill in what you want, and paste the answer into DoTreat.

Write a booking confirmation email for my salon in DoTreat.
Language: [the language to write in]
What it should say: [describe the text, e.g. greet the client, show the time and booked services, ask them to arrive 10 minutes early. If Anna does the appointment, tell the client to come to the back entrance.]
My services: [list them]
My staff: [list them]
My resources (rooms, chairs, ...): [list them, if any]

Use this template syntax and nothing else:
- Values: {{customer.name}}, {{customer.first_name}}, {{customer.last_name}}, {{customer.email}}, {{business.name}}, {{appointment.time}} (date and time), {{appointment.date}}, {{appointment.start_time}}, {{appointment.end_time}}, {{appointment.total_price}}, {{service_names}}, {{appointment.url}}.
- Generated part: {{booked_services}} (list of booked services with times and prices, without a heading or total), on a line of its own under a bold heading such as **You have booked:**. Write the total yourself under it, inside {% if appointment.total_price %} ... {% endif %}.
- Bold text: **text**. A line of only dashes is a divider.
- End the email with the line "Sent with DoTreat", unless I ask you to leave it out.
- Link to the booking, where the client can see and cancel it: {% link %}link text{% endlink %}. Bookings made by staff have no link, so wrap the sentence in {% if appointment.url %} ... {% endif %}.
- Conditions: {% if ... %} ... {% elsif ... %} ... {% else %} ... {% endif %}. Tests: appointment.services contains "Name", appointment.staff contains "Name", appointment.resources contains "Name", appointment.resource_types contains "Name", and a value on its own, such as appointment.url, which tests that it has a value. Combine with and, or, not and parentheses.
- Each booked service: {% for service in services %} ... {% endfor %}, with {{service.name}}, {{service.start_time}}, {{service.end_time}}, {{service.duration}}, {{service.staff_names}}, {{service.price}}, and the tests service == "Name", service.staff contains "Name", service.resources contains "Name", service.resource_types contains "Name".
- No other tags or filters. Names must be written exactly as in my lists, in double quotes.
Also write a one-line subject, which may use the values but no tags.

Paste the text into the text field and the subject into the subject field. If DoTreat reports an error, it names the line; give the message to the assistant and ask it to correct the text.


Values

Write a value in double curly brackets, and DoTreat fills it in for each booking:

{{customer.name}}The client's full name.
{{customer.first_name}}The client's first name.
{{customer.last_name}}The client's last name.
{{customer.email}}The client's email address, where the confirmation and reminders are sent.
{{business.name}}The salon's name.
{{appointment.time}}The date and time of the appointment, e.g. "Monday, October 19, 10:00 – 11:00".
{{appointment.date}}The date of the appointment.
{{appointment.start_time}}When the appointment starts.
{{appointment.end_time}}When the appointment ends.
{{appointment.total_price}}The total price. Empty if the services have no price.
{{service_names}}The booked services, separated by commas.
{{appointment.url}}The address of the online booking page for the appointment, where the client can see and cancel it. Empty for appointments booked by staff. Not in the cancellation email or on the booking page.
{{booked_services}}The booked services with times, staff and prices, as in DoTreat's standard email, without a heading or total. Put it on a line of its own, under a heading such as **You have booked:**. The standard texts write the total under it themselves, with a divider above, and only when there is a price:
**You have booked:**
{{booked_services}}
{% if appointment.total_price %}
--------------------
**Total: {{appointment.total_price}}**
{% endif %}

Link to the booking, where the client can see and cancel it, with {% link %} and {% endlink %} around the words that should be the link. In the plain-text version of the email, the address is shown instead of the words. Bookings made by staff have no link, so {% link %} has to be inside {% if appointment.url %}; the text cannot be saved otherwise:

{% if appointment.url %}
For details regarding the appointment and cancellation: {% link %}click here{% endlink %}
{% endif %}

Put two asterisks on each side of text to make it bold: **You have booked:**. The plain-text version of the email shows the text without the asterisks.

A line of nothing but dashes, such as --------------------, is a divider: a thin line in the email, and the dashes themselves in its plain-text version.

Dates, times, durations and prices are written the salon's way, unless you choose another language for the message; see Other languages.


Conditions

Show parts of the text only for some bookings with {% if %}. {% elsif %} tests another condition when the first did not match, and {% else %} is shown when none did. End with {% endif %}.

{% if appointment.staff contains "Anna" %}
Anna will meet you at the back entrance.
{% elsif appointment.services contains "Colouring" %}
Please come with unwashed hair.
{% else %}
Welcome in through the main entrance.
{% endif %}

A condition tests what is booked, or whether a value has something to show:

appointment.services contains "…"One of the booked services is the one named.
appointment.staff contains "…"One of the staff members doing the appointment is the one named.
appointment.resources contains "…"One of the resources used for the appointment, such as a room or a chair, is the one named.
appointment.resource_types contains "…"A resource of the named type is used for the appointment.
appointment.urlAny value on its own, e.g. appointment.url or appointment.total_price: that it has something to show.

Combine tests with and and or, turn one around with not, and group them with parentheses: appointment.services contains "Colouring" and (appointment.staff contains "Anna" or appointment.resources contains "Room 2"). and is checked before or.

Write names exactly as they are in DoTreat, in double quotes; upper and lower case do not matter. A service can be named by its name in the online booking or its internal name. If you later rename a service, staff member or resource, your text follows the new name.


Each booked service

Repeat a part of the text for every booked service with {% for service in services %} and {% endfor %}. Inside it you can show the service's own details and test the service, its staff and its resources together:

{% for service in services %}
{{service.name}} {{service.start_time}}–{{service.end_time}}
{% if service == "Colouring" and service.staff contains "Anna" %}
Anna does your colouring in room 2.
{% endif %}
{% endfor %}

Inside the loop:

{{service.name}}The service's name.
{{service.start_time}}When the service starts.
{{service.end_time}}When the service ends.
{{service.duration}}How long the service takes, e.g. "60 min".
{{service.staff_names}}The staff the client asked for. Empty when the salon chose.
{{service.price}}The service's price. Empty if it has no price.
service == "…"This is the named service (use != for any other).
service.staff contains "…"The named staff member does this service.
service.resources contains "…"The named resource is used for this service.
service.resource_types contains "…"A resource of the named type is used for this service.

Other languages

Write your text in any language, for example for clients who speak Thai or Vietnamese. Under Dates and times at the top of Custom emails, choose Language for dates and prices, and DoTreat writes dates, times, durations and prices the way that language does in all your own email texts; choose Time format for a 12- or 24-hour clock. Both follow the salon's settings until you change them. The booking page text keeps the salon's settings.

How {{appointment.date}} is written for a Monday, 5 October:

Deutsch (Deutschland)Montag, 5. Oktober
English (United Kingdom)Monday, 5 October
Polski (Polska)poniedziałek, 5 października
ไทย (ไทย)วันจันทร์ที่ 5 ตุลาคม
Tiếng Việt (Việt Nam)Thứ Hai, 5 tháng 10

Around 40 languages are available, including the Nordic and most European languages, English (US, UK, Australia and Canada), French (France and Canada), Thai, Vietnamese, Chinese, Japanese, Korean, Filipino and Indonesian.


Examples

A confirmation email, with one condition on the services and one on the staff:

Hi {{customer.first_name}}!

Thank you for booking with {{business.name}}. Welcome {{appointment.time}}.

**You have booked:**
{{booked_services}}
{% if appointment.total_price %}
--------------------
**Total: {{appointment.total_price}}**
{% endif %}

{% if appointment.services contains "Colouring" %}
Please come with unwashed hair, so the colour takes better.

{% endif %}
{% if appointment.staff contains "Anna" %}
Anna will meet you at the back entrance.

{% endif %}
{% if appointment.url %}
See or cancel your booking {% link %}here{% endlink %}.
{% endif %}
See you soon!
{{business.name}}
Sent with DoTreat

A reminder that lists each booked service under a bold heading:

Hi {{customer.first_name}},

This is a reminder of your appointment at {{business.name}}, {{appointment.time}}.

**Your services:**
{% for service in services %}
- {{service.name}}, {{service.start_time}}
{% endfor %}

See you soon!

A text for the online booking page:

Thank you, {{customer.first_name}}! We look forward to seeing you {{appointment.start_time}}.
{% if appointment.resource_types contains "Massage room" %}
The massage rooms are on the second floor.
{% endif %}

Good to know

  • A tag that is alone on its line takes the whole line with it, so tags do not leave empty lines. A value alone on its line that has nothing to show, such as {{appointment.url}} for a booking made by staff, also takes its line with it.
  • The subject is one line. It can contain values but no tags.
  • The booking page text has no subject or link, since the client is already on the booking page. The cancellation email has no link either, since the booking is gone.
  • The text is saved only when it is correct. If something is wrong, DoTreat tells you on which line.
  • A removed service, staff member or resource can stay in a text that already names it, but cannot be added to a new condition.
  • If a text still cannot be used when a message is sent, DoTreat sends its standard text instead.
  • DoTreat's standard emails end with "Sent with DoTreat". It is ordinary text: keep it, or remove it to send your emails without it (Premium).