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:

You can access all the booking objects from the StoreConnect Bookings app via the app launcher in Salesforce.


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


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  
Zip Code  

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  
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


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.


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.


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
Email 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