BOBSTA Seminar Booking is a web-based platform for managing professional training courses and seminars from end to end — publishing courses, taking bookings, processing payments, managing delegates, and automating communications. The admin panel gives you full control over every aspect of the platform.
Navigate to your site's admin URL: dev.bobsta.co.uk/Admin (or your live URL). You will be taken to the admin login screen. Enter your admin username and password. Admin credentials are completely separate from customer accounts.
There are three admin roles. All use the same admin panel — the difference is which features are available.
| Role badge | Role name | Access level |
|---|---|---|
| SuperAdmin | Super Admin | Full access — all settings, admin management, audit log |
| Admin | Admin | Day-to-day operations — courses, bookings, customers, comms |
| SR | SR (Senior Rep) | Limited operational access — no settings or admin management |
Your username and role are displayed at the bottom of the sidebar. Your current user is marked with a "You" badge in the Administrators list. The role shown in the sidebar (e.g. SUPERADMIN) reflects your access level. To log out, click the logout icon at the bottom of the sidebar.
The dashboard opens automatically when you log in. It shows a current-week overview with KPI cards, recent bookings, and a right-hand rail with today's roster, upcoming dates, revenue sparkline, and quick action shortcuts.
The four cards across the top show metrics for the current 7-day window (Mon–Sun of the current week), updating in real time. They are: Bookings · 7D (confirmed orders), Revenue · 7D (confirmed order value), Fill Rate (seats filled across all active future dates), and Outstanding (unpaid invoice count, clicking navigates to Invoices).
Each card shows a mini sparkline beneath the value tracing the trend across the week.
Below the KPI cards is a Recent bookings table listing the latest orders. Each row shows: booking reference (e.g. SB-20260528-CUZ5O), customer, course, course date and time, status, and amount. Click View All → to go to the full Bookings list. Statuses include: Confirmed Expired Abandoned.
The coloured pill filters above the KPI cards let you narrow all dashboard data to a specific location — London, Manchester, Glasgow, etc. Click All to show all locations.
The right panel has three sections: Roster · Today (any courses running today with delegate counts), Upcoming (next few course dates with fill-bar indicators), and This Month (revenue MTD sparkline linking to Reports). Below these, a Quick actions grid provides one-click shortcuts to New Booking, New Course, Invoices, Reports, Comms Log, and Calendar.
The left sidebar is always visible. It is divided into three groups — Operations (daily work), Growth (reports and loyalty), and Settings (configuration, visible to SuperAdmin and Admin).
| Group | Item | What it covers |
|---|---|---|
| Operations | Dashboard | Weekly overview, KPIs, recent bookings, quick actions |
| Calendar | Week/month/day view of all course dates by location | |
| Courses | All courses — create, edit, manage dates and bookings | |
| Customers | Customer accounts and booking history | |
| Login as Customer | Impersonate any customer account | |
| Bookings | All bookings across all courses, searchable and filterable | |
| Operations | IST Sessions | In-salon training sessions — list, filter, view detail |
| Operations | Comms Log | Every email and SMS sent by the platform |
| Growth | Reports | Revenue, trends, popularity, cancellations, LTV |
| Loyalty Points | Customer point balances, transaction history, adjustments | |
| Settings | Reference Data | Teachers, Sections, Types, Levels, Locations, Venues, Terminology |
| Administrators | Admin accounts and roles (SuperAdmin only) | |
| System Settings | Branding, invoice config, system config (SuperAdmin only) | |
| Email Templates | All automated email content and subjects | |
| Audit Log | Tamper-evident record of all admin actions (SuperAdmin only) |
The Command Palette is a fast keyboard-driven search across courses, customers, and bookings. Open it from anywhere in the admin panel:
Type to search — results appear as you type across three categories: Courses (by name or slug), Customers (by name, email, company, account number, or SAP), and Bookings (by booking reference). Use ↑↓ to navigate results, Enter to open, Esc to close.
Go to Courses in the sidebar. Each row shows the course title (with subtitle and URL slug below), location, price, loyalty points awarded, publication status, number of scheduled dates, and Edit/Hide actions. Filter by Section, Type, Location, Teacher, or Status using the dropdowns.
The Export button downloads the current course list as an Excel file — respecting any active filters, so you can export just the courses for one location, section, or teacher if needed.
| Status | Meaning |
|---|---|
| Visible | Published and visible in the customer catalogue |
| Enquiry | Shown in catalogue as enquiry-only — no booking button, customers submit an enquiry form instead |
| Hidden | Not visible to customers — use for courses being set up or archived |
Any course can be marked as Hidden to remove it from the public catalogue. When a hidden course has the Member Preview toggle enabled (visible on the course Create/Edit page when Hidden is selected), it becomes visible exclusively to Gold and Platinum tier customers.
These customers see the course in their catalogue with an Early Access badge — signalling that this course is available to them before it opens to the general public. All other customers do not see the course at all.
| Model | How it works | Best for |
|---|---|---|
| Per Delegate | Single fixed price per person. The default. | Most standard courses |
| Tiered / Volume | Price per head (or flat rate) changes by delegate band. Define rows: e.g. 1–2 delegates £150pp, 3+ delegates £120pp. Each tier row must be either Per Head or Flat Rate — not both. | Group bookings with volume discounts |
| Session-Based | The date is split into named sessions (e.g. AM, PM, Full Day) each with its own price, capacity, start time, and end time. Customers choose which session to book. | Half-day or multi-slot courses |
| Member Discount | Applied on top of any model. Customers with Member tier get a percentage off or a fixed amount off the standard price. | Membership loyalty pricing |
Once a course is saved, go to its Edit page and click the Dates tab to schedule specific instances. Each date has its own venue, max delegates (overrides the course default), and — for session-based courses — a list of sessions.
Each date row on the Dates tab shows a View Bookings button — this goes to the DateBookings page showing all delegates booked onto that specific date, where you can message all delegates, cancel individual bookings, and export the attendee list. When a course date has at least one survey response, a View Feedback tab also appears in the DateBookings tab bar, linking directly to the feedback results for that date.
Administrators can adjust the capacity of any course date directly from the Dates tab — no need to cancel and recreate the date.
An inline +/− control appears on the Capacity cell. Each seat added automatically promotes the next waitlisted customer. Each seat removed is prevented if it would reduce capacity below currently booked places. All changes are audit-logged as CourseDateCapacityAdjusted.
A per-session quick-adjust panel appears under each date showing capacity, booked, and available counts. Adjust individual sessions without affecting others. Cannot reduce below booked. Audit-logged as SessionCapacityAdjusted.
The customer-facing catalogue includes a keyword search input on all five catalogue views (All Courses, Section, Category, Teacher, Location). Customers type to filter courses in real time — no page reload required. The search matches against course name, subtitle, and description content.
On a session_based course set to Independent capacity mode, the customer-facing session picker shows live availability per session — calculated at the moment the page loads, not from a static counter:
When a session has zero seats remaining, its row is greyed out, the radio button is disabled, and a "Sold out" label is shown. The customer cannot select this session, but can still see it and choose a different one on the same date.
When a session has 5 seats or fewer remaining, a low-stock warning is shown alongside the session — encouraging customers to book promptly without blocking the booking.
Go to Customers in the sidebar. The list defaults to showing the 20 most recently added customers. Search by name, email, company, account number, or SAP reference. Filter by status (Active / Inactive). Each row shows: Name, Email, Company, SAP, Account No., Last Login, and View/Edit actions.
The Export All button downloads the full customer list as an Excel file — every customer record regardless of the current search or filter, with all profile fields included. Useful for CRM imports, mailing list audits, or an offline backup of your customer base.
Click View on any customer to see their full profile. The page shows a profile grid (name, email, company, phone, address, account number, SAP, VAT number, discount %, mailing list status, last login, login count), a Loyalty Points panel (Normal and IST points with recent transactions), and a full Booking history with clickable booking references.
Action buttons at the top: Deactivate (blocks login without deleting data), Impersonate (opens Login as Customer), Edit, and Search (back to list).
When a customer views a booking in their account, the Booking Detail page is split into two tabs:
The confirmation letter view: delegate names, payment method, amount, course date, venue and session (if applicable). This is the printable confirmation record.
Full course information mirroring the course catalogue page: description, teacher, duration, plus the Kit List for this course's section (what to bring), and any virtual practice notes. Printing outputs both tabs.
If a course date's venue is overridden after bookings have been taken (for example, a room change), both the customer's Booking Detail and their original confirmation page resolve the effective venue automatically using the override. An amber alert banner is shown on the customer's booking confirmation when a venue override is active, so delegates are always given the correct location.
Click Edit on the view page. The left panel has all contact fields: First Name, Last Name, Email, Company, Phone, Mobile, and full address. The right Account settings panel has: Account No., SAP, VAT Number, Discount % (applied at checkout on all purchases), Mailing list subscription, Membership Tier (Standard / Gold / Platinum), Tier Level (numeric, informational), and internal Comments. A Password reset section generates a temporary 12-character password shown once on screen.
Impersonation lets you act as a specific customer — browse the catalogue, complete bookings, and create IST sessions on their behalf. This is the primary way to create IST sessions.
Go to Login as Customer in the sidebar. Search by name, email, or company. Click Login as Customer on the result. Note the security banner: "You will act as this customer without accessing their password. All actions taken during this session are logged against your admin account."
You are taken to the Impersonation Active page showing you are "Acting as [Customer Name]". From here you can:
The page also shows the customer's current Normal Points and IST Points balances. The sidebar shows the customer name and an Exit Session button. Click End Session & Return to Admin (or use the Exit button) to finish the impersonation.
During an impersonation session for a Gold or Platinum tier customer, a third card — Private Courses — appears on the Impersonation Active page alongside Browse Courses and Create IST Sessions. Clicking it opens the Private Catalogue (/Admin/PrivateCatalogue), which lists all courses marked as Hidden with Member Preview enabled.
This allows you to view and book restricted Early Access courses on behalf of a qualifying customer — courses that are not visible in the standard public or impersonated catalogue. When you browse courses normally via Browse Courses, the Early Access courses also appear automatically for customers with Gold or Platinum tier.
Go to Bookings in the sidebar. Filter by text search (booking reference, customer name, course), date range, status, and course. Each row shows:
SB-YYYYMMDD-XXXXX (with order date below)| Status | Meaning |
|---|---|
| Confirmed | Booking confirmed and paid (card or complimentary) |
| Invoice Pending | Invoice payment — booking confirmed but payment not yet received |
| Invoice | Invoice payment — paid and confirmed |
| Complimentary | Zero-cost booking — confirmed with no payment required |
| Abandoned | Basket expired before checkout was completed |
| Expired | Basket or booking window expired |
| Cancellation Req. | Customer has submitted a cancellation request |
| Cancelled | Booking cancelled by admin or customer |
Click View on any booking row to open the full Booking Detail. This page shows all booking information: reference, order date, customer details, course and date, delegate list, and payment information. Actions available include: Send Reminder (emails and SMS all delegates), Cancel Booking, Approve/Reject Cancellation Request, Issue Refund (via Stripe for card payments), Mark Invoice Paid, Send Payment Reminder (see below), and View Course Date (jumps to DateBookings).
The Send Payment Reminder button appears on Booking Detail only when there is something outstanding to chase — an unpaid invoice (status Invoice Pending) or a deposit booking with an outstanding balance. Clicking it sends the PaymentReminder email immediately to the customer's account email, giving them a polite nudge with their booking reference and the amount due.
When enabled, eligible customers can pay a configurable deposit to secure their booking today and pay the remaining balance closer to the course date. The order is fully confirmed on deposit payment — the customer's place is guaranteed from the moment the deposit lands.
Not every booking qualifies for a deposit. The system checks automatically at checkout — customers only see the deposit option when all of the following are met:
When eligible, customers see a clear choice at checkout: pay in full now, or pay a deposit and the balance later.
From the Booking Detail page, admins can see the deposit and balance breakdown alongside the standard payment information. A Mark Balance Paid button is available for cases where balance payment was received outside Stripe (e.g. by bank transfer) — clicking this updates the balance status without a Stripe transaction.
The booking status remains Confirmed throughout — deposit bookings do not show a separate "deposit" status badge. The payment section of Booking Detail shows the split clearly.
Alongside the deposit feature, BOBSTA supports Klarna "spread the cost" instalments on card checkout. This is configured entirely within the Stripe Dashboard — no settings in BOBSTA are required. When Klarna is enabled in Stripe, it appears automatically as a payment option on the hosted Stripe checkout page alongside card payment.
| Template | Key | Sent when |
|---|---|---|
| Deposit Received | DepositReceived | Customer completes deposit payment — confirms place and states balance/due date |
| Balance Reminder | BalanceReminder | Automated reminder sent by DepositBalanceReminderJob (every 12 hours) as due date approaches |
| Balance Paid | BalancePaid | Customer or admin completes balance payment |
An In-Salon Training (IST) Session is a bespoke training session delivered at a customer's premises. Unlike standard course bookings, IST sessions are always created by an admin via impersonation — customers cannot book IST sessions themselves. IST sessions use IST Points as their payment method.
Go to IST Sessions in the sidebar. Filter by customer name/company/course, date range, created-by admin, and payment method. Each row shows: Session ID (IST-1, IST-2…), Customer (name + company), Course, Date, Delegates, Payment (e.g. 1 pts), Created By, and a View booking button.
The detail page shows two panels side by side. Session Details: Course, Date, Start time, Duration, Attendees, Educator, Delivery (In-Salon/Remote), Content type, Content notes. Customer & Payment: Customer, Company, Payment method, Points deducted, Order ID, Booking ref (IST-YYYYMMDD-XXXXX), and IST session ID.
The breadcrumb shows IST SESSIONS → [ref]. Top buttons: View Customer (opens customer view) and ← All IST Sessions.
When creating an IST session, you choose one of three payment modes:
Deducts the agreed number of IST Points from the customer's balance. The points card is shown on the confirmation screen. No email is sent — IST points mode is a silent internal transaction.
Zero-cost session — no points deducted, no payment required. Used for goodwill sessions, demonstrations, or remedial visits. No email is sent in Complimentary mode.
A currency-priced session billed externally. When confirmed, two emails are sent automatically: a customer invoice email and an admin notification to the support address. See below.
When an IST session is created in Invoice mode, the system automatically sends two emails:
Sent to the customer's account email. Template: IstInvoiceConfirmation. Contains: session details, invoice number ({InvoicePrefix}{OrderId}), amount due, your payment instructions (configured in System Settings → Invoice → IST Invoice Payment Instructions), and company contact details.
Sent to the SupportEmail address. Contains a summary table of the session details and a "View Booking in Admin" link. Logged in the Communication Log with TriggeredBy = "IstInvoiceCreated".
| Feature | Normal Loyalty Points | IST Points |
|---|---|---|
| Awarded by | Administrator (manual or bulk import) — based on commercial relationship | Admin allocation based on commercial criteria |
| Used / Deducted by | Customer at checkout (redeemed) | Admin only, via impersonation (deducted on IST session creation) |
| Expire | Yes (configurable in System Settings) | No expiry |
| Visible to customer | Yes, redeemable | Yes, read-only |
Booking Reassignment lets you move all delegates on a confirmed order item to a different future date of the same course. This is an admin-only action — customers cannot reassign their own bookings. It is useful when a customer needs to change their date after booking, or when you need to consolidate delegates from a sparse date onto a fuller one.
seats_remaining incrementedseats_remaining decrementedGo to Calendar in the sidebar. The calendar shows all course dates in your choice of Day, Week, Month, or List view — switch using the buttons at the top right. The current week range is shown below the title. Navigate with the ◀ ▶ arrows or click Today to jump to the current week.
The location pill row (All · London · Manchester · Glasgow · Northampton · Birmingham) filters which events are shown. Click a location to show only events there; click again to deselect. The All pill resets all filters. The right-hand Location key panel shows the colour assigned to each location.
Each event block shows the course name, location (with coloured dot), teacher name, and fill count (e.g. 1/20 — delegates booked out of max capacity). Events are coloured by location. A Cancelled checkbox in the top filter row toggles whether cancelled dates are shown.
Click any event to go directly to the DateBookings page for that specific date — showing the full delegate list, with options to message all delegates, cancel bookings, and export the attendee list. The right rail reminds you: "Click any event to go directly to the date management page."
BOBSTA's loyalty programme is a relationship-based reward system. Points are awarded by administrators based on a customer's broader commercial relationship with your brand — for example, a salon that achieves strong product sales revenue earns points it can spend on professional training courses. This reflects the real-world dynamic between a supplier and their trade customers: training is the reward for a strong commercial partnership.
Go to Loyalty Points in the sidebar. Search by name, email, account number, or SAP. Results show the customer name, company, account number, Normal Points balance, IST Points balance, last transaction date, and a Manage button.
Click Manage to open a customer's loyalty detail. The top shows two balance cards: Normal Points (customer-redeemable at checkout) and IST Points (admin-only, custom sessions). Below is the Adjust Points panel and the Transaction History table.
Date · Type (IST or Normal) · Amount (positive = awarded, negative = deducted/used) · Balance After · Reason · Admin who made the change. Transaction categories include: Adjustment (admin manual change), Used (redeemed at checkout), Refund (points returned on booking cancellation), and Expired (nightly expiry job).
Normal Points are awarded by administrators based on your commercial relationship with each customer. A typical example: a salon that achieves a sales target with your brand in a given quarter earns a points allocation that they can spend on training courses. The administrator awards those points manually using the adjustment panel, referencing the commercial reason (e.g. "Q2 retail performance award").
For bulk allocations — such as a quarterly points run across your entire customer base — use the Bulk Import function (Loyalty Points → Bulk Import) to upload a CSV of email addresses and point amounts, reviewing the preview before confirming.
-50 to remove 50 points).For periodic points runs — such as awarding points to a large number of customers at quarter-end — use Loyalty Points → Bulk Import. Download the CSV template, fill in the email and points columns, and upload. The system shows a preview before you confirm, allowing a final check before points are applied.
Go to Reports in the sidebar. Five tabs cover different aspects of business performance, plus a dedicated Finance Export link for accounting handover. All reports share a From / To date range filter, and the Revenue tab also filters by Payment Type and Course. Click Apply after setting filters.
Shows four summary KPI cards: Confirmed Bookings (count), Gross Revenue, Total Refunds, and Net Revenue. Below is a detailed table of every booking in the period showing: Booking Ref, Order Date, Customer, Course, Payment method, Amount, Refund, and Net. Export the full table with the Export Excel button (top right).
An interactive line chart showing booking volume and revenue over time. Identify seasonal patterns and month-over-month growth. Zoom into specific date ranges using the chart controls.
Ranks courses by number of confirmed bookings, revenue generated, and average fill rate across all dates. Helps identify which courses to expand with more dates and which may need refreshing.
All cancelled bookings in the selected period, with cancellation reason, course, and refund status. Useful for spotting courses with unusually high cancellation rates.
Ranks customers by total confirmed spend — the Lifetime Value report. Each row shows the customer, total bookings, total spend, first booking date, and most recent booking date. Useful for identifying high-value accounts for relationship management.
Go to Comms Log in the sidebar. Every email and SMS sent by the platform — whether automated or triggered manually — appears here in a unified list. Filter by Channel (Email / SMS / All), Status (Sent / Failed), Template, and Date range. The count shows total messages across pages.
Columns: Sent At (exact timestamp), Channel (Email or SMS), Recipient address/number, Customer (company name, or — if no linked account), Template name, Triggered By, Status, Error (if failed).
Go to Settings → Email Templates. The page lists all 12 system email templates showing: Template name, Template key (code), Subject line (with {{token}} placeholders), Active status, and Last Modified date/admin. Click Edit to open the template editor.
| Template name | Template key | Sent when |
|---|---|---|
| Admin — New Booking Notification | AdminNewBooking | New booking confirmed — alert to support email |
| Booking Cancellation | BookingCancellation | Admin cancels a booking |
| Booking Confirmation | BookingConfirmation | Booking confirmed (card, complimentary, or loyalty) |
| Cancellation Request Approved | CancellationApproved | Admin approves a customer's cancellation request |
| Cancellation Request Rejected | CancellationRejected | Admin rejects a customer's cancellation request |
| Course Cancellation Notice (Customer) | CourseCancellationNotice | Admin cancels an entire course date |
| Course Reminder | CourseReminder | Automated reminder before course (lead time set in System Settings) |
| Invoice Payment Received | InvoicePaymentReceived | Admin marks an invoice as paid |
| My Company (Pre-Course Info) | PreCourseInfo | Automated info email before course start |
| Password Reset | PasswordReset | Customer requests password reset |
| Refund Confirmation | RefundConfirmation | Refund issued to customer |
| Waitlist — Place Available | WaitlistNotification | Waitlisted customer is promoted when a seat becomes available |
| Booking Reassignment | BookingReassignment | Admin moves delegates to a different date — sent to each delegate and account holder |
| Survey Invitation | Survey | Automated post-course survey link sent to each confirmed delegate (SurveyJob, daily 19:00) |
| Deposit Received | DepositReceived | Customer pays deposit — confirms booking, states balance amount and due date |
| Balance Reminder | BalanceReminder | Automated reminder (DepositBalanceReminderJob, every 12h) as balance due date approaches |
| Balance Paid | BalancePaid | Customer or admin marks balance as paid |
| IST Invoice Confirmation | IstInvoiceConfirmation | Customer invoice email when IST session created in Invoice mode — shows session details, invoice number, amount due, and payment instructions |
| Payment Reminder | PaymentReminder | On-demand reminder sent by an admin clicking Send Payment Reminder on Booking Detail — for unpaid invoices or overdue deposit balances |
Total: 19 templates (12 original + BookingReassignment + Survey + 3 deposit + IstInvoiceConfirmation + PaymentReminder)
After each course date, the platform automatically sends a feedback survey to every confirmed delegate. The survey is token-based — each delegate receives a unique, one-use link that lets them complete the form without logging in. Results are aggregated and displayed in the admin Feedback section.
survey_sent = FALSE.survey_sent = TRUE so it is not processed again.Go to Settings → Feedback in the sidebar (visible to SuperAdmin and Admin; hidden from SR role). The Feedback Index shows a table of all course dates that have at least one response, with columns: Course Name, Date, Location, Teacher, Responses, Invites Sent, Average Day Rating, and Average Educator Rating.
Click any row to open the Feedback Detail page for that date.
The detail page shows results for a specific course date:
An Export Excel button is available on both the Feedback Index (exports all dates) and the Feedback Detail page (exports just that date). The XLSX file contains one row per survey response with all fields including the verbatim text answers.
When a course date has at least one survey response, a View Feedback button appears in the tab bar on the DateBookings page (alongside the Bookings and Waitlist tabs). This takes you directly to the Feedback Detail page for that date — a quick way to check results while reviewing a date's bookings.
Survey). You can edit its wording in Settings → Email Templates. Available tokens: {{DelegateName}}, {{CourseName}}, {{DateDisplay}}, {{SurveyUrl}}, {{CompanyName}}.Go to Settings → Reference Data. All reference data is on one page, organised into tabs: Teachers · Sections · Seminar Types · Levels · Locations & Regions · Venues · Terminology.
Add the Name, Instagram handle, Bio (rich text editor), and Photo Filename. The slug is auto-generated. Teachers are assigned to courses and appear on course cards and detail pages. Each teacher gets a catalogue page listing their courses.
Top-level categories (e.g. Colour, Cutting, Business). Each has a name, optional description, a hex colour used as the colour accent on course cards, and an optional Kit List — a plain-text list (one item per line) of what delegates should bring to courses in this section. The kit list appears on the customer's Booking Detail page.
Secondary classification labels (e.g. Masterclass, Workshop, Foundations). Shown as a label on course cards. Optional description.
Skill level classifications assignable to courses — allows customers to filter by experience level in the catalogue.
Cities or regions where courses run (e.g. London, Manchester, Glasgow). Each location has a name and a hex colour — this colour is used for the location filter pills on the calendar and catalogue.
The specific physical spaces within a location. Each venue has a name, full address, parent location, and optional map URL (Google Maps link). Venues are selected when adding a course date.
Eight labels used throughout the customer-facing site can be overridden here — e.g. change "Delegate" to "Student" or "Seminar" to "Workshop". Changes are cached; clear the cache by saving any terminology change.
Each tab shows an Add form at the top (e.g. "Add teacher") and a table of existing records below with Edit and Delete buttons. For Teachers, the add form includes a rich-text bio editor. Edit in-place by clicking the Edit button on any row.
Go to Settings → Administrators. Each admin row shows: Username (with You badge on your own account), Email, Role badge (SuperAdmin Admin SR), Region, Last Login, Status, and Edit/Deactivate actions. Filter by role using the dropdown at the top.
Click Edit to change a username, email, role, or region. Click Deactivate to block a user's login without deleting their account or audit history. You cannot deactivate your own account.
Go to Settings → System Settings. Three tabs: Branding (site name, URL, colours, font, logo), Invoice (company name, address, VAT number, terms), and System (operational configuration). The System tab is shown above.
| Setting | What it controls |
|---|---|
| Allow Public Registration | If Disabled, only admins can create customer accounts. The Register link is hidden from the customer site. |
| Account Number Required | If Enabled, customers must enter an account number when registering. |
| Show SAP Field | If Enabled, the SAP reference field is shown on customer registration and edit forms. |
| Reminder Lead Hours | Hours before a course to send the automated delegate reminder (e.g. 48 = 2 days before). |
| Pre-Course Info Lead Hours | Hours before the course start to send the pre-course info email (e.g. 48). |
| Refund Notice Days | Days' notice a customer must give for a refund to be auto-approved. |
| All Refunds Require Approval | If Enabled, all refund requests go to admin regardless of the notice period. |
| Basket Reservation (mins) | How long a basket holds seats before they are released (e.g. 20 minutes). |
| Waitlist Hold Hours | How long a promoted waitlist place is held before the next customer is tried (e.g. 24 hours). |
| Auto Cancel Enabled | Enables the AutoCancelJob. When Disabled the job runs but does nothing. |
| Auto Cancel Mode | WarnOnly — sends a warning to the support email and stops. AutoCancel — cancels the booking automatically after the threshold. |
| Auto Cancel Lead Hours | Hours after the booking was made before the auto-cancel warning is triggered for unpaid invoices. |
| Auto Cancel Min Bookings | Minimum number of bookings on a date before the auto-cancel warning triggers. Prevents warnings on lightly-booked dates. |
| Loyalty Expiry Month Day | The day of the month on which the LoyaltyExpiryJob processes expirations (runs nightly, acts on this day). |
| Invoice Payment Mode | Controls how invoice payments are handled at checkout — Request (customer requests, admin approves) or Automatic. |
| Deposits Enabled | Master toggle for the deposit payment feature. Default OFF. Enable when ready to offer deferred-balance payment to customers. |
| Deposit Minimum Amount | The minimum order total for a booking to be eligible for deposit payment. |
| Deposit Amount | The fixed deposit amount charged upfront (or configured as a percentage — check your settings). |
| Deposit Lead Days | Minimum days between today and the course date for a booking to qualify for deposit payment. |
| Balance Due Days Before Course | How many days before the course date the balance must be paid. |
| IST Invoice Payment Instructions | Free-text payment instructions shown on every IST Invoice Confirmation email — typically your bank account details, BACS reference format, and payment terms. Found in the Invoice tab of System Settings. |
| Xero Sales Account Code | The Xero chart-of-accounts code applied to every transaction in a Xero CSV Finance Export. Found in the System tab. |
| QuickBooks Sales Account | The QuickBooks account name applied to every transaction in a QuickBooks CSV Finance Export. Found in the System tab. |
Click Save System Settings (top right of each tab) to apply changes.
Four settings in the Invoice tab support your Privacy Policy and Cookie Policy pages — both of which are generated automatically from these values:
| Setting | What it controls |
|---|---|
| Company Name | Your registered business name — appears throughout the Privacy Policy and Cookie Policy. |
| Company Address | Your registered business address — shown as the data controller's address on the Privacy Policy. |
| Data Controller Name | The legal entity or individual responsible for customer data under GDPR — shown on the Privacy Policy's "who controls your data" section. |
| Privacy Contact Email | The email address customers use to exercise their data rights (access, deletion, correction) — shown on the Privacy Policy. |
The customer-facing site includes a cookie consent banner — shown to first-time visitors at the bottom of the page, with an Accept button. Once accepted, a browser cookie (sb_cookie_consent) remembers the choice and the banner does not reappear. No admin configuration is needed beyond the four settings above.
Two policy pages are generated automatically and linked from the customer site footer's Policies column:
Go to Settings → Audit Log. Entries are shown newest first. Each row shows: Timestamp, Admin User (who performed the action), Action (badge), Record Type, Record ID, Details (plain-English description), and an IST column flag for impersonation-related actions.
Filter by: Admin User (dropdown of all admins), Action Type (e.g. Login, ImpersonationStarted, BookingCancelled), Record Type (e.g. Customer, ImpersonationSession), Date From / Date To, and an IST ONLY checkbox to show only impersonation-related entries. Click Filter to apply; Clear to reset.
| Action type | What happened |
|---|---|
| Login | Successful admin login |
| ImpersonationStarted | Admin started impersonating a customer — IST badge shown |
| ImpersonationEnded | Impersonation session ended (shows reason: AdminExited) |
| BookingCreated | Booking made (during impersonation: flagged with IST badge) |
| BookingCancelled | Booking cancelled by admin |
| LoyaltyAdjustment | Points manually adjusted — includes reason text |
| CourseEdited | Course settings or pricing changed |
| AdminCreated | New admin account created |
| SystemSettingsChanged | A system setting was modified |
The audit log is append-only — entries cannot be edited or deleted. It provides full accountability for all admin actions, supporting GDPR compliance, dispute resolution, and internal governance. If anything unexpected happens on an account, check the audit log first.
The platform runs background jobs continuously while the application is running. They handle time-sensitive operations automatically. Understanding what they do — and when — helps you anticipate platform behaviour and diagnose anything unexpected.
Expires abandoned baskets after the Basket Reservation period (configured in System Settings, default 20 min). Releases held seats back to the course and triggers waitlist promotion if places become available.
Checks for course dates within the Reminder Lead Hours window. Sends the CourseReminder email and SMS to each delegate, and one summary to the account holder. Sent once — the job records each send to prevent duplicates.
Checks for courses starting within the Pre-Course Info Lead Hours window. Sends the PreCourseInfo email template to all confirmed delegates. Email only (no SMS). Use this template for joining instructions, what to bring, parking details, etc.
When a confirmed booking is cancelled or a basket expires, this job notifies the next customer in the waitlist queue using the WaitlistNotification email. The promoted place is held for Waitlist Hold Hours (System Settings, default 24h). If they don't book, the next customer is tried.
Expires Normal loyalty points older than the configured threshold. Records an Expired transaction in each affected customer's loyalty history. Customers can see their expiry history in their Loyalty Points tab on the customer site.
Checks for invoice bookings with payment outstanding beyond the auto-cancel threshold. Sends a warning to the support email address only — it does not cancel automatically. A human must take action. Only active when AutoCancelEnabled is true in System Settings.
Finds all confirmed bookings with an outstanding balance where the balance due date is approaching and a reminder has not yet been sent. Sends the BalanceReminder email to the customer with a direct link to their Booking Detail page to complete payment. Only active when DepositsEnabled is true in System Settings.
Finds all course dates that ended before today where survey_sent = FALSE. For each eligible date, creates a unique token per confirmed delegate and sends the Survey email with a personalised one-use link to the feedback form at /survey/{token}. Marks each date as survey_sent = TRUE so it is not processed again on subsequent runs.
| Trigger | Delegate (email+SMS) | Account holder | Support email |
|---|---|---|---|
| Booking Confirmation | Each delegate | Once per order | Once (AdminNewBooking) |
| Course Reminder (automated) | Each delegate | Once per customer | — |
| Pre-Course Info | Email only | — | — |
| Booking Cancellation | Each delegate | Once per order | — |
| Waitlist Promotion | — | Yes | — |
| Auto-Cancel Warning | — | — | Yes |
| Message All Delegates (manual) | Email + SMS | Once per customer | — |
| Booking Reassignment notification | Email (each delegate) | Once per order item | — |
| Survey invitation (automated, SurveyJob) | Email (each delegate) | — | — |
| Deposit Received confirmation | — | Yes (account email) | — |
| Balance Reminder (automated, 12h job) | — | Yes (account email) | — |
| Balance Paid confirmation | — | Yes (account email) | — |
| IST Invoice Confirmation (Invoice mode only) | — | Yes (account email) | — |
| IST Invoice Admin Notification (Invoice mode only) | — | — | Yes (SupportEmail) |
| Payment Reminder (manual, admin-triggered) | — | Yes (account email) | — |
| Shortcut | Action |
|---|---|
| Cmd K / Ctrl K | Open the Command Palette from anywhere in the admin panel |
| ↑ ↓ | Navigate results in the Command Palette |
| Enter | Open the highlighted Command Palette result |
| Esc | Close the Command Palette without navigating |
These {{token}} placeholders are substituted with real values when emails are sent. The tokens available for each template are listed on the template's Edit page.
| Token | Value inserted |
|---|---|
| {{CourseName}} | Course name |
| {{BookingReference}} | Booking ref (SB-YYYYMMDD-XXXXX) |
| {{DateDisplay}} | Formatted course date |
| {{CourseTime}} | Start time |
| {{SessionName}} | Session name (session-based courses) |
| {{VenueName}} | Venue display name |
| {{VenueAddress}} | Full venue address |
| {{VenueMapUrl}} | Google Maps link |
| Token | Value inserted |
|---|---|
| {{CustomerName}} | Customer account name |
| {{DelegateName}} | Individual delegate's name |
| {{TotalAmount}} | Total booking value |
| {{PaymentMethod}} | Card / Invoice / Loyalty Points |
| {{SiteUrl}} | Base URL of the site |
| {{BookingDetailUrl}} | Direct admin link to the booking |
| {{SupportEmail}} | Configured support email address |
| {{CompanyName}} | Your company name (from Settings) |
| Token (Reassignment only) | Value inserted |
|---|---|
| {{OldDateDisplay}} | The original course date (before reassignment) |
| {{NewDateDisplay}} | The new course date (after reassignment) |
| {{PriceNote}} | Optional admin note about price handling |
| Token (IST Invoice only) | Value inserted |
|---|---|
| {{InvoiceNumber}} | Auto-generated invoice number ({InvoicePrefix}{OrderId}) |
| {{InvoiceAmount}} | Total amount due for the IST session |
| {{SessionDate}} | Date of the IST session |
| {{PaymentInstructions}} | Configured in System Settings → Invoice → IST Invoice Payment Instructions |
| Token (Survey only) | Value inserted |
|---|---|
| {{SurveyUrl}} | Unique one-use link to the delegate's feedback form |
| Token (Pre-Course Info only) | Value inserted |
|---|---|
| {{BookingUrl}} | Direct link to the delegate's Booking Detail page — {SiteUrl}/Account/BookingDetail/{bookingRef} |
| Feature | SR | Admin | SuperAdmin |
|---|---|---|---|
| Dashboard, Calendar, Reports | ✅ | ✅ | ✅ |
| View & manage Bookings | ✅ | ✅ | ✅ |
| Create & edit Courses and Dates | ✅ | ✅ | ✅ |
| View & manage Customers | ✅ | ✅ | ✅ |
| Login as Customer (Impersonation) | ✅ | ✅ | ✅ |
| Create IST Sessions | ✅ | ✅ | ✅ |
| Loyalty Points management | ✅ | ✅ | ✅ |
| Communication Log & Email Templates | ✅ | ✅ | ✅ |
| Reference Data | ✅ | ✅ | ✅ |
| Survey Feedback results | ❌ | ✅ | ✅ |
| Member Preview & Early Access courses | ✅ | ✅ | ✅ |
| System Settings | ❌ | ❌ | ✅ |
| Manage Administrators | ❌ | ❌ | ✅ |
| Audit Log | ❌ | ❌ | ✅ |
| I want to… | Go to… |
|---|---|
| Find a booking by reference number | Command Palette (Cmd K) → type the ref |
| See who is booked on a course today | Dashboard → Roster · Today (right rail) |
| Email all delegates on a specific date | Courses → Edit → Dates tab → View Bookings → Message All Delegates |
| Check if a customer received their confirmation | Comms Log → search by their email |
| Create an IST session for a customer | Login as Customer → find customer → Login → Create IST Sessions |
| Add or remove loyalty points | Loyalty Points → Manage (next to customer) → Adjust Points |
| Clone a course for a new term | Courses → Edit → Clone Course button |
| Change the booking confirmation email wording | Settings → Email Templates → BookingConfirmation → Edit |
| Add a new training location | Settings → Reference Data → Locations & Regions → Add |
| Add a new teacher | Settings → Reference Data → Teachers → Add teacher |
| Review what an admin has been doing | Settings → Audit Log → filter by Admin User |
| See all outstanding invoice bookings | Bookings → filter Status = Invoice Pending |
| Check fill rates across all upcoming dates | Dashboard → Upcoming (right rail) or Calendar view |
| Download a delegate list for a course date | Courses → Edit → Dates → View Bookings → Export CSV |
| Move delegates to a different date | Bookings → View → Reassign Date button (confirmed bookings, non-session-based) |
| View course feedback / survey results | Settings → Feedback → click course date row |
| Export all survey responses to Excel | Settings → Feedback → Export Excel (all dates), or open a date and Export Excel |
| Mark a deposit balance as paid (offline payment) | Bookings → View → payment section → Mark Balance Paid |
| Enable deposit payments | Settings → System Settings → Deposits Enabled → Enable |
| Add a kit list to a course section | Settings → Reference Data → Sections tab → Edit section → Kit List field |
| See what a customer needs to bring to a course | Customer sees it on Account → Booking Detail → Course Details tab |
| Give a Gold/Platinum customer early access to an unpublished course | Courses → Edit → check Hidden → enable Member Preview → Save |
| Book an Early Access course on behalf of a Gold/Platinum customer | Login as Customer → find customer → Login → Private Courses card |
| Create an IST session billed by invoice | Login as Customer → Create IST Sessions → select Invoice mode → confirm |
| Update IST invoice payment bank details | Settings → System Settings → Invoice tab → IST Invoice Payment Instructions |
| Export confirmed transactions for Xero / QuickBooks | Reports → Finance Export → choose format → download |
| Send a one-off payment chase for an overdue invoice or balance | Bookings → View → Send Payment Reminder |
| Download all customers / all courses as Excel | Customers → Export All, or Courses → Export |
| Populate the Privacy Policy and Cookie Policy pages | Settings → System Settings → Invoice tab → Company Name, Company Address, Data Controller Name, Privacy Contact Email |