How do I manage multilingual apartment descriptions, amenities, arrival instructions, and bank transfer instructions?
Create reusable content templates under Bookings -> Apartment Content. Each template can contain translated apartment descriptions, amenities text, arrival instructions, and bank transfer payment instructions for the languages configured in Bookings -> Settings.
Then open an apartment and use the Guest-facing Apartment Content section in the apartment details. You can assign a template and optionally override any language directly for that apartment.
Template texts support placeholders in double braces. Built-in placeholders include:
{{apartment_name}}
{{apartment_id}}
{{site_name}}
{{checkin_time}}
{{checkout_time}}
{{capacity}}
{{booking_id}} – available in arrival instruction emails.
{{guest_name}} – available in arrival instruction emails.
{{date_from}} and {{date_to}} – available in arrival instruction emails.
{{invoice_number}}, {{payment_amount}}, and {{payment_currency}} – available in bank transfer instructions after booking submission.
Bank transfer callbacks use the generic Bank Notify URL from settings. The endpoint accepts JSON, form-encoded payloads, and simple XML bodies. It recognizes common wrapper keys such as transaction, payment, data, entry, or accountStatement, and common aliases:
- token:
token, webhook_token, secret, shared_secret, api_key, or the X-VSTRB-Token, X-Webhook-Token, or Authorization: Bearer ... header.
- booking:
booking_id, bookingId, reservation_id, or order_id.
- invoice:
invoice_number, invoiceNumber, invoice_no, invoice, or bill_number.
- reference / variable symbol:
reference, payment_reference, variable_symbol, variableSymbol, vs, transaction_id, bank_reference, endToEndId, remittanceInformation, message, note, or userIdentification.
- amount and currency:
amount, value, transaction_amount, castka, sum, currency, ccy, or mena.
The plugin matches payments by booking ID first, then invoice number, then exact reference/variable-symbol match against stored payment references or invoice numbers. It does not connect directly to a specific bank API by itself; a bank export, external automation, or middleware can call the endpoint in one of the supported shapes.
You can also define custom placeholders in the apartment editor, for example door_pin, wifi_password, or parking_note. Custom placeholders can have one global value or language-specific values. Use them as {{door_pin}} or with a fallback like {{door_pin|provided before arrival}}.
Example: door PIN and Wi-Fi password
- Open Apartments -> Edit Apartment.
- In Guest-facing Apartment Content -> Template Placeholders, add:
- Key:
door_pin
- Global value:
123456
- Add another placeholder:
- Key:
wifi_password
- Global value:
MySecureWifiPassword
-
Use these placeholders in an arrival instruction template:
Your apartment is {{apartment_name}}.
Check-in is possible from {{checkin_time}}.
The entrance door PIN is {{door_pin}}.
The Wi-Fi password is {{wifi_password}}.
Example: translated custom placeholder
If a placeholder contains text that should be translated, fill the language-specific values:
- Key:
parking_note
- Global value:
Parking is available behind the house.
- CS value:
Parkovani je mozne za domem.
- DE value:
Parken ist hinter dem Haus moeglich.
Then use it in a template:
{{parking_note}}
When the content is displayed or emailed in Czech, the CS value is used. In German, the DE value is used. If no matching language value exists, the global value is used.
Example: fallback text when a value is missing
Door PIN: {{door_pin|provided before arrival}}
If door_pin is empty, the guest will see provided before arrival instead of a blank value.
You can display the saved content with these shortcodes:
[vstrb_unit_description unit="YOUR_ID" language="cs"]
[vstrb_unit_amenity_list unit="YOUR_ID" language="cs"]
[vstrb_unit_arrival_instructions unit="YOUR_ID" language="cs"]
[vstrb_unit_arrival_instructions_by_code param="unit_code" language="cs"]
[vstrb_unit_arrival_instructions_by_name param="accommodation" language="cs"]
[vstrb_unit_arrival_instructions_by_reservation]
If the language attribute is omitted, the site language is used. Apartment-specific text has priority over the selected template.
To show arrival instructions without exposing an internal apartment ID, prefer [vstrb_unit_arrival_instructions_by_code]. Set a Public apartment code in the apartment editor and put that code into the external channel link. This is more reliable than matching a name sent by Booking.com, Airbnb, or another channel.
Example page shortcode:
[vstrb_unit_arrival_instructions_by_code param=”unit_code” language=”cs” fallback=”Accommodation not found. Please contact us.”]
Example guest URL:
https://example.com/arrival/?unit_code=blue-house
If an external channel can only send the accommodation name, use [vstrb_unit_arrival_instructions_by_name] and add the exact channel-specific names to External accommodation names / aliases in the apartment editor. The shortcode matches the URL value against the apartment title and these aliases. Matching ignores case, accents, and extra punctuation.
Optional parameters:
param="NAME" – GET parameter containing the public code or accommodation name. Defaults: unit_code for the code shortcode, unit_name for the name shortcode.
code="TEXT" – use a fixed public apartment code instead of a GET parameter, useful for testing.
name="TEXT" – use a fixed accommodation name or alias instead of a GET parameter, useful for testing.
match="exact" – default exact normalized title match.
match="contains" – name shortcode only: allow one unique partial match when an external channel sends a longer or shorter name.
show_title="1" – show the matched apartment title above the instructions.
fallback="TEXT" – text shown when no unique apartment is matched.
How do automated arrival instruction emails work?
In the apartment editor, enable Email arrival instructions automatically before check-in and set Send days before arrival.
The daily WordPress cron checks confirmed bookings with a customer email address. If arrival instructions exist for the apartment, the guest receives an email with the apartment description, amenities, and arrival instructions in the saved booking language when available. Each booking is marked after sending so the instructions are not sent repeatedly.
To display arrival instructions by matching a guest stay, use:
[vstrb_unit_arrival_instructions_by_reservation]
The shortcode reads arrival date, departure date, first name, and last name from URL parameters. It accepts ISO dates and common local numeric date formats such as 2026-06-01, 1.6.2026, 01/06/2026, and 06/01/2026; ambiguous formats are tried against stored reservations without converting through UTC. It first tries to find one apartment by stay dates only. If multiple apartments match the same dates, it narrows the result by both guest names, then by last name only, then by first name only. Name matching ignores accents and letter case. If no unique match is found, it displays the first apartment with available instructions in alphabetical order.
Example page shortcode:
[vstrb_unit_arrival_instructions_by_reservation date_from_param=”checkin” date_to_param=”checkout” first_name_param=”guest_first_name” last_name_param=”guest_last_name” language=”cs” available_days_before=”1″ unavailable_text=”Arrival instructions are not available yet.” fallback=”Arrival instructions are not available. Please contact us.”]
Example guest URL, password: testtest:
https://vachr.cz/apartment-1-demo-pin/?checkin=2026-06-23&checkout=25.6.2026&guest_first_name=Jan&guest_last_name=Novak
Optional parameters:
unit="ID" – limit matching to one apartment, useful when date combinations may repeat across apartments.
date_from_param="date_from" – URL parameter containing arrival.
date_to_param="date_to" – URL parameter containing departure.
first_name_param="first_name" – URL parameter containing first name.
last_name_param="last_name" – URL parameter containing last name.
date_from="YYYY-MM-DD" – fixed arrival date instead of a URL parameter.
date_to="YYYY-MM-DD" – fixed departure date instead of a URL parameter.
first_name="TEXT" – fixed first name instead of a URL parameter.
last_name="TEXT" – fixed last name instead of a URL parameter.
language="cs" – language used for apartment instructions.
show_title="1" – show the matched or fallback apartment title above the instructions.
fallback="TEXT" – text shown when no apartment has arrival instructions.
available_days_before="1" – how many days before arrival the instructions may be shown. Default: 1. Use 0 to show them only on the arrival day.
unavailable_text="TEXT" – text shown when the guest opens the page too early. If omitted, a translated default message is shown.
Can I pre-fill the guest registration form from a URL?
Yes. The [vstrb_guest_registration] shortcode reads the following GET parameters and pre-fills the corresponding form fields:
date_from – check-in date (format: YYYY-MM-DD)
date_to – check-out date (format: YYYY-MM-DD)
first_name – guest’s first name (pre-fills the first guest block)
last_name – guest’s last name (pre-fills the first guest block)
source – booking source; accepted values: booking_com, airbnb, vrbo, expedia, direct, other
booking_ref – booking reference number
accommodation – external accommodation name used to resolve the apartment when [vstrb_guest_registration param="accommodation"] is used
Example URL:
https://bayernrelax.eu/en/accommodation-instructions/?accommodation=[PROPERTY_NAME]&date_from=2026-07-01&date_to=2026-07-07&first_name=John&last_name=Doe&source=booking_com&booking_ref=1234567890
This is useful when sending a registration link directly from a booking confirmation email.
How do admin price offers work for imported reservations?
Open Bookings, click Offer on any reservation, and use the Price offer panel. The plugin calculates the price from the current reservation unit, dates, guest count, services, seasonal rates, discounts, surcharges, and refundable deposit settings.
You can add a one-time manual discount as a fixed amount or percentage. The generated result is saved back to the booking total and into the booking price breakdown, so notification emails and admin details show the same final amount.
For imported iCal reservations from e-chalupy.cz, Booking.com, Airbnb, and similar channels, the guest email is often not stored as the booking customer email. In that case you can enter any recipient in Send offer to email. If the iCal description contains an email address, the field is prefilled automatically.
Each offer also has a private public link in Public price offer link. Copy that URL and send it manually through any channel. The link uses a random token and displays only the price offer page for that booking.
The email sent from the price offer panel includes the offer summary and the same public price offer link.
How do I show limited booking details to cleaners or staff?
Go to Apartments -> Settings -> Notifications and add one staff access rule per line:
cleaner@example.com|unit,dates,guests|departure|cs_CZ|1
reception@example.com|unit,dates,guests,contact|arrival|de_DE|3
manager@example.com|all|all|en_US|1
The format is email|fields|events|language|days_before.
The fields part controls visible information in staff emails and the staff frontend shortcode. The events part controls which staff emails are sent. The optional language part controls the language of staff emails for that address; use locale codes such as cs_CZ, de_DE, or en_US. If it is omitted, the site language is used. The optional days_before part controls how many days before an arrival or departure reminder is sent. Use 0 for the same day, 1 for one day before, 3 for three days before, etc. If you want days_before without a language, use either email|fields|events||3 or the shorthand email|fields|events|3.
Available fields:
unit – apartment name.
dates – stay dates.
guests – guest count.
status – booking status.
source – booking source.
customer – customer name.
contact – customer email and phone.
price – booking total and currency.
note – booking note.
booking_reference – external booking reference on guest registrations.
guest_names – names submitted in guest registrations.
all – allow all fields.
Available events:
new_booking – email when a new booking is created.
registration – email when guest registration details are submitted.
arrival – email before check-in, using the rule’s days_before value.
departure – email before checkout, using the rule’s days_before value.
ical_cancelled – email when a future imported iCal reservation disappears from its source feed and is treated as cancelled.
all – receive all staff emails.
For a cleaner who should not see prices or guest contact details and should only receive checkout reminders, use:
cleaner@example.com|unit,dates,guests|departure|cs_CZ|1
For a reception or handover person who should only receive arrival reminders, use:
reception@example.com|unit,dates,guests,contact|arrival|de_DE|3
Then create a WordPress page or post, optionally protect it with a WordPress password, and add:
[vstrb_staff_bookings email="cleaner@example.com" days="30"]
Optional shortcode parameters:
email="EMAIL" – staff rule to use.
days="N" – number of upcoming days to display (default: 30).
unit="ID" – limit to one apartment.
limit="N" – maximum number of bookings (default: 50).
include_registrations="0" – hide guest registration groups.
status="all" – include cancelled and blocked bookings too.