FAQ Q204: Which tags can I use to represent data specific to reservations?

In all templates which have access to reservation details (e.g. customized messages, invoice, shopping cart contents) you can use the following tags which represent values specific to given reservation. You can use these tags no matter if you are editing the template in WYSIWYG or HTML mode. Tags whose value is empty will be replaced with empty text.

Basic reservation data

Tag nameMeaning
$(rental_id) or $(reservation_id)ID of the reservation
$(resource_id)ID of the resource reserved
$(status)Status of the reservation
$(status_long)Reservation status described in a long sentence with explanations as to what the next steps are.
$(status_code)Numerical value of the status (more...)
$(reservation_confirmed), $(reservation_cancelled), $(reservation_completed), $(reservation_conflict)Equals Yes when the reservation has given status (confirmed, cancelled, completed or conflict), or No otherwise
$(unit_name), $(unit_name:X)Name of the unit chosen. If more than one unit is chosen, the first version will list all units (comma-separated) whereas the second version lets you get each individual unit name, e.g. $(unit_name:2) will return the second unit chosen for the reservation.
$(number_of_persons)Total number of persons
$(rental_color), $(rental_color_description)Color assigned to the reservation by the admin. The first tag returns the color (value which can be used in a css style) while the second tag returns the custom text associated with given color (if defined for your planyo site).
Possible values for the $(rental_color) tag are: #A8314F #33FF33 #4D4DFF yellow #B84DFF #999999 #81FCF6 #FFBAF1 #DADAD2 #ECDC81 #CEF0FF #D1FFB3 #FFA4A4
$(admin_notes)Administrator's notes for given reservation. WARNING! This normally contains private notes regarding the reservation or the client. Use only when required by your model.
$(user_notes)Notes entered by the client at the time of reservation
$(quantity)Number of resources (or when sharing is enabled, number of persons)
$(ticket_number)Quantity previously reserved for the same time as this reservation. This can be interpreted as the ticket number in case of resources with sharing always allowed.
$(ticket_count)Total quantity reserved for the same time as this reservation. This can be interpreted as the total number of tickets sold in case of resources with sharing always allowed.
$(wants_share)For resources which can be shared or not, this is true if sharing was chosen, otherwise it will be empty
$(prop_xxx)One of the custom items in your reservation form. You'll need to replace spaces with underscore character, e.g. $(prop_Wants_breakfast) for the form item 'Wants breakfast'. Any non-alphanumeric characters also need to be replaced with underscores. The tag variation $(user_lang_prop_xxx) will give you the translated value in case the form item is of type dropdown or checkbox. You can also use the tag $(prefixed_prop_xxx) which will return the first non-empty value of an item with the specified prefix.

See the table at the bottom of this page for possible property tags.
$(custom_property_count), $(custom_property_name:x), $(custom_property_value:x)Tags which allow you to get all the custom reservation form items for given reservation. Usually they should be used with the $(foreach:xxx) tag, see the explanation of the foreach tag in the description of the $(reservation_payment_count) tag.
$(reservation_details)All details of the reservation in form of a UL tag with multiple LI entries. This tag can be created using multiple simple tags (see Q277 for more about this) but is a convenient way to quickly list all reservation details.
$(refcode)If referer code was used as a source for the reservation (ppp_refcode parameter in widgets or attribute string), this will give the code used.
$(package_assignment:N), $(package_assignment_name:N), $(package_assignment_resource_admin_email:N)For package reservations, this gives you the Nth package assignment (for simple packages N should always be equal to 1, use higher numbers for flexible packages with multiple categories). The first tag gives the ID of the resource included in the package. The second one gives the resource name and the third gives the email address of the user who's the admin of this resource.
$(commission)When the site is using the commission-based model (PRO-COMM), this is the commission due for the reservation.

Information about the customer

Tag nameMeaning
$(first_name)Client's first name
$(last_name)Client's last name
$(email)Client's email address
$(user_id)Client's unique user ID in planyo
$(address)Client's address (without country)
$(country)Client's country
$(street)Client's street
$(city)Client's city
$(state)Client's state/province
$(zip)Client's ZIP (postal) code
$(phone)Client's phone numbers (land and/or mobile)
$(phone_fixed)Client's land phone number
$(phone_mobile)Client's mobile number
$(phone_plus), $(phone_fixed_plus), $(phone_mobile_plus)Same as the versions without _plus but these versions use the format +CCNNNNN instead of (CC) NNNNN
$(user_language), $(user_language_code)Client's language (full word or a 2-letter ISO 639-1 code)
$(language)Currently chosen language
$(user_preapproved), $(user_banned)Yes if the user is preapproved/banned or No otherwise
$(prev_reservation_count)Total number of valid reservations made previously by the customer for any resource of this site
$(ip_address)IP address used by the customer when making the reservation
$(prop_user_xxx)If you assign any custom properties to your clients, you can also get these values using tags with this prefix.

