Placeholder variants for bookings, tickets, and invoices
Several placeholders already generate complete booking, appointment or invoice tables. Attributes in square brackets change their appearance. Use this guide for formatting; the searchable reference shows which syntax is available in each template.
Combine attributes
##BookingPart[NoTime,NoPrices,DurationWeekDays]##Write the attributes inside the same double hash delimiters and separate multiple options with commas. The options change the output; they do not change price eligibility, a booking, invoice or access rights. Some options hide the same information as other options. Therefore, only combine variants that help the recipient.
BookingPart: Booking block
| Attribute | Effect |
|---|---|
AlwaysShowPriceCategories | Shows price categories even when only the standard category has been booked. |
DistinctDays | Counts distinct delivery dates. |
DurationDaysHours | Shows the duration in days/hours. |
DurationWeekDayRange | Combines consecutive weekdays into a range; otherwise uses a list. |
DurationWeekDays | Shows the delivery days as a list of weekdays. |
Gender | Adds the salutation for each person. |
NetAmountAndVATAdded | Adds the net amount and VAT. |
NoPrices | Hides prices. |
NoTime | Hides times. |
NoUsers | Hides the list of people. |
NoWeekDay | Hides weekdays; equivalent to NoWeekDays. |
NoWeekDays | Hides weekdays; equivalent to NoWeekDay. |
TicketBookedSchedule: Booked appointments
| Attribute | Effect |
|---|---|
EndTime | Also shows the end time. |
NoDate | Hides the date. |
NoGrouping | Outputs appointments without the usual grouping. |
NoLocation | Hides the venue. |
NoName | Hides the appointment description. |
NoRoom | Hides the room. |
NoTime | Hides times. |
NoTimeLabel | Hides the time label. |
ShortDate | Uses a short date. |
OfferAllBookedOffers: Booked offers
| Attribute | Effect |
|---|---|
NoOfferNumber | Hides offer numbers. |
NoPrice | Hides prices. |
InvoiceListing: Invoice line items
| Attribute | Effect |
|---|---|
NoDate | Hides additional appointment/offer details. |
Pricecategory | Adds price categories. |
PricecategoryDetail | Adds offer names for additional price categories. |
TaxLabelShort | Uses the short tax description. |
TextInvoiceBalance | Distinguishes the labels for invoice amount and invoice balance more clearly. |
User | Adds the names of assigned participants. |
Use the booking block in practice
With AlwaysShowPriceCategories, even a single standard price category remains visible. This helps when confirmations should explicitly name the booked rate. A subscription rate is displayed as booked; active subscription eligibility is configured in the price categories.
NoWeekDay and NoWeekDays are equivalent variants. DurationWeekDayRange only combines genuinely consecutive days into a range. A list is more useful for non-consecutive or repeated weekdays. NoUsers is available in the normal Booking.pdf; do not copy this option into other booking documents without checking it.
Distinguish the offer period from the appointments actually booked
An offer may run from January to June even though a person only books two lessons in March. Choose the correct data context for what you want to say. A single date and a list of booked appointments serve different purposes.
| Desired information | Suitable data context |
|---|---|
| The offer’s overall period | OfferStartendDate describes the combined offer period. Do not use it as complete evidence of an individual’s appointment selection. |
| First or last appointment in the participant lesson context | OfferStartDate/OfferStartTime and OfferEndDate/OfferEndTime can account for the first or last booked lesson where a participant is assigned. Without this context, offer dates apply. Check the message actually generated. |
| All booked lessons or selected sub-offers | Use an available booking/appointment block designed for this purpose, for example TicketBookedSchedule[ShortDate,EndTime] in the appropriate document context. A start and end date do not show gaps or automatically identify every individual booked item. |
| Confirmation of a collective or multi-offer booking | Check BookingPart, OfferAllBookedOffers and the available appointment blocks for the specific template. A single OfferName or date value does not automatically describe every person and sub-offer. |
In particular, note that OfferStartendDate and the separate start/end fields are not individualised in the same way in every context. Do not replace them solely because their names sound similar. The editor preview using demo data does not check a real lesson selection.
- Create an internal test case with a multi-part offer, select only individual lessons and record their dates and times.
- Open the booking details and compare the actual selection with the confirmation email, Booking.pdf and, if enabled, the ticket and ICS.
- Also check a multi-offer booking and a collective booking. Check the person assignments and booked sub-offers individually.
- If a document shows the overall period instead of the selected appointments, first check the block being used and its data context. Add an available appointment block and generate the same test case again.
For an individual attendance record, also align the date display with recorded attendance and the lesson model. A period alone does not certify attendance.
Display several booked days and weekdays
Edit the appointment display using the placeholder selection for the relevant template. An existing protected system block, such as Booking_part_Please_do_not_change, is retained as complete booking output; do not open or split its generated content into what appear to be individual date fields.
| Template | Verified formatting method |
|---|---|
| Confirmation email | If required, insert the available OfferAllBookedModulesTableTitle block in its own paragraph beside or below the existing system block. It provides a table containing date, time, description and instructor. For a lesson booking, it accounts for the selected booked lessons. The date follows the account’s date format; this block does not offer its own weekday format for each table row. |
| Booking.pdf | Use the available BookingPart block. The lesson list can output the individual booked days with a Day column. To do this, omit NoWeekDay/NoWeekDays. DurationWeekDays adds the weekday list for the relevant selection to the duration overview. |
| Ticket or booking document with TicketBookedSchedule | The booked appointment list can be adjusted with ShortDate and EndTime. An attribute such as WeekDay is not available for this block; do not copy formatting attributes from other placeholders without checking. |
Example for the confirmation email, only if this placeholder is available in the open template menu:
<h3>Your booked dates</h3>
##OfferAllBookedModulesTableTitle##
Example for the normal Booking.pdf context when formatting its booking block using an available variant:
##BookingPart[NoPrices,DurationWeekDays]##
Deliberately replace the relevant editable booking block for this purpose; do not insert several complete booking blocks consecutively. In an internal offer spanning several days, check a person who has selected only two lessons and compare weekdays, date rows and times with the booking details. Repeated instances of the same weekday may be combined in the duration overview, so it does not replace a list of all specific dates. A range of “Monday to Friday” would be misleading if only Monday and Thursday were booked.
If you need the exact format “weekday, date” for every line in the email body, the stated table attributes do not allow this to be freely formatted. Use the available table or Booking.pdf with its day list, or a separately configured and verified output context. The format settings for custom participant date fields do not change these composite appointment blocks.
Wallet links and barcode
MobileWalletTickets and MobileWalletTicketURL provide the available Wallet output or general link. MobileWalletAppleURL, MobileWalletGoogleURL, MobileWalletAndroidURL and MobileWalletSamsungURL also exist. They are intended for the confirmation and ticket contexts. Whether a ticket or platform-specific link actually exists depends on ticketing and the Wallet configuration.
{IF?MobileWalletTicketURL != }<p><a href="##MobileWalletTicketURL##">Add ticket to wallet</a></p>{ENDIF}A ticket code can be inserted as an image, for example with ##TicketDataMatrix*120px*P##. The fixed available variants are 120px and 80px in portrait (P) and 100px and 50px in landscape (L). This cannot replace a ticket code that has not been generated. Check the code in the finished ticket and the intended scanning workflow.
Three useful combinations
| Purpose | Example |
|---|---|
| Compact booking documents without prices or times | ##BookingPart[NoPrices,NoTime,DurationWeekDays]## |
| Appointment list with short dates and end times | ##TicketBookedSchedule[ShortDate,EndTime]## |
| Company invoice with participants and price categories | ##InvoiceListing[User,PricecategoryDetail,TextInvoiceBalance]## |
Check individual and collective bookings, multiple appointments, long descriptions, partial payments and multi-page PDFs. Attributes for one base name do not automatically apply to another base name. For example, NoPrices in BookingPart is called NoPrice in OfferAllBookedOffers.
Spell options exactly and select them purposefully
Copy attribute names from the reference with their exact capitalisation. For BookingPart, for example, write NoPrices, and for OfferAllBookedOffers, NoPrice. These names are not interchangeable synonyms. An unknown attribute does not automatically generate an error message and may have no desired effect.
TicketBookedSchedule is intended for the booked appointments in a ticket or booking document template. OfferAllBookedModules and its table variants are separate composite appointment blocks. Use the variant for the open template context and compare a lesson booking with a full offer booking.