Contacts and the meeting lifecycle
Bookly keeps a contact for every person who books, joins a waitlist or fills a routing form: one row per email per workspace, with a name, company, phone, tags, free-form notes, a follow-up date and a stage (lead → active → won → lost). Everything that happens with that person lands on the contact's timeline: bookings and their answers, confirmations, cancellations and reschedules, completed meetings and no-shows, every email Bookly sent, form answers, notes and stage changes.
Admin → Contacts lists everyone (search, filter by stage), and each contact page shows the timeline, upcoming meetings and the editable details. Booking rows link to the attendee's contact. A first completed meeting moves a lead to active automatically; the other stages are yours to set.
The inbox#
Admin opens on the Inbox: today's meetings with their briefings and join links, booking requests to accept (or answer by email instead, which withdraws the request), contacts to follow up (a due follow-up date, or a lead that has been quiet for a week; snooze pushes it out a week), your open tasks with overdue ones flagged, and a note when people are waiting on a waitlist. Members see their own bookings; owners and admins see the workspace.
Executing the outcome#
- Proposal / Payment request / Follow-up buttons on a contact page send a templated email (edit the templates under
Admin → Settings; placeholders{name} {company} {host} {amount} {payLink} {bookingUrl}). A payment request with Stripe configured includes a Checkout link for the amount. All three set the next follow-up date so the inbox nudges you again; the inbox's "Follow up" link opens the contact with the follow-up composer ready. - CRM sync (
Admin → Settings → CRM sync): with a HubSpot private-app token or a Pipedrive API token, contacts and stage changes are mirrored to the CRM and meeting summaries and sent proposals become notes on the CRM contact. Sync is best-effort and never blocks a booking. - Webhooks and API:
contact.created,contact.stage_changed,meeting.capturedandtask.createdevents, plusGET/POST /api/v1/contactsandGET /api/v1/tasks, let any other tool react to what happens in Bookly.
Pre-meeting briefing#
Every upcoming booking has a briefing for the host: who the person is, what happened before (last meeting, open threads, no-shows), what they asked for in the booking questions, and what to prepare. Open it from Admin → Bookings → Brief or from the contact page; it is also included in the host's reminder email closest to the meeting.
With ANTHROPIC_API_KEY set (model via ASSISTANT_MODEL, default claude-sonnet-5) the briefing is written by the assistant from the contact's timeline. Without a key it is a plain, deterministic summary of the same facts, so nothing depends on the model. Briefs are cached for a day and can be regenerated.
Auto-capture#
Event types on Bookly video, and on Google Meet, Teams and Zoom when the notetaker is configured (docs/integrations.md), can transcribe the call: set Auto-capture to Ask the attendee when booking (a checkbox on the booking form) or Always (a notice on the booking form, in the confirmation email and in the calendar invitation; booking is the agreement). Either way the booking stores the consent and when it was given (capture_consent, capture_consent_at), the notetaker posts a notice in the meeting chat when it joins and to each person who joins later, and everything the assistant writes from the transcript is labelled AI-generated in the admin. Consent law differs by place (all-party consent in several US states and most of Europe); the terms make the host responsible for it. On Bookly video both sides see a notice in the call, transcription starts by itself once you and the attendee are both in the room, and Daily transcribes with speaker labels (the meeting page also streams the live lines to Bookly so speakers are named). On Meet, Teams and Zoom a notetaker bot joins the call instead, announced in the confirmation email, and streams the transcript to Bookly as people speak. Either way, when the call ends you get a "Transcript ready" email. When the assistant is configured, the transcript becomes a recap on the booking page: summary, whether the call covered what the client asked for when booking, decisions and action items for both sides with the transcript moment they came from, open questions, objections and risks, a next step, a stage suggestion and a follow-up draft. Every item is one click: create the selected tasks, move the stage, send the follow-up. New recaps show under "Recaps to review" in the inbox and arrive by email with the highlights. Open action items carry over into the next session's briefing. A recap for the attendee (neutral summary, decisions, who does what by when) can be edited and sent from the same page; untick action items you would rather keep internal. Attendees see on their manage page that the call is transcribed and can delete the transcript themselves. Without the assistant, the transcript can still be read, deleted, or used as the source for manual capture.
In cloud mode auto-capture is a Pro feature with a monthly budget of transcribed minutes (Pro 300 per workspace; Team 300 per member, pooled across the workspace); the budget shows under Billing, and transcription simply does not start once it is used up. Transcripts are deleted after the retention period (90 days by default; settings.capture.retentionDays), summaries and tasks stay. Bookly video needs a paid Daily plan (transcription billed by Daily per participant minute); external calls need a Recall.ai account (billed per bot hour).
After the meeting: capture#
On a booking's page (Admin → Bookings → Notes), paste your notes or a transcript and press Capture. With the assistant configured it extracts a summary, decisions, action items with due dates (yours and theirs), a next step, a stage suggestion and a follow-up email draft; without it, your notes become the summary and every line starting with - becomes a task. Tasks live on the booking and the contact, can be completed or removed, and an overdue task is nudged once by email (and text, if enabled). A clear outcome moves the contact's stage (won / lost / active). The follow-up draft can be edited and sent from Bookly with your address as reply-to; it lands on the timeline like every other email.
Proposals, payment requests and follow-ups#
From a contact's page, Proposal, Payment request and Follow-up open a form prefilled
from the workspace templates (Settings → Proposal, payment and follow-up emails) with the
placeholders filled in; {bookingUrl} in a follow-up becomes a link to your booking page.
Edit freely, then Preview email shows the exact branded message the contact will receive,
with the recipient and subject; nothing is sent until you confirm. A payment request creates a
Stripe Checkout link for the amount when you send, and the email carries a Pay button. Every
send lands on the contact's timeline and sets a follow-up date.
These are commercial emails from the host, so each one carries the workspace's postal address
(Settings → Postal address; set it before sending, CAN-SPAM requires it) and an unsubscribe
link, plus List-Unsubscribe / List-Unsubscribe-Post headers so Gmail and the like show their
own unsubscribe button. A contact who unsubscribes (contacts.email_opt_out) is marked on their
page and in the inbox, the composer refuses to send, and a timeline note records it; a host can
opt them back in on request, or opt someone out who asked in person. Booking confirmations and
reminders are unaffected, the attendee asked for those by booking.