Booking System
The Booking system allows you to sell courses, seminars, and various kinds of appointments through your StoreConnect stores.
There are 4 main elements to the booking system:
- Sessions - What is being booked
- Locations - Where is it being held
- Availability - When is it happening
- Attendees - Who is going
You can access all the booking objects from the StoreConnect Bookings app via the app launcher in Salesforce.
Sessions
A Session is a fixed-duration time period that can be booked for a certain purpose for one or more attendees, e.g: an 8-hour long Session with a max of 10 attendees. A Session could represent a course, an event, or an appointment etc. Sessions are configured the same as regular products and then have the extra configuration requirements as covered in this article. They work within our normal Product system and can be browsed, searched for, added to cart, and purchased at checkout. Sessions can have variants too.
To be “bookable”, a session must have a Booking Duration otherwise all other session related fields are ignored.
Product Field | Usage |
---|---|
Booking Duration (minutes) | This defines how long a session lasts. If this product represents an hour-long appointment, then the Booking Duration will be 60 |
Booking Start Buffer (minutes) | Required buffer time before bookings (booking can’t be made within this buffer time). Only applicable for availabilities specified via the Availability tab rather than Bookable Event |
Booking End Buffer (minutes) | Required buffer time after bookings (booking can’t be made within this buffer time). Only applicable for availabilities specified via the Availability tab rather than Bookable Event |
Booking Max Attendees | How many attendees can come to a single booking. A booking might be for a room that can only accommodate a set number of people |
Require Attendee Details | If true , the customer will be prompted to supply the details (name and either a phone or email address) of each attendee after checkout |
Virtual | Indicates the Product is not, or does not include, a physical product and therefore doesn’t require shipping |
Locations
Sessions might be offered at multiple locations giving the customer a choice of what location works best for them. The Bookable Location object defines the locations that any session can be held, either physically or virtually and includes the relevant data for that location.
Bookable Location Field | Usage |
---|---|
Active | Whether or not the location is currently active. If false , no sessions will be offered for sale at that location |
Bookable Location Name | Name of the Location |
Store | What store the location can be sold from |
Display Name | The location name as displayed in your store |
Information Markdown | Display information about the location to the customer (Plain Text, HTML or Markdown) |
Standard Time Zone | The time zone of the location (Standard Time). All date/times for sessions offered here will be displayed in this time zone |
Virtual | Indicates to the customer whether this location is a physical or virtual location |
Address Line 1 | |
Address Line 2 | |
City | |
State | |
Zip Code | |
Country |
To join a session to a location, you create a Product Bookable Location record from the Product Bookable Location or either of the Products or the Bookable Locations related lists. Here you can also set a maximum number of bookings for each product at each location.
Product Bookable Location Field | Usage |
---|---|
Bookable Location | |
Product | |
Max Bookings | The maximum number of bookings that can be made for a given slot at this location before it is full (sold out) |
Min Bookings | The minimum number of bookings that need to be made for a given slot at this location before it can go ahead. This is largely an informational field, and by default is not shown to the Customer |
Availability
Now that we have defined the sessions and their locations, we need to define when it is available. We have two ways to achieve this, depending on the session.
1. One-Off Sessions
Where there are events happening at pre-defined times - e.g. Courses, Conventions, Seminars, etc. They are generally one-off, in that they are being offered for sale once and do not reoccur, or at least not frequently. These can be set up in advance and made available for booking.
Using the Bookable Event object, you define a one-off availability for a session. It links a Product Bookable Location to a specific point in time to indicate that a certain product is being offered at a certain place, at a certain date/time.
Bookable Events Field | Usage |
---|---|
Product Bookable Location | |
Display Name | An optional name for the session/event |
Start Date | The date the event starts |
Start Time | The time the event starts |
End Date | The date the event ends |
End Time | The time the event ends |
If the time zone of the location is Pacific/Auckland
and the Start Time is 9:00 AM
, then this indicates the session is starting at 9am in Auckland.
2. Recurring Sessions
Where you have a session available on a regular basis, like multiple times per day an example, use the Availability object. You can define a set of conditions that determine a set of bookable slots without having to create individual Bookable Event records.
For instance, for a given product, Dance Classes, where there are teachers available every day from 10 to 5 for 90-minute lessons, it is impractical to create a Bookable Event record for each of those slots. Instead, we create an Availability record.
Availability Field | Usage |
---|---|
Product Bookable Location | |
Start Date | The date the Availability starts |
Start Time | The time each day the Availability starts |
End Date | The date the Availability ends |
End Time | The time each day the Availability ends |
Days of Week | The days of the week the Availability applies to |
Unavailable - Turns this into a record that defines unavailability when set to True |
Availability stacking
Availability records can be stacked on top of each other. If you wanted to extend the hours that lessons could be booked until 9pm, but just for the last 2 weeks of June, then you would create another Availability record for the extended times and dates. You can stack any number of Availability records to achieve whatever configuration you need.
Unavailability
Availability records can also be used to define dates and times when a session is not available to be booked. It only has any effect when it is stacked on one or more Availability records that specify availabilities. For instance, if sessions should not actually be booked during lunch time, say 1 - 2 pm, then you may have an Availability record stating availability between 9am and 5pm and then create an Availability record that is ‘unavailable’ between 1 and 2pm Monday to Friday. Multiple unavailability’s can be stacked as needed to achieve the desired schedule.
Attendees
When the customer has found a session they want to book, at the location they can attend, they can add the session to their Cart.
Once added to the Cart, the session is held for 15 mins (this time is configurable via the Stores Booking Hold Duration field). When a session is held, it reduces the number of places available for that slot by the quantity in the Cart. If the hold time expires the sessions are released and removed from the Cart. This feature prevents overselling a slot.
When the purchase is completed a Booking record is created for each slot booked. If quantity booked is 3, then 3 booking records are created.
Booking Field | Usage |
---|---|
Account | The Account of the customer who purchased the session |
Contact | The Contact of the customer who purchased the session |
Bookable Event | This is a lookup to the Bookable Event for this slot |
Order Item | The Order Product that it was purchased with |
Status | Booked, Confirmed, Cancelled or Attended |
The record will be created with all these fields populated and Status will be set to “Booked”.
Note: If the booking was made by an Availability record, then a Bookable Event record will be created for the slot if it does not already exist. It may already exist if this is not the first booking for this slot. This way all the bookings for that slot can be found via the one Bookable Event record. If a session needs to be cancelled, all the bookings can be found by accessing the Bookable Event record for that date and time.
Attendee Details
For some use-cases, the contact details of the attendees may be needed. If that’s the case, set the ‘Require Attendee Details’ field to true
on the Product. If that is checked, then the customer will be prompted to supply the details (name and either a phone or email address) of each attendee after checkout.
When the customer selects themselves as an attendee, their attendee record will instead lookup their Contact record. StoreConnect does not create contact records for attendees but you can manually or via Salesforce automation link the attendees to new or existing contact records if you wish.
Booking Attendee Field | Usage |
---|---|
Booking | The lookup to the Booking record |
Attendee | Lookup to Contact if attendee is the one who booked it |
First Name | As entered from website |
Last Name | As entered from website |
Phone | As entered from website |
As entered from website |
The maximum number of Booking Attendees for a Bookable Event is defined by the products Booking Max Attendees field.
Back to Documentation