30-Oct-2026 | v7.12.4 | All new article
booking_subscriptions
This component fetches Event Booking subscriptions from the CRM, either those owned by the logged-in member or all customer bookings.
{% component type: "booking_subscriptions" %}
Use it to build a "My Bookings" area for logged-in members, or to output a list of bookings across all CRM contacts for an attendee list or report. Each booking includes the booking form, the event name, the number of places allocated, the price and the date of submission. With the detail view type, the submitted form field values are also returned.
Bookings returned by this component are the same records found in the admin under 'CRM' > 'Event Bookings'.
Parameters and Options
booking_subscriptionsThis is the name of the entity that needs to be used for the component retrieving function.
list (default)
detailOutputs a subset of data when viewType is list, and additionally includes the submitted form field data (fields) when set to detail. This helps with performance when listing many items where not all data is required for output.
<path/to/layout>Path to file that will contain the Liquid layout content to be parsed.
If an empty string, nothing will be rendered.
If the parameter is not included, the default virtual layout will be rendered (see below).
true (default)
falseBy default (true) retrieves booking subscriptions for the logged-in member only. If false, retrieves booking subscriptions for all CRM contacts.
id
formId
memberId
formName
createdDateTimeThe name of the property to filter by. If empty or not present, no filtering will be used.
<your value>Your specific value to filter by, eg: form name, id, date, etc.
Liquid variables can be used here also. If present but no value set, no items will be returned.
equally (default)
less
more
lessequally
moreequally
containsThe condition in which to filter by. For example, to return bookings made from, and including, a specific date you could use a filterBy of createdDateTime with a filterValue of date 2026-03-02 and a filterCondition of moreEqually.
id (default)
formId
memberId
formName
createdDateTimeThe name of the property to sort by.
ASC
DESC (default)ASC sorts the items in ascending order while DESC sorts in descending order (based on alpha/numeric or date sorting).
10 (default)
<integer>The maximum number of items returned.
0 (default)
<integer>The number of items skipped before being listed.
item
collection (default)Determines the method for Liquid rendering.item returns each item iteratively, one after another, for output (generally, output to a container element with no need for looping through the data).collection returns all items as one collection for output (your container element and looping logic would be handled in the component's layout).
<yourLiquidVariableName>Assigns the data to a Liquid collection enabling further access to the data on the Page or Template using Liquid.
Your collectionVariable value must only contain English letters, numbers or underscores. Spaces or special characters are not supported.
Liquid Output
The below examples show 1 sample item, but are otherwise the default structure you will get from this component. When object is set to collection, the bookings are held in the items property (ie: {{this.items}}).
ViewType: List
{
"Items": [
{
"formId": 1385,
"memberId": 1430,
"id": 3812,
"formName": "Event Booking Form",
"EventName": "Introduction to Pottery Workshop",
"Allocation": 2,
"Price": "$90.00",
"dateSubmission": "2026-10-12T09:15:22.43"
}
]
}
ViewType: Detail
The detail view adds a fields array containing each field submitted with the booking form, including its name, alias, value and type.
{
"Items": [
{
"formId": 1385,
"memberId": 1430,
"fields": [
{
"name": "First Name",
"alias": "FirstName",
"value": "Joe",
"type": "Text"
},
{
"name": "Email",
"alias": "Email",
"value": "joetest@test.com",
"type": "Email"
}
],
"id": 3812,
"formName": "Event Booking Form",
"EventName": "Introduction to Pottery Workshop",
"Allocation": 2,
"Price": "$90.00",
"dateSubmission": "2026-10-12T09:15:22.43"
}
]
}
Virtual Layout
Based on the above example, if not using any custom layout or collection, the default virtual layout will output a summary list of booking subscriptions, eg:
<ul>
{% for item in this.items %}
<li>
<strong>{{item.formName}}</strong>
<span>Date Submission: {{item.dateSubmission | format_date: "dddd, MMMM dd, yyyy"}}</span>
</li>
{% endfor %}
</ul>
Rendering the list:
- Event Booking Form Date Submission: Monday, October 12, 2026
Accessing the Data
JSON Output
You can output the full JSON for your component data by referencing the root Liquid object {{this}} in your component's layout, or directly on your page, if using the collectionVariable parameter in your component tag.
For example:
{% component type: ... collectionVariable: "myData" %}
You can then render the JSON like so:
{{myData}}
For more details on using this approach, see Part 2 of the free 'Learning Liquid Course'.
Rendering Property Values
This data is also accessible directly on the Page or Template via a Liquid collection by adding collectionVariable to the component.
An example using collectionVariable with value "mybookings":
{% component type: "booking_subscriptions", collectionVariable: "mybookings" %}
Accessing a specific item within the collection. In this case the first item (zero based index), which in our example would render the value Introduction to Pottery Workshop
{{mybookings.items[0]['EventName']}}
Rendering Submitted Form Fields
When using viewType: "detail", you can loop through the fields array of each booking to output the data submitted with the booking form:
{% component type: "booking_subscriptions", viewType: "detail", collectionVariable: "mybookings", layout: "" %}
{% for booking in mybookings.items %}
<h4>{{booking.EventName}} ({{booking.Allocation}} places)</h4>
<ul>
{% for field in booking.fields %}
<li>{{field.name}}: {{field.value}}</li>
{% endfor %}
</ul>
{% endfor %}
Setting layout: "" prevents the default virtual layout from rendering, so only your own markup is output.