Date and time

Tag nameMeaning
$(rental_time)Text representing the whole duration of the rental, e.g. Friday 3pm - 5pm
$(start_time)Beginning of the rental (time)
$(start_date)Beginning of the rental (date)
$(end_time)End of the rental (time)
$(end_date)End of the rental (date)
$(creation_date)Date when the reservation was entered into the system
$(creation_timestamp)Time and date when the reservation was entered into the system (in the timestamp format, see Q221 for timestamp-related tags)
$(rental_days)Duration (in full days) of the rental
$(rental_hours)Duration (in full hours) of the rental, e.g. for a 90-minute rental, this will be 1. If you need a fractional value, such as 1.5, use the tag: $(calc:$(rental_minutes) / 60)
$(rental_minutes)Duration (in minutes) of the rental
$(rental_duration)Duration of the rental as text (works with minutes/hours/days/weeks)
$(prop_rental_duration_text)If the resource has predefined duration values, this will be replaced with the duration item chosen by the customer
$(days_until_rental), $(hours_until_rental)Number of days or hours until the beginning of the rental. The first tags will return only full days, that is, independently of the time when the rental starts (if hour-based) and of the current time, if the start date is tomorrow, the tag will always give the value of 1. The second one will give the number of hours until rental, rounded to 1 decimal point, e.g. 0.5 if the rental starts in 30min.
$(date)Today's date
$(start_timestamp), $(end_timestamp)Beginning and end of the rental expressed as timestamp (seconds since 01.01.1970)
$(utz_offset), $(utz_rental_time), $(utz_start_time), $(utz_start_timestamp), $(utz_start_date), $(utz_end_time), $(utz_end_timestamp), $(utz_end_date), $(utz_creation_date), $(utz_creation_timestamp)If you're working with different customer time zones (see Q296), these tags will return time information using customer's time zone, see the equivalent tags without the utz_ prefix for clarifications. The tag $(utz_offset) returns customer's timezone offset expressed in hours of difference from UTC.

Pricing and payments

