Let visitors book appointments from any page
The book-appointment template gives visitors a real calendar grid + slot picker, right inside your floating message. They pick a time, fill in their details, and walk away with a confirmation email + a calendar invite. You see every booking in your dashboard. Here's the full setup.
Create the message
In the FloatMessage dashboard, click New Message and pick the Book Appointment template. Give it a name like "30-min discovery call" or "Strategy session" — visitors won't see this, but you'll thank yourself if you ever run more than one booking widget.
Set your slot length and buffer
In the Content & Usage tab, choose how long each appointment is (15, 30, 45, 60, 90, or 120 minutes) and whether to add a buffer afterward (useful if you need time to reset or write up notes between visitors).
Define your weekly hours
Toggle each weekday on or off, then set the open and close times. Hours are in your timezone — set explicitly in the Owner timezone dropdown. Visitors see slots in their own local time (the embed converts).
- Days you don't check show as closed in the calendar — visitors can't pick them.
- You can later block specific dates (holidays, conferences) without changing your weekly hours.
Configure the booking window
Two knobs control how far in advance visitors may book:
- Earliest lead time — how close to "now" visitors may book. Set this to 1 hour if you don't want surprise meetings starting in 5 minutes.
- Future window — how far ahead they may book. 30 days is a good default; tighten it if your schedule shifts a lot.
Add custom fields (optional)
By default visitors fill in name + email. Click + Add field to ask anything else: a phone number, a one-line "What would you like to discuss?", a company name. Each field has a name, label, type (text / email / phone / long text), and a required toggle.
Set up confirmations and notifications
Three toggles in the Confirmation and Notifications sections:
- Email me at — owner notification address. Every booking pings this inbox with the visitor's details and a one-click reply-to address.
- Webhook URL — optional. We POST a JSON payload of every booking to this URL. Hook it up to your CRM, Slack, or Zapier.
- Show .ics download / provider links — control whether the visitor success view offers Google / Outlook / Office 365 deep links and a universal
.icsdownload. Both default on.
Save, embed, and test
Hit Save. The message becomes live on every page where the FloatMessage embed script is loaded (subject to your URL/device/geo targeting). Run through it yourself with a test email and confirm:
- The slot list matches your weekly hours.
- The confirmation view shows the .ics + provider buttons (if enabled).
- You receive the owner notification email.
- The booking appears in Dashboard → Appointments.
Manage bookings in the dashboard
The Appointments page is a month-grid calendar with daily booking counts. Click a day to see the booking list — visitor name + email, slot range, message name, and any custom fields they filled. From there you can copy their email, hit Email to open a mailto: draft, or Cancel the booking (which frees the slot back up so someone else can grab it).
Listen for bookings in JS
After a successful booking, the embed emits an appointment_booked event. Useful for tracking conversion in GA4, Tag Manager, or your own analytics:
FloatMessage.on("appointment_booked", function (detail) {
// detail = { messageId, bookingId, slotStart, slotEnd }
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "appointment_booked",
bookingId: detail.bookingId,
slotStart: detail.slotStart,
});
});