Skip to content

event_reservation

A buyer-safe projection of an event slot attached to a cart or order line. It is available as line_item.event_reservation and order_line_item.event_reservation; non-event lines return nil.

Reservation summary

{% assign reservation = line_item.event_reservation %}
{% if reservation %}
<article>
<h3>{{ reservation.product_name }}</h3>
<p>
{{ reservation.local_start_date }}
{{ reservation.local_start_time }}{{ reservation.local_end_time }}
({{ reservation.display_tz }})
</p>
<p>Status: {{ reservation.status }}</p>
</article>
{% endif %}

Example output:

<article>
<h3>Private consultation</h3>
<p>16 July 2026 10:00–10:30 (Asia/Kolkata)</p>
<p>Status: confirmed</p>
</article>

Meeting status and protected details

The only public key is meeting_status:

{% if reservation.join_url %}
<a href="{{ reservation.join_url }}">Join meeting</a>
{% elsif reservation.reveals_at %}
Meeting details become available {{ reservation.reveals_at | date: '%d %b %Y, %H:%M' }}.
{% else %}
Meeting setup is {{ reservation.meeting_status | default: 'pending' }}.
{% endif %}

Do not use a camelCase spelling. It is not an alias and resolves to nil. Reservation status and meeting_status describe different lifecycles:

FieldMeaning
statusBooking lifecycle, such as pending, confirmed, or cancelled
meeting_statusMeeting provisioning/readiness lifecycle

link_ready reports provisioning readiness; it does not prove that a URL has passed the reveal boundary. Always branch on join_url itself. join_url is released only for a confirmed, non-cancelled reservation, after its reveal boundary, and only when it is a safe public HTTP(S) URL. The meeting object is separately gated on confirmation and cancellation; its nested join_url can still be nil. Theme-editor order previews use synthetic/redacted reservation data and never expose a real buyer’s join URL, attendee data, or meeting capability.

All-day and timed reservations

{% if reservation.is_all_day %}
{{ reservation.local_start_date }} — all day
{% else %}
{{ reservation.slot_start_local }} to {{ reservation.slot_end_local }}
{% endif %}

Use the localized fields for display and the UTC fields for machine-readable datetime attributes.

Properties

PropertyDescription
event_reservation.action_requiredtrue when buyer or seller action is required before meeting setup is complete.
event_reservation.action_required?Boolean alias of action_required.
event_reservation.attendeesPublic attendee details collected for this reservation.
event_reservation.booking_idBooking configuration identifier.
event_reservation.booking_nameBooking configuration display name.
event_reservation.cancel_reasonReason for cancellation.
event_reservation.canceled_atCancellation timestamp, or nil.
event_reservation.cancelledtrue when cancelled.
event_reservation.cancelled_atCancellation timestamp.
event_reservation.cancelled?true when the reservation has been cancelled.
event_reservation.collect_attendee_infotrue when attendee details are required.
event_reservation.collect_attendee_info?Boolean alias of collect_attendee_info.
event_reservation.confirmedtrue when the reservation lifecycle is confirmed.
event_reservation.confirmed?Boolean alias of confirmed.
event_reservation.display_typeBuyer-facing reservation display type.
event_reservation.display_tzIANA time zone used for buyer-facing schedule values.
event_reservation.duration_minutesReservation duration in minutes.
event_reservation.effective_slot_end_utcEffective slot end instant in UTC.
event_reservation.effective_slot_start_utcEffective slot start instant in UTC.
event_reservation.end_at_utcReservation end instant in UTC.
event_reservation.host_namePublic host display name, or an empty string.
event_reservation.is_all_daytrue for an all-day reservation.
event_reservation.join_urlBuyer-visible meeting URL when release rules permit it, otherwise nil.
event_reservation.link_readyMeeting-provider provisioning flag; a reveal boundary can still make join_url nil.
event_reservation.link_ready?Boolean alias of link_ready.
event_reservation.local_end_dateLocalized end date.
event_reservation.local_end_timeLocalized end time.
event_reservation.local_start_dateLocalized start date.
event_reservation.local_start_timeLocalized start time.
event_reservation.meetingSafe buyer-facing meeting details, or nil.
event_reservation.meeting_location_typeMeeting delivery type such as online or physical.
event_reservation.meeting_previewRedacted preview-safe meeting summary.
event_reservation.meeting_statusCanonical meeting provisioning/lifecycle status. No camelCase alias exists.
event_reservation.meeting_summaryNon-secret meeting/booking summary; it is not proof that protected join details are released.
event_reservation.post_purchase_details_availableAlias of confirmed state; always check cancellation and each protected field separately.
event_reservation.post_purchase_details_available?Boolean alias of post_purchase_details_available.
event_reservation.product_nameReserved product display name.
event_reservation.quantityQuantity.
event_reservation.reveals_atInstant when protected meeting details become visible, or nil.
event_reservation.schedule_idResolved schedule identifier.
event_reservation.schedule_nameResolved schedule display name.
event_reservation.slot_end_localSlot end expressed in display_tz.
event_reservation.slot_end_utcSelected slot end instant in UTC.
event_reservation.slot_start_localSlot start expressed in display_tz.
event_reservation.slot_start_utcSelected slot start instant in UTC.
event_reservation.source_schedule_idOriginal schedule identifier retained with the reservation.
event_reservation.start_at_utcReservation start instant in UTC.
event_reservation.statusReservation lifecycle status, distinct from meeting provisioning status.
event_reservation.store_user_idPublic host/staff identifier when available.
event_reservation.tzIANA time zone stored with the reservation.

Property list is generated from the storefront engine (EventReservationDrop), so it always matches what your theme can use. Use {{ event_reservation | json }} only as a curated debug snapshot; it can omit lazy or otherwise public properties.