Search Documentation

Find sections across all documentation pages

Widget Settings

Configure your booking widget to match your brand and business requirements. All settings can be updated at any time.

Appearance Settings

Primary Color

The main brand color used for buttons, CTAs, and interactive elements. If your brand color is blue (#0066CC), set this as your primary color so all booking buttons match your website.

Button Text Color

The color of text displayed on primary buttons. Use white (#FFFFFF) for dark primary colors, or dark text for light primary colors.

Border Radius

Controls the roundness of buttons and input fields (0-32px): 0px = sharp corners, 8px = slightly rounded, 16px = rounded, 32px = pill-shaped.

CTA Text

The call-to-action text displayed on the main booking button. Defaults to "Book Appointment" if not set. Also used as the default button text in the Button Trigger embed mode.

Tip: The widget settings page includes a live preview that updates in real-time as you adjust colors and border radius.

Booking Policies

Cancellation Fee

Dollar amount charged if customer cancels within the notice period (e.g., $25). Requires "Require Payment Method" to be enabled — otherwise the field is disabled, the fee is cleared to $0 on save, and no fee line is shown to guests in the booking widget.

Cancellation Notice (Hours)

Minimum hours of advance notice required to cancel without penalty. Typical values: 24-48 hours.

Late Arrival Policy (Minutes)

Maximum minutes late before appointment may be cancelled. Common value: 15 minutes.

Maximum Booking Window (Days)

How many days in advance customers can book. Set to 90 for 3 months advance booking.

Features & Requirements

Require Phone Number

When enabled, customers must provide a phone number during booking. Recommended for appointment confirmations and reminders.

Require SMS Verification

Sends an SMS code to verify the customer's phone number before allowing booking. Helps prevent spam and no-shows. Requires "Require Phone Number" to be enabled.

Require Payment Method

Collects credit card information to hold the appointment (no charge until service). Reduces no-shows significantly. Also gates the Advanced Deposit and Cancellation Fee settings — disabling it disables those fields and auto-disables an enabled deposit.

Show Prices

Displays service prices in the widget. Disable if you prefer to discuss pricing during the appointment.

Show Only Consultations

Filters services to show only consultation-type appointments. Useful if you want to limit online booking to initial consultations.

Show Subcategories

Displays service subcategories in the service selection step for better organization.

Show Providers

When enabled, adds a provider/therapist selection step to the booking flow. Customers can choose a specific provider or select "Any Available" for the next opening.

Show Add-Ons

Allows customers to add additional services or enhancements during the booking process.

Require Marketing Consent

Adds a checkbox for customers to opt-in to marketing emails. Helps build your email list compliantly. You can customize the consent text using the "Marketing Consent Text" field.

Two exceptions. First, on a data-form-onlylead-capture embed the checkbox is still shown but does not block submission — there is nothing being purchased in that mode, so agreeing to marketing texts is not made the price of getting in touch. The guest's answer is still recorded if they tick it.

Second, consent is recorded per location. A guest who stays signed in while switching to another of your locations is asked once more there, on a step already filled in with their details. That prompt does not hold them up either — they have already verified — but their answer is recorded if they tick it. A guest going through the booking steps from the start still has to tick it.

Marketing Consent Text

Custom text shown next to the marketing consent checkbox. Use this to describe what customers are opting into.

Verification Method

Choose between SMS or email verification for new guests. SMS sends a code to the guest's phone via Twilio. Email sends a code to the guest's email via Resend. Existing guests are verified based on which contact info matches their Zenoti record.

Guests only enter a code once per visit. If your locations are grouped together in one organization, a guest who verified at one of them stays signed in when they move to another — whether they switch in the location picker, or open a different location's widget on another page of the same site, in the same browser tab. They may be asked for a new code again if they move to a location outside your organization, open a new browser tab, visit a different website, switch device, come back after about 30 minutes, or if the new location's system cannot match their record.

Offer Code

When enabled, displays an optional text field on the booking confirmation screen where guests can enter a promo or referral code. The entered code is included in webhook payloads as offerCode.

Transaction Consent Language

Custom legal language displayed during the booking confirmation step. Use this for terms the customer must agree to when completing a booking.

Deposits & Gift Cards

Advanced Deposit

When enabled, collects a deposit amount at the time of booking. The deposit is charged immediately and applied toward the final service cost. Requires "Require Payment Method" to be enabled; turning payment collection off automatically disables this too.

Advanced Deposit Amount

The dollar amount to collect as a deposit (e.g., $50). Only applies when Advanced Deposit is enabled, which in turn requires "Require Payment Method".

Gift Card URL

Link to your gift card purchase page. When set, a gift card link is displayed in the widget for cross-promotion.

Promotions

Show Promo Banner

Displays a promotional banner at the top of the widget. Use this to highlight special offers or seasonal promotions.

Promos

A list of promotional messages to rotate in the promo banner. Add multiple promos to cycle through different offers.

The promotion a guest picks from this list becomes the Promo: line on the Zenoti appointment note and on the guest's Zenoti profile note, copied exactly as you typed it here — see what BookerKit writes to your Zenoti appointments.

Name the offer, not the treatment

Because the title is copied exactly, a promotion you call “Semaglutide Special” or “HRT Consult” puts that treatment name onto the appointment note and onto the guest's profile note, where it sits alongside their clinical record and is visible to anyone who can open the profile. “Spring Refresh” or “New Guest Offer” attributes the booking just as well without naming what the guest is being treated for.

Webhooks

Available on the Growth and Enterprise plans for Zapier, CRM, and other integrations.

Webhooks send HTTP POST requests to your specified URL when booking events occur. Use this to integrate with your own systems.

Webhook URL

The endpoint where webhook events will be sent. Must be a valid HTTPS URL.

Booking Start Webhook

Triggered when a customer completes Step 1 (personal information). Useful for tracking booking intent and capturing leads early in the funnel.

Booking Complete Webhook

Triggered when a booking is successfully completed. Use this to update your CRM, send confirmation emails, or trigger other automations.

booking_started Payload

Sent when a guest submits their personal info and begins the booking flow.

{
  "event": "booking_started",
  "timestamp": "2025-01-15T14:25:00.000Z",
  "data": {
    "sessionId": "abc123...",
    "email": "customer@example.com",
    "firstName": "Jane",
    "lastName": "Doe",
    "phone": "(555) 123-4567",
    "accountName": "your-salon",
    "serviceCategory": "Hair Services",
    "mode": "booking",
    "tracking": { ... }
  }
}

mode is always present. On booking_started it is either booking or form_only; on booking_completed it is always booking, since a lead-capture embed never reaches a confirmed booking. A form_only payload came from a data-form-only lead-capture embed — the guest gave their details but is not booking an appointment, so branch on this before any appointment-related automation. Note that mode reflects which embed the visitor loaded; it is not an authenticated claim, so treat it as routing context and never gate payment, deposit, or record-changing automations on it alone.

Re-capture your webhook trigger before you deploy this

mode is new. A GoHighLevel inbound-webhook trigger locks its field list to the first payload it received, so on any workflow that was already live mode arrives on the wire but will not appear in your field picker — you cannot select it in a condition or a filter until you delete the trigger and re-capture a sample. Do that before deploying a data-form-only embed on the same widget.

booking_completed Payload

Sent when a booking is fully confirmed in Zenoti.

{
  "event": "booking_completed",
  "timestamp": "2025-01-15T14:30:00.000Z",
  "data": {
    "sessionId": "abc123...",
    "bookingId": "zenoti-booking-id",
    "reservationId": "zenoti-reservation-id",
    "value": 85.00,
    "serviceId": "service-123",
    "serviceName": "Haircut",
    "serviceCategory": "Hair Services",
    "date": "2025-01-15",
    "startTime": "14:30",
    "firstName": "Jane",
    "lastName": "Doe",
    "email": "customer@example.com",
    "phone": "(555) 123-4567",
    "accountName": "your-salon",
    "offerCode": "SUMMER2025",
    "mode": "booking",
    "addOns": [
      { "id": "addon-1", "name": "Deep Conditioning", "price": 25.00 }
    ],
    "tracking": {
      "utm": {
        "source": "google",
        "medium": "cpc",
        "campaign": "summer-promo",
        "term": "haircut near me",
        "content": null
      },
      "click_ids": {
        "gclid": "abc123...",
        "fbclid": null,
        "fbc": null,
        "fbp": null,
        "msclkid": null
      },
      "referral": {
        "source": "google",
        "referrer": "https://www.google.com",
        "landing_page": "https://yoursalon.com/book"
      }
    }
  }
}

The tracking object is automatically included when session tracking data is available. It contains UTM parameters, ad platform click IDs (Google, Facebook, Microsoft), and referral information captured when the customer first loaded the widget. The offerCode and addOns fields are included only when applicable.

Email Notifications

Notification Email

Email address where booking notifications and system alerts will be sent.

Send Booking Start Email

When enabled, sends an email notification when a customer begins the booking process (completes Step 1).

Send Booking Complete Email

When enabled, sends an email notification when a booking is successfully completed.

Contact Information

Support Email

Displayed in the widget for customer support questions. Also used for error notifications.

Support Phone

Phone number shown in the widget for customer support.

Privacy Policy URL

Link to your privacy policy. Displayed in the widget to ensure compliance with data protection regulations.

Terms of Service URL

Link to your terms of service. Shown during the booking process.