Search Documentation

Find sections across all documentation pages

Zenoti Notes: What BookerKit Writes to Your Appointments

What BookerKit records in Zenoti when a guest books through the widget: the booking note, the guest profile note, and what is never sent.

Nearly every booking made through your widget arrives in Zenoti with a short note attached — the exceptions are covered under When Each Note Is Written. The note tells your team how the booking happened: which promotion it came from, which code it arrived with, whether a deposit was part of the booking, and where the visitor came from. It is a few plain lines of text in a fixed format that BookerKit builds — three of those lines carry wording you or your campaign links supplied, which is covered below — so nobody has to open another tool to see where an appointment came from.

What Is Sent

The note is up to five lines. The first line is always there. Every other line appears only when there is something to show, so most notes are shorter than this one:

Booked online via BookerKit
Promo: Spring Refresh
Code (from link): SUMMER25
Deposit required: $50
Source (from link): google / spring-refresh
  • Booked online via BookerKit — always present. It marks the appointment as one that came from your widget rather than from the phone or the front desk.
  • Promo — the promotion the guest picked from the promo list in your Widget Settings.
  • Code (from link)— the campaign code the booking arrived with, set on the embed code for that page. The “from link” label is part of the line: it tells whoever reads the chart that the wording came in with the visit rather than from BookerKit or from your staff.
  • Deposit required — the deposit amount the booking was made under.
  • Source (from link) — the traffic source recorded for the visit, and the campaign name when one was recorded with it. Labelled for the same reason as the Code line.

Most campaign pages show a Code line and no Promo line

The Promo line only ever carries a promotion title from the list you built in Widget Settings. BookerKit matches the promotion in play against that list and sends its own copy of the title, so nothing typed elsewhere can put different wording on the line.

A promo title written into the embed code — which is what the embed generator in your dashboard produces — pre-selects a promotion without the guest choosing anything. If that title exactly matches one in your promo list, it produces a Promo line the same as a guest pick would. If it matches nothing on the list, it changes the banner the guest sees and produces no Promo line.

A campaign landing page advertising an offer that is not in your promo list will therefore produce a Code line and no Promo line. That is expected, not a missing note. Worth knowing the other way round too: if a landing page's data-promo-title matches a promotion in your list, that title reaches the appointment note and the guest profile note with nobody selecting it — so the naming advice below applies to embed-supplied titles as much as to guest-chosen ones.

The Source line is campaign tags only

Source comes from the utm_source and utm_campaign tags on the link the guest clicked, and from nothing else. BookerKit does not fill it in from the site the visitor came from — an untagged visit, including one arriving from a Google search, simply produces no Source line at all. Every word on that line was written by whoever built the link, which is why keeping guest details out of your campaign tags matters below.

When Each Note Is Written

There are two notes, and they are written at different moments.

  • The booking note goes onto the appointment at the moment the appointment is confirmed. Nearly every widget booking gets one — the exception is a booking BookerKit cannot match back to the guest who made it, which confirms normally and simply arrives with no note. That is rare and self-correcting, and it is expected for a short window right after a BookerKit release.
  • The guest profile noteis added to the guest's record right after the booking finishes, and only when a promotion or a campaign code was involved. It carries the same text. It is written once per booking, so a guest who refreshes the page or retries does not end up with the same note twice.

If Zenoti reads the note and rejects it, BookerKit confirms the appointment again without it: the booking still goes through and still shows on your calendar, it simply arrives with no note attached. That second attempt only happens for a clean rejection of the note itself. If the confirm fails for another reason, what the guest is told depends on whether BookerKit knows the outcome:

  • Zenoti answered and refused — the booking failed, and the guest is told to try again, the same as any other booking failure.
  • Zenoti never answered (the request timed out or the connection dropped) — the appointment may or may not have been created, so the guest is told not to resubmit, and to contact you if no confirmation arrives. If somebody asks your front desk about one of these, check the calendar before rebooking — telling them to try again is how a guest ends up with two appointments.