Tag nameMeaning
$(price_quoted), $(net_price_quoted)Rate quoted for the reservation. The version version includes the tax, the second doesn't.
$(discount)Discount applied (e.g. through a voucher or by the admin)
$(price_no_discount)Original price (without taking under consideration the voucher used or other discount, if present)
$(deposit), $(cart_deposit)Deposit to be paid for the reservation (pre-payment amount). Use $(deposit) for single reservations and $(cart_deposit) if you're using the shopping cart.
$(rental_tax_rate)Tax rate for this rental (in percent).
$(product_price), $(net_product_price)Total price of the additional products, excluding custom products. The second version returns the price without tax (net).
$(price_without_products), $(net_price_without_products)Base price without additional products. This is equal to: $(price_quoted) - $(product_price). The second version returns the price without tax (net).
$(amount_paid)Amount paid already
$(amount_outstanding)Amount left to be paid
$(online_payment_amount)Amount of the online payment (pre-payment / deposit) needed to confirm the reservation
$(online_payment_surcharge), $(cart_items_payment_surcharge)Online payment surcharge paid (if using the shopping cart, the first tag returns the surcharge paid only for one reservation in a shopping cart, the second one will always return it)
$(payment_form:XXX)Displays the payment form directly in place of this tag. You'll need to specify the amount in place of XXX (other tags can be used here). You should only use these tags for templates which are shown on your website. Do not use them for emails - use $(payment_form_url) instead as most email programs will not allow forms in email body. To ask for the outstanding amount, use $(payment_form:$(amount_outstanding))
$(reservation_payment_count), $(reservation_payment_date:N), $(reservation_payment_time:N), $(reservation_payment_amount:N), $(reservation_payment_comment:N), $(reservation_payment_mode:N), $(reservation_payment_status:N), $(reservation_payment_id:N)These tags give you detailed information about payments made for given reservation. $(reservation_payment_count) returns the number of payments (only successful payments and refunds are counted) and the other tags give details about each payment (N is the payment number), for example: $(reservation_payment_id:1) will return the transaction ID for the first payment. $(reservation_amount_2) will give you the amount (including currency) of the 2nd payment etc. $(reservation_payment_status:N) will give you one of the following statuses: paid, pending, error. Here's a code snippet you can use to output all payments (see the explanation of the foreach tag below):
$(reservation_payment_mode:$(it)) $(reservation_payment_amount:$(it))
$(is_applied_rule_number:X), $(get_applied_rule_number:X), $(applied_rule_count), $(applied_rule_first_date:N), $(applied_rule_last_date:N), $(applied_rule_type:N), $(applied_rule_condition:N), $(applied_rule_condition2:N), $(applied_rule_subtype:N), $(applied_rule_value:N), $(applied_rule_unit_type:N), $(applied_rule_unit_price:N), $(applied_rule_price_before:N), $(applied_rule_price_after:N), $(applied_rule_price_diff:N)You can use these tags to extract information about the pricing manager rules which were applied in price calculation. This can be useful e.g. if you want to highly customize the invoice template. $(is_applied_rule_number:X) will be non-empty if rule number X in Pricing Manager was applied. Otherwise it's empty text. $(get_applied_rule_number:X) returns the index of the applied rule for given rule number, to be used with the $(applied_xxx) tags, so you can use it this way: $(applied_rule_price_after:$(get_applied_rule_number:3)) which will give you the price calculated after rule number 3 in pricing manager. If rule number 3 was ignored, this will give you empty text. The following rules are useful to iterate through all applied rules. $(applied_rule_count) will give you the total number of rules applied for given reservation. You can use the $(foreach:xxx) tag described in this FAQ question to iterate through all the rules. Unit type and rule type are integers (here are the rule type values: 1=weekday, 2=date, 3=duration, 4=quantity, 5=num. persons, 6=form item, 7=hour, 8=additional persons, 9=time left, 10=start date, 11=start hour, 12=start weekday, 13=end weekday, 14=additional days, 15=end date, 16=date with year, 17=start date with year, 18=user property, 19=sharing, 20=daily pricing, 21=end hour, 22=additional hours, 23=price, 24=season of start date, 25=always true, 26=season, 27=voucher, 28=csv, 29=add. adults, 30=add. children, 31=time until rental end, 32=places left). Condition and condition2 will give you the rule-specific condition(s). Subtype is used for form items and properties and determines the property name or form item name. Unit price is the price entered into given pricing manager cell. Price before and after give you the price calculated before and after the rule is applied and diff is the difference between the two.
$(voucher_used)Voucher code if a voucher was applied to the reservation, otherwise replaced with an empty text.
$(coupon_used)Non-zero (numeric coupon type) if a coupon was applied to the reservation, otherwise replaced with an empty text.
$(parent_invoice_sequential_number)Sequential number of the parent invoice generated for the reservation

Event log and modifications

Tag nameMeaning
$(creation_moderator)Moderator name if the reservation was entered by a moderator. If not, an empty text is returned. You can also use $(creation_moderator_email) to get their email address
$(creation_website)If the reservation was made online by the customer using advanced integration, then this tag will return the domain name of the website where the reservation was made. If the reservation was made via one of the extensions, such as booking.com, TripConnect from TripAdvisor etc., this will also indicate the source of the reservation. In all other cases it will be an empty text.
$(creation_metasite_id)If the reservation was created in the context of a meta site (either using advanced integration or by the metasite admin), this will return the metasite id. Otherwise (when no meta site context can be found, for example when the site admin entered the reservation) this will be an empty text.
$(added_by_agent)If the reservation was entered by an agent, true is returned. If not, the tag returns an empty text.
$(agent_name), $(agent_email)If the reservation was entered by an agent, these tags return the agent's first and last name (first tag) or their email address (second tag).
$(agent_id)If the reservation was entered by an agent, the tag returns the agent's user ID.
$(cancellation_reason), $(cancellation_date)If reservation was previously cancelled, the reason entered by admin or customer is printed, or the cancellation date in case of $(cancellation_date). If reservation is not cancelled, nothing is printed.
$(last_modification_comment), $(last_modification_date), $(last_modification_admin_name), $(last_modification_admin_id)If reservation was modified (by an admin or customer), you can print the modification comment or date (last one in case multiple modifications were made). The last two tags will be empty if the modification was done by the customer, or else will print the administrator who made the modification.
$(last_product_modification_comment), $(last_product_modification_date)If additional products were modified (by an admin or customer), you can print the modification comment or date (last one in case multiple modifications were made).
$(before_after_event_sent_X)This tag can only be used in customized messages and returns true if the related Before or after event was sent for the reservation. If not, an empty text is returned. X is Before or after event number between 1 and 6. For example, $(before_after_event_sent_1) will return true if Before or after event #1 was already sent for the reservation

