Beds24 templates: emails, invoices and the template variables behind them
A Beds24 template is a text with placeholders, the template variables, such as [GUESTFIRSTNAME] or [FIRSTNIGHT], that Beds24 replaces with the details of each booking. You write it once, and Beds24 uses it in Auto Action emails, confirmation messages, invoices and printable booking templates. This guide shows where each template lives, the variables hosts use most, copy-paste examples, and the mistakes that leave guests with blank fields.
Which templates Beds24 has: messages, Auto Actions, invoices, booking templates
“Template” means several things in Beds24, and most of them are texts with variables. At the time of writing (October 2026), the Beds24 wiki places them here:
| Template | Menu (per the Beds24 wiki) | What it is for |
|---|---|---|
| Confirmation messages | (SETTINGS) GUEST MANAGEMENT > CONFIRMATION MESSAGES | The text guests see on screen and in the confirmation email after booking on your Beds24 booking page, in up to three parts |
| Auto Actions | (SETTINGS) GUEST MANAGEMENT > AUTO ACTIONS | Emails, channel messages and SMS sent automatically relative to booking, check-in or check-out, or by hand from a booking |
| Invoice template | (SETTINGS) GUEST MANAGEMENT > INVOICE | The printable invoice, which an Auto Action can also attach as a PDF |
| Booking templates | (SETTINGS) GUEST MANAGEMENT > BOOKING TEMPLATES | A printable document opened from the booking’s Summary tab; by default a guest registration form |
| Property and room templates | (SETTINGS) PROPERTIES > DESCRIPTION > PROPERTY TEMPLATES; ROOM TEMPLATES in the room setup | Your own text per property or room (door codes, team emails, offers), inserted with [PROPERTYTEMPLATE1] or [ROOMTEMPLATE1] |
Confirmation messages only go to bookings made on your own Beds24 booking page. Booking.com and the other channels confirm their bookings themselves, and Beds24 points to an Auto Action if you want to send your own confirmation or extra information. Sources: confirmation messages, Auto Actions, invoice template, booking templates.
Setting up Beds24 from scratch? Rooms, prices and channels come first: our Beds24 tutorial covers them. Templates are the last layer, once bookings flow in.
How template variables work: [ROOMNAME], [INVOICEBALANCE] and co.
A variable is an upper-case code in square brackets. When the email is sent or the document printed, Beds24 replaces it with the value from that booking, property or room. The wiki’s rule: copy each variable exactly as shown, square brackets and upper case included (Template Variables).
- Offsets on dates: add days after a colon.
[FIRSTNIGHT:-3 days]gives the date three days before arrival. - Offsets on amounts: a fixed amount or a percentage, as in
[PRICE:-10]or[INVOICEBALANCE:25%]. - Date formats go in curly braces:
[FIRSTNIGHT:{%A, %e %B, %Y}]writes a date such as “Friday, 13 November, 2026”, and[LEAVINGDAY:{%d.%m.%Y}]writes 15.11.2026. - NUM versions for calculations:
[PRICENUM]or[INVOICEBALANCENUM]drop the currency symbol and the thousands separator. The wiki says to always use them when numbers are involved. - INC versions include cancelled bookings:
[ROOMNAME]leaves out cancelled rooms,[ROOMNAMEINC]keeps them. Use INC versions in cancellation emails. - BR versions add line breaks, for HTML emails where each item should sit on its own row.
Smart logic variables print a text only when a condition is true. Colons separate the two values and the first text, a pipe separates the two texts, and either text may be empty:
[IF>:[NUMADULT]:2:Please tell us your bedding requirements.|]
[IF=:[NUMNIGHT]:1:1 night|[NUMNIGHT] nights]
[IF=:[GUESTLANGUAGE]:fr:Merci pour votre réservation !|Thank you for your booking!]
Because colons and pipes are separators, a text that contains one, such as a time, a link or “Balance due:”, needs the special version with ^ and ~, which the wiki provides for exactly that case: [IF>^[INVOICEBALANCENUM]^0^Balance due: [INVOICEBALANCE]~Your stay is fully paid.]
Template variables are placeholders that Beds24 fills from each booking. Copy them exactly, use NUM versions for numbers and INC versions for cancelled bookings, and test with a real booking before guests see the result.
The variables hosts use most
The full list runs to several hundred variables, grouped by property, room, booking, invoice and payment request. These cover most guest emails:
| Variable | What it shows |
|---|---|
[GUESTFIRSTNAME], [GUESTFULLNAME] | First name; title, first and last name, from the booking’s Summary tab |
[BOOKID] | Beds24 booking number |
[APIREF] | The booking number at the channel the booking came from |
[PROPERTYNAME], [PROPERTYADDRESS], [PROPERTYPHONE] | Property name, address and phone |
[ROOMNAME], [ROOMNAME1] | Names of all booked rooms, cancelled ones excluded; name of the first booked room |
[FIRSTNIGHT], [LASTNIGHT], [LEAVINGDAY] | First night, last night, check-out day |
[NUMNIGHT] | Number of nights |
[NUMADULT], [NUMCHILD], [NUMPEOPLE] | Adults, children, total guests |
[CHECKINSTART], [CHECKINEND], [CHECKOUTEND] | Check-in window and check-out time in 24-hour format; add 12 at the end for am/pm |
[GUESTARRIVALTIME] | Arrival time, if the guest gave one |
[PRICE], [INVOICEBALANCE] | Value in the booking’s price field; balance still due on the invoice |
[PAYURL] | Payment link for the amount in the deposit field if it is not zero, otherwise the outstanding balance; [PAYURL:100%] always asks for the full balance |
[INVOICETABLE] | The invoice lines as a table |
[CANCELURL], [GUESTLOGIN] | Link where the guest can view and cancel the booking; link to the guest login |
[GUESTLANGUAGE] | The guest’s language, for smart logic |
[PROPERTYTEMPLATE1], [ROOMTEMPLATE1] | Your own text per property or per room, numbered 1 to 8 |
A pre-arrival email to paste into an Auto Action and adapt. It uses only variables from the list above:
Subject: Your stay at [PROPERTYNAME] on [FIRSTNIGHT:{%e %B}]
Hello [GUESTFIRSTNAME],
We look forward to welcoming you on [FIRSTNIGHT:{%A, %e %B}] for [IF=:[NUMNIGHT]:1:1 night|[NUMNIGHT] nights] in our [ROOMNAME].
Check-in is from [CHECKINSTART] to [CHECKINEND]. Please leave the room by [CHECKOUTEND] on [LEAVINGDAY:{%A, %e %B}].
Address: [PROPERTYADDRESS]
Booking number: [BOOKID]
[IF>:[NUMADULT]:2:Please tell us your bedding requirements.|]
[IF>^[INVOICEBALANCENUM]^0^Balance due: [INVOICEBALANCE]. Pay securely here: [PAYURL:100%]~Your stay is fully paid.]
See you soon,
[PROPERTYNAME], [PROPERTYPHONE]
Note [PAYURL:100%] rather than [PAYURL]: if a deposit was entered in the booking’s deposit field, plain [PAYURL] asks for that amount, not for the balance.
Property templates: one Auto Action for every property
With several properties, the trap is copying the same Auto Action once per property, then editing ten copies at every change. Beds24’s answer is property templates: text fields you fill in once per property, which “can be used in Auto Actions, Booking Templates, Invoices and Reports” (Beds24 wiki).
- In each property, open (SETTINGS) PROPERTIES > DESCRIPTION > PROPERTY TEMPLATES and put the same kind of information in the same field, for example the building door code in Property Template 1.
- In the Auto Action text, write
[PROPERTYTEMPLATE1]instead of the code itself. - Make the action trigger on All properties (or All owned by, or All visible in account) instead of a single property.
- Test it with one booking number from each property, as described below.
Your door code for [PROPERTYNAME]: [PROPERTYTEMPLATE1]
Check-in from [CHECKINSTART]. Directions: [PROPERTYDIRECTIONS]
The same trick works for internal emails. The wiki’s example stores the housekeeping team’s address in Property Template 5 and sets the Auto Action’s internal email address to [PROPERTYTEMPLATE5], so one action reaches the right team everywhere. If teams or codes differ per room, use room templates, set in the room setup and inserted with [ROOMTEMPLATE1] to [ROOMTEMPLATE8]. With sub-accounts, create the Auto Action in the master account and set the property to “All visible in account”.
Need messages beyond email and SMS, such as WhatsApp? Those go through apps: see Beds24 integrations.
Test a template before guests see it
- Check your outgoing email. In (SETTINGS) ACCOUNT > OUTGOING EMAIL you choose whether emails leave from Beds24 or from your own address, and “Send Test Email” checks the connection (Outgoing Email).
- Preview with real data. Open a booking and go to its MAIL/Action tab: a manual email opens in a window with the variables filled in, and you can edit it or send it as it is.
- Use the Test tab. It shows how many and which bookings an Auto Action tests. Enter a booking number to see whether the action would trigger for it, with diagnostics.
- Send it to yourself. A test booking with your own email address, no phone number and no arrival time shows exactly what a guest receives, gaps included. Cancel it right after: while it exists, it blocks the room on your channels.
If an Auto Action sends nothing at all, the wiki’s checklist starts with: outgoing email working, the action set to trigger automatically rather than Manual, a valid guest email, “Allow Auto Actions” enabled in the booking’s Mails tab, and every trigger condition met. Auto Actions are also processed in batches, not in real time, so leave a margin in time-based triggers.
Why a field comes out blank or wrong:
- The booking has no value. A booking without phone number or arrival time leaves
[GUESTPHONE]or[GUESTARRIVALTIME]empty. Write sentences that still read well without the value, or wrap them in smart logic. - The booking is cancelled.
[ROOMNAME],[NUMADULT]and many others leave out cancelled bookings: use[ROOMNAMEINC]or[NUMADULTINC]in cancellation emails. - The setting behind it is empty. Check-in and check-out times, directions and house rules come from (SETTINGS) CHANNEL MANAGER > PROPERTY CONTENT. If nothing is entered there, nothing is printed.
- A typo or lower case.
[GuestFirstName]is not a variable. - The wrong name.
[INTERNALROOMNAME]is the name used in the control panel, “not the translated room name shown on the booking page”. Beds24 room names are often internal codes such as “DBLV”, which mean nothing to a guest. - A table inside a paragraph. The wiki warns against placing
[INVOICETABLE]inside<p>tags: move it out in the editor’s code view. - A button in an email. The wiki marks
[PAYBUTTON]as not recommended for emails; use[PAYURL]or[PAYLINK]. - Channel messages. Booking.com and Airbnb messages do not support HTML, so give each Auto Action a plain-text version. Booking.com also refuses links, PDFs and special characters such as * or @ (Beds24 wiki).
Booking page templates are something else
Search for “Beds24 templates” and you also land on the booking page’s templates. Those are layouts, not texts: ready-made sets of modules such as the photo slider, calendar, price table, descriptions and map, chosen in the LAYOUT settings of the Beds24 booking page. Switching template changes how the page looks, not what your emails say.
The booking page has texts of its own too, such as descriptions and the messages shown when no room is available, and some can be reused in emails: [PROPERTYDESCRIPTION1] and [PROPERTYROOMNOPRICE] print texts entered in (SETTINGS) BOOKING ENGINE > PROPERTY BOOKING PAGE > CONTENT. To change the page’s layout, colours and fixed texts, follow how to customize the Beds24 booking page.
When your booking page is not Beds24’s: what still uses templates
Many properties take direct bookings on another booking page, connected to Beds24 through its API. Templates keep working, with one difference:
- Confirmation messages are documented for bookings made on the Beds24 booking page. For bookings from elsewhere, build your confirmation as an Auto Action, and check with a test booking which emails the guest receives, so nobody gets two.
- Auto Actions apply to these bookings like any other. Beds24 says the booking source “Direct” covers “bookings from your own web site, manually added bookings and bookings imported though the API (not the channel manager)”.
- Invoices, booking templates and property templates belong to the booking, not to the page it came from, so they apply unchanged.
That is how it works with Bookpage24, a branded Beds24 booking engine that replaces the standard Beds24 booking page without leaving Beds24. Each booking is written into Beds24 like any other, with a reference, and the Beds24 channel manager then closes the room on your channels. Your Auto Actions, invoice template and booking templates therefore apply to it: set your welcome email with Booking Source = Direct, and run the Test tab on the number of a Bookpage24 booking. The city tax line that Bookpage24 writes into the booking shows up with the room in [INVOICETABLE], and if you take a deposit, [PAYURL:100%] requests the rest later (see Beds24 deposits with Stripe).
Want to see the guest side first? See the live demo, with a real hotel’s prices.
Frequently asked questions
What are Beds24 template variables?
Placeholders in square brackets, such as [GUESTFIRSTNAME] or [FIRSTNIGHT], that Beds24 replaces with details from each booking in emails, messages, invoices and booking templates. Copy them exactly, brackets and upper case included.
Where is the full list of template variables?
On the Template Variables page of the Beds24 wiki, grouped by property, room, booking, invoice and payment request. The German wiki has its own version with German descriptions.
Why does my email show a blank instead of a value?
Usually the booking has no value for that field, the booking is cancelled and the variable leaves out cancelled bookings (use the INC version), or the setting it reads, such as check-in times, is empty. A typo or lower case also breaks a variable.
Can I use one Auto Action for several properties?
Yes. Trigger it on all properties and put what differs, such as door codes or team emails, in property templates, inserted with [PROPERTYTEMPLATE1] to [PROPERTYTEMPLATE8].
Can I change the booking page template?
Yes, in the booking page’s layout settings, but a booking page template is a layout of modules, not an email text: see how to customize the Beds24 booking page. A branded page such as Bookpage24 replaces it while Beds24 stays your PMS.
Beds24 is a trademark of Beds24 GmbH. We are an independent service, not affiliated with Beds24.