Deposit required is the booking's terms, not a payment status

Deposit required: $50means the booking was made under your widget's deposit setting and a $50 deposit was part of its terms. It does not mean the deposit is unpaid, and it is not updated after the deposit is charged. The line reads the same before and after payment.

To see whether the money actually landed, check the invoice in Zenoti. That is the only place payment status lives.

Where to Look in Zenoti

Going by Zenoti's own documentation, the booking note travels with the appointment, so it should be visible wherever you open the appointment itself. The guest profile note is filed as a "Booking" note on the guest record, alongside any other notes your team has added there.

Not yet confirmed in every Zenoti setup

We have not yet verified exactly which screens show these notes in every Zenoti setup. Check your appointment view and your guest profile view, and tell us if they are somewhere else so we can correct this page.

What Is Never Sent

The note is built from your own settings and the link the guest arrived on. BookerKit never adds:

  • The guest's name, email address, phone number, or date of birth. Those reach Zenoti as the guest record, the way they always have, and never as part of a note.
  • The service that was booked, or the provider it was booked with.
  • Health information of its own. BookerKit never reads the guest record, the service, or anything clinical, and never puts any of it in a note. The one thing to know is that the Promo line is the title you wrote for that promotion, so if you name a promotion after a treatment, that name is what appears — see below.
  • Anything the guest typed into the widget. That includes an offer code entered during booking, which never appears in the note.
  • Promo wording that is not on your own promo list. A title supplied by embed code produces a Promo line only when it exactly matches a promotion in Widget Settings, and the line always carries BookerKit's copy of your title rather than the supplied text.
  • A campaign code from an earlier visit. Only the code this particular booking arrived with is used.

Three lines carry wording you wrote

The Promo lineis the promotion title from your Widget Settings, copied exactly. It only ever comes from your own promo list — nobody can inject a different one — but it is your wording, so a promotion you named “Semaglutide Special” or “HRT Consult” puts that name on the appointment note and on the guest's profile note. The appointment already names the service that was booked, so that note adds nothing new; the guest profile note is the one to think about. If you would rather a treatment name not sit on a guest profile, name the promotion after the offer instead of the product — “Spring Refresh”, “New Guest 50”.

The Code and Source lines are the campaign code set on your embed and the campaign tags on the link the guest clicked. BookerKit checks both for shape only — allowed characters, allowed length, and a rejection of anything holding an email address or a long run of digits — and never for what they otherwise say. That last check removes the two shapes a stray merge tag actually produces, but it is not a guarantee: other wording your pages or ad links put there goes into the note exactly as written. That is why both lines are printed with the (from link) label — anyone can edit a campaign tag or a landing page before clicking through, so the chart says where the wording came from rather than leaving staff to assume BookerKit or a colleague wrote it.

Campaign tags must be single words. A utm_source or utm_campaign value containing a space produces no Source line at all. Use the token forms your ad platform already emits — spring-refresh-2026 or spring_refresh_2026, not Spring Refresh 2026 — or the booking is simply recorded without a source. Be clear about what that rule does and does not do: it keeps a space-separated sentence off the note, but dots, hyphens and underscores are allowed, so deposit-waived-per-owner still reaches the chart. No character rule can tell an instruction from a campaign name, and the Code line takes the same wording with no link tag involved at all — the (from link)label on both lines is what tells a reader not to take them as BookerKit's words.

So the promise above is about what BookerKit adds on its own. Keep guest details out of your campaign codes and campaign tags, choose promotion titles you are happy to see on a guest profile, and the note stays clean. The promo code guidance in the Embedding Guide covers what is safe to put there.

For how campaign codes get onto a page in the first place, see the Embedding Guide. For the developer view of the same integration — the Zenoti calls behind these notes — see the Zenoti API reference. For the terms used above, see the Glossary.