URLs for end customer

Tag nameMeaning
$(cancel_url)URL for cancelling the reservation
$(modify_url)URL for modification of the reservation (different resource / different time / reservation options)
$(modify_personal_details_url)URL for modification of the personal details of customer
$(modify_reservation_data_url), $(modify_reservation_data_no_price_update_url)URL of the page where the customer can modify the additional reservation form fields sent originally during the reservation. Personal info and arrival/departure dates cannot be changed in this page. The second version of the tag will result in the price not being recalculated. Otherwise the price gets recalculated because the new settings could affect the price.
$(details_url)URL for viewing reservation status / cancelling etc.
$(invoice_url)URL of the invoice (PDF file). This will not open the url in the browser but will directly download the PDF.
$(reservation_list_url)URL of the page where the customer can see all their past and future reservations, and, if you specifically allow this in your templates, will be able to modify/cancel the selected reservations.
$(additional_products_url)URL of the page where the customer can add or remove additional or recurring products after the reservation is made. It makes sense to use this tag if you have any products defined for your resources. You can read more about additional products here.
$(payment_form_url), $(payment_form_url:XXX), $(payment_form_url_with_template:XXX), $(payment_form_url_outstanding)URL of the page containing the payment button. By default the payment amount will be the same as specified in resource settings for the pre-payment. You can optionally set a different amount here, e.g. $(payment_form_url:10.50) will ask client for the payment amount of 10.50; $(payment_form_url_outstanding) will ask the client for the outstanding amount. E.g. if the total was EUR 100 and the pre-payment was EUR 20.00 then this will ask client for the remaining EUR 80.00
$(checkin_url)URL for the check-in button which lets the customer do the check-in
$(coupon_info_url)URL for the page where the customer can view information about the coupons they own
$(rental_ical), $(rental_ical:N)URL to .ics (iCalendar) file containing reservation details. The second version of this tags lets you use one of the templates defined on the data export page, e.g. $(rental_ical:3) will use the template number 3.
$(reservation_document_url:X)URL of a reservation-specific document (PDF). You can define reservation documents in Settings / Templates / Reservation Documents. These documents can be also attached to email notifications as a PDF attachment. In order to use this tag, you'll need to replace X with the reservation document ID, e.g. $(reservation_document_url:1) for the first document.
$(review_url)URL where a customer can add reservation review. See FAQ 260 for more info.
$(message_url)URL where a customer or admin can add a reservation message.

Additional products

Tag nameMeaning
$(additional_products), $(additional_products_onetime), $(additional_products_recurring), $(additional_products_custom)Products that were added to the reservation. Printed in form of a UL tag with multiple LI entries. You can choose to print only one-time products by using the tag $(additional_products_onetime), recurring products by using $(additional_products_recurring), custom products added specifically to the reservation with $(additional_products_custom) or all products with $(additional_products).
$(additional_product_count), $(get_additional_product_number:N), $(additional_product_name:x), $(additional_product_price:x), $(additional_product_date:x), $(additional_product_quantity:x), $(additional_product_extra_field:x), $(additional_product_is_hidden:x), $(additional_products_include_hidden)Tags related to specific additional products reserved. The first one returns the count of all products reserved and the other tags return the name, price, date (only if it's a recurring product) and quantity of a specific additional product. x is in range 1 to $(additional_product_count). Use the $(foreach:xxx) tag in order to iterate across all products. If you include $(additional_products_include_hidden) anywhere in the template text, all products will be returned, including the hidden ones (added by default to reservations). Otherwise only the products added specifically by the customer will be listed. The tag $(get_additional_product_number:N) can be used in order to fetch the index (x) from a product name, e.g. $(additional_product_price:$(get_additional_product_number:cleaning fee)) would give you the price of the 'cleaning fee' product
$(additional_product_sep_count), $(additional_product_sep_name:x), $(additional_product_sep_price:x), $(additional_product_sep_date:x)Same as the tags above (without _sep_ in the name), except that products with multiple quantities are listed multiple times.
$(prod_qty_xxx), $(prod_total_xxx)Quantity of specified additional product chosen by customer for given reservation. When product was not at all chosen, 0 will be returned. xxx is the product name with spaces replaced by the underscore character OR it can be also product's ID.
$(custom_product_price)Total price of all the custom products
$(custom_product_count), $(custom_product_price:x), $(custom_product_name:x), $(custom_product_tax_rate:x)These tags let you iterate through all the custom reservation products. The first tag returns the total count and the other tags give you values for a specific product (numbered 1, 2, ..)

Shopping cart

Tag nameMeaning
$(is_first_shopping_cart_item)If you're using the shopping cart feature, this will have the value of true in case it's the first shopping cart item and will be empty for all other items. You can use this tag in conditional statements, for example to make sure only a single email will be sent for all items in a shopping cart.
$(cart_items), $(cart_item_resource:N), $(cart_item_resource_id:N), $(cart_item_reservation_id:N), $(cart_item_start_date:N), $(cart_item_end_date:N), $(cart_item_start_time:N), $(cart_item_end_time:N), $(cart_item_prop_xxx:N), $(cart_item_prop_res_xxx:N), $(cart_item_prop_cal_xxx:N), $(cart_item_price:N), $(cart_item_quantity:N), $(cart_item_site:N), $(cart_item_site_id:N), $(cart_item_company_address:N), $(cart_item_notes:N), $(cart_item_unit_name:N), $(cart_item_rental_duration:N), $(cart_item_rental_days:N), $(cart_item_rental_hours:N), $(cart_item_rental_minutes:N), $(cart_item_number_of_persons:N), $(cart_item_start_timestamp:N), $(cart_item_end_timestamp:N), $(cart_item_creation_timestamp:N), $(cart_item_image_url:N), $(cart_item_square_image_url:N), $(cart_items_total), $(cart_items_paid), $(cart_items_outstanding), $(cart_id)If you're using the shopping cart feature, you can use these tags to extract information about all cart items. $(cart_items) will give you the number of items in the shopping cart. The other tags can be used to extract information about each reservation in the shopping cart. N is the item number, e.g. $(cart_item_reservation_id:2) will return the ID of the 2nd reservation in the shopping cart. You can use the $(foreach:xxx) tag described below to iterate through all shopping cart items. $(cart_items_total) will give you the total price of all shopping cart reservations, $(cart_items_paid) the total paid for the shopping cart, and $(cart_items_outstanding) - the outstanding amount. $(cart_id) will be replaced with the shopping cart ID.
$(foreachres) ...code... $(endforres)Use this iterator tag only with the shopping cart feature. It will iterate over all reservations in the cart. In between the $(foreachres) and $(endforres) tags all reservation-specific tags from this FAQ question will represent the values for given reservation. Note that you can use the $(foreach:xxx) iterator inside the $(foreachres) iterator.
Here's an example: $(foreachres) Products for R$(reservation_id) : $(foreach:$(additional_product_count)) $(additional_product_name:$(it)) $(endfor) $(endforres) prints names of all additional products included in all reservations in the shopping cart.
$(repeated_reservation), $(original_reservation)These tags can be used with the return trip or recurring reservation features. $(repeated_reservation) will be empty in case of the first (original) reservation; otherwise it will be the subsequent reservation number (e.g. 2 for the return trip). $(original_reservation) will always return ID of the original reservation.

Iterating over collections using $(foreach)

Tag nameMeaning
$(foreach:xxx) ...code... $(endfor)Performs xxx iterations, that is, repeats the code between the $(foreach:xxx) and $(endfor) tags xxx times. In between these tags you can use the tag $(it) which prints the current iteration. Please note that you can use any other rental tag from this FAQ question to calculate the value of xxx.
Here's a simple example: $(foreach:5) #$(it) $(endfor) prints #1 #2 #3 #4 #5.
Another example: $(foreach:$(additional_product_count)) $(additional_product_name:$(it)) $(endfor) prints names of all additional products included in the reservation.

In all templates in planyo you can use the tag $(S_XXX) which represents any text visible to your clients. It makes sense to use such tags, e.g. $(S_RESRES) which will output "Make reservation" instead of the plain text version because the text will be translated automatically to client's language. to find out the IDs of given text, you can go to Site Settings / Customized translation and when you search for texts containing given keyword, you'll see the keyword ID in the left column.

Another very useful feature you can use in your templates are conditional statements: $(if) ... $(then) ... $(else) ... $(endif). They allow you to output different code based on a value of any tag. You'll find the details in Q207

See also other related FAQ questions:
Resource tags
Planyo site tags
Universal tags