The numbers on your dashboard, the events sent to ad platforms and webhooks, and the attribution data that travels with them.
Also called:bookerkit_booking_started
A dataLayer event fired when a visitor completes the personal-information step. It is the earliest strong intent signal worth handing to ad platforms. Its firing rule is different from — and later than — the booking_started event BookerKit stores and sends to webhooks.
Where you'll see it: Google Tag Manager, GA4, or whatever reads your dataLayer
Also called:bookerkit_widget_opened
A dataLayer event fired when the widget loads or its trigger button is clicked. It goes to your site dataLayer only — it is not stored as a booking event and it does not feed any dashboard funnel number.
Where you'll see it: Google Tag Manager, GA4, or whatever reads your dataLayer
The number of distinct sessions that reached the booking funnel — meaning the session recorded a booking start, a completed booking, or a staff-marked recovery. Browsing services or times is not enough on its own. It is the denominator of your conversion rate. A session counts here even when no start was ever recorded — a returning guest restored straight into the flow enters through their completion instead — so this figure will not line up with the number of start webhooks you received, in either direction.
Where you'll see it: Dashboard → Analytics
Also called:booking_completed
The event fired once an appointment is confirmed. It is the primary conversion signal to give ad platforms, and it is what marks a session as Booked in the dashboard. The dataLayer version carries hashed email and name so ad platforms can match the conversion to a click.
Where you'll see it: Your dataLayer and webhook receiver; Dashboard → Analytics
Not to be confused with
- booking_recovered — booking_completed means the guest booked in the widget; booking_recovered means staff booked them some other way.
- Booking / Appointment — The event is the signal BookerKit sends; the appointment is the record sitting in Zenoti.
Also called:booking_recovered
The record created when staff manually mark an abandoned session as recovered, because the guest ended up booking by phone, walk-in, or follow-up instead. It is always a manual dashboard action and never happens automatically. A session cannot be both completed and recovered — marking an already-completed session as recovered is rejected.
Where you'll see it: Dashboard → the session detail, via Mark as Recovered
Not to be confused with
- booking_completed — Recovered is staff-entered and manual; completed is what the widget records on its own.
Also called:booking_started
The safety-net lead capture. It is written at guest-lookup time — before the guest has verified with a code and before they exist in Zenoti — deliberately early and unverified so a lead survives a later failure or outage. It does not fire when the entered phone and email belong to different people; that mismatch case is silent by design. It is also not written for returning guests who are auto-recognized, which is why it cannot serve as the conversion denominator.
Where you'll see it: Your webhook receiver; the activity timeline on a guest profile
Not to be confused with
- bookerkit_booking_started (dataLayer event) — The dataLayer event fires later, after personal info; this one fires at lookup, before verification.
- Booking Starts — This event misses some engaged sessions entirely, so its count sits below the Booking Starts metric.
- Webhook — This is the event; the webhook is the delivery of it to your CRM.
Also called:gclidfbclidfbcfbpmsclkid
The identifiers ad platforms attach to a click: gclid for Google, fbclid plus the fbc and fbp cookies for Meta, and msclkid for Microsoft. They are stored with the session and forwarded in the webhook payload, so your CRM can report the conversion back to the platform that produced it.
Where you'll see it: Webhook payloads, under tracking.click_ids
Not to be confused with
- UTM parameters — A click ID identifies one exact click; UTMs describe the campaign it came from.
Sessions that completed a booking online, plus sessions staff marked as recovered, divided by all sessions with any booking-flow activity, shown to one decimal place. Each session is counted once and completed takes precedence over recovered, so the figure can never exceed 100%. It is a session rate rather than a per-person rate: one guest who books, cancels, and rebooks creates two sessions and affects it twice.
Where you'll see it: Dashboard → Analytics
Not to be confused with
- Booking Starts — Booking Starts is the denominator of this rate, not a separate measure of it.
Also called:deposit_collecteddeposit_pendingdeposit_faileddeposit_gift_card_minted
The records BookerKit writes around a deposit charge. deposit_collected is written only after the server itself confirms a successful charge — never on the browser's word — and carries the amount; deposit_pending, deposit_failed, and deposit_gift_card_minted cover the in-flight, failed, and gift-card-funded cases. Deposits appear per session in a guest timeline, not as one guest-level total.
Where you'll see it: The activity timeline on a guest profile
Not to be confused with
- Deposit — The deposit is the money; these events are the audit trail of what happened to it.
Also called:BookedRecoveredIncompleteAbandoned
A badge reflecting only the guest's most recent session: Booked if that session completed a booking through the widget, Recovered if staff marked it recovered, and Incomplete if neither. Because it looks at the latest session alone, an older completed booking does not keep it green. A guest who is mid-booking right now still shows Incomplete — the guests table has no in-progress state, and only their activity timeline reveals what is happening. Note that the filter chips above the table call this same group Abandoned, so Incomplete and Abandoned are two names for one status.
Where you'll see it: Dashboard → Guests table
Not to be confused with
- Has Booked — Has Booked is all-time; this badge is only ever about the most recent session.
- New guest vs. Existing guest — The New/Existing badge is fixed at first sync; this one changes with every visit.
The page a visitor arrived from, simplified into a readable name such as Facebook, Google, or Direct. When a utm_source is present it takes precedence over the referring domain, so a visit arriving from Facebook tagged utm_source=newsletter is reported as the newsletter.
Where you'll see it: Dashboard → Analytics traffic breakdown
Not to be confused with
- UTM parameters — The referrer is inferred from the browser; UTMs are added by you, and they override it.
Also called:utm_sourceutm_mediumutm_campaignutm_termutm_content
The campaign tags read from the page URL when the widget loads and stored with that session: utm_source, utm_medium, utm_campaign, utm_term, and utm_content. They are how a booking gets attributed to a specific campaign rather than just a channel.
Where you'll see it: Dashboard → Analytics breakdowns; webhook payloads
Not to be confused with
- Referrer / Source — UTMs are tags you deliberately add; the referrer is what the browser reports on its own — and utm_source wins when both are present.
- Click IDs — UTMs are your own campaign labels; click IDs are the ad platforms' identifiers for one specific click.
An automatic POST that BookerKit sends to a URL you configure, typically GoHighLevel, when a booking starts or completes. The payload carries the event type, timestamp, booking details, and tracking information including UTMs, click IDs, and referrer. The two triggers toggle separately, so you can send completions only if starts are too noisy.
Where you'll see it: Widget Settings → Webhooks
Also called:X-Bookerkit-Signature
Every outgoing webhook is signed with your account webhook secret, and the signature travels in the X-Bookerkit-Signature header. Your receiver can recompute it to confirm the request genuinely came from BookerKit and was not forged or altered in transit.
Where you'll see it: The headers of every webhook request you receive
Not to be confused with
- Webhook — Signing does not change what is sent; it only proves who sent it.