Platform DocumentationCalendars & Booking

Calendars & Booking

Sidebar: Capture → Calendars

Module: Scheduling — Free, Plus and Prime.

A calendar publishes a booking page. Visitors pick a day, then a time, fill in their details and are confirmed by e-mail — and they become contacts in your base. A calendar can also charge for the appointment through Stripe before confirming it — see Charging for bookings.

Your plan caps how many calendars you may have, and includes a monthly booking allowance (Free 20, Plus 400, Prime unlimited). Bookings no longer cost Flights.

Going past the allowance never turns a visitor away — your pages keep accepting bookings. FlyB records the overage and e-mails the account owner, and this screen shows a banner from 80% of the month’s allowance onwards. See Plans → Monthly allowances.

Two screens per calendar

Every calendar has two screens, each with its own menu on the left:

  • The calendar’s dashboard — what opens when you click a calendar in the list: its appointments, its analytics and its history. See Managing bookings.
  • The editor — Edit calendar on the dashboard (or Manage calendar in its menu, or the pencil in the list): every setting of the calendar, one short section at a time.

Setting up a calendar

The editor’s menu groups the settings in four blocks:

GroupSections
CalendarGeneral information · Location & contact · Booking page · Booking form
AvailabilityHours · Booking rules · Time off · Blocked slots
NotificationsConfirmation e-mail · WhatsApp · Reminders
Team & integrationsTeam · CRM · Google Calendar

Moving between sections never loses what you typed: every section edits the same calendar, and Save calendar (or Ctrl + S / ⌘ + S) saves all of them at once. The menu tells you where things stand before you save:

  • an amber dot marks a section with changes not saved yet;
  • a red dot marks a section with something that stops the save — a calendar with no name, an in-person calendar with no address. Saving takes you straight to it;
  • small counters show what is in each section — the number of weekly rules (a ! while there are none, because the booking page has nothing to offer), the time-off periods still ahead, the blocked slots, the active reminders, the responsible members.

Discard puts every section back the way it was at the last save.

General information

FieldWhat it does
Calendar name and descriptionShown on the booking page
Active calendarAn inactive calendar takes no bookings. Appointments already booked still stand

Location & contact

FieldWhat it does
Appointment typeIn-person (requires an address) or Remote
AddressShown on the booking page and in the confirmation e-mail
Contact / cancellation phoneShown on the booking page

For a remote appointment with Google Calendar connected, a Google Meet link is generated automatically for each booking and sent in the confirmation e-mail. Until it is connected, this section says so and takes you to Google Calendar in one click.

Booking page

SettingWhat it does
Show the organization’s social networksOff by default. On, the booking page shows the icons of the profiles registered in Settings → Social media, each opening in a new tab — beside the agenda on a computer, under it on a phone, and on the confirmation screen after the booking. The section previews exactly the icons that will appear
Show “Powered by FlyB” badgeThe line under the booking page. On by default; removable on Plus and Prime
PaymentRequire payment to confirm the booking, the price it charges and how long a time is held while a payment clears. Shown while Sales with Stripe is on. See Charging for bookings

Only web addresses (https://…) become icons; anything else in the list is left out.

Booking form

The booking form always asks for the guest’s name and phone (required), their e-mail (optional — required on a remote calendar, because the meeting link travels by e-mail, and on a calendar that charges for the booking, because the receipt and the confirmation go there) and notes. On a calendar that confirms or reminds on WhatsApp it also asks for the guest’s consent to WhatsApp messages. The section lists them first, so you do not add a question the form already asks.

Below them go your custom questions: extra fields, each with a label, a type (free text or a list of options), a required flag and a placeholder. Answers are stored on the contact’s custom fields, keyed by the label.

Ask only for what you will actually use — every extra field costs conversion.

Charging for bookings

Module: Sales with Stripe — Plus and Prime.

A calendar can require a payment through Stripe before the booking is confirmed. In the editor, under Calendar → Booking page, switch on Require payment to confirm the booking and pick the price it charges — one of your own plans and prices, grouped by plan. Only prices already integrated with Stripe and not archived can be picked. The menu marks the section Paid while it is on.

It needs three things, and the section says which one is missing, with a link to fix it:

  • a Stripe account connected under Settings → Apps & Connections;
  • a FlyB plan that includes checkout (Plus or Prime);
  • at least one price integrated with Stripe.

The payment goes to your own Stripe account, exactly like a sale from a pricing table, and the order and the payment are recorded in Orders & Payments.

What the guest sees

  1. The booking page shows the price beside the calendar’s details, before any time is picked.
  2. They choose a day and a time and fill in the form as usual. The e-mail is required: the receipt and the booking confirmation go there.
  3. Continue to payment registers them as a contact of your organization right away — a guest who never pays is still a lead your team can follow up — and opens Stripe’s secure checkout for that price, with their e-mail already filled in. Payment started fires at this moment in the CRM entry events and the message automations.
  4. Paid by card, the booking is confirmed on the spot, and the page they come back to says so — with the Meet link of a remote appointment.

Opening the payment page reserves nothing: a guest who looks at the price and leaves does not take the time from anybody. The payment page expires after about 30 minutes. A guest who comes back without paying can resume the same payment or choose another time, with their details still filled in.

The checkout opens in the same browser window, also when the booking page is embedded in your site — Stripe does not run inside a frame. If the site does not allow it, the page shows a Go to payment button.

Payments that clear later (boleto)

A boleto is generated at the checkout and paid at the bank later. From the moment the guest generates it, the time is reserved for them for the hours set in Hold the time while the payment clears — 48 by default, from 1 hour up to 30 days. While it is held, the booking page offers that time to nobody else, and the guest’s page shows until when it is theirs, with a link to the boleto.

  • Paid within the hold — the booking is confirmed.
  • Paid after the hold — the booking is confirmed if the time is still free.
  • Not paid — the time goes back on the booking page when the hold ends (or at once, when Stripe reports the boleto expired unpaid).

When the booking is confirmed

The booking only exists once Stripe confirms the payment, and everything a booking triggers happens at that moment, never at checkout: the confirmation e-mail and the WhatsApp confirmation, the calendar’s CRM stage, the Appointment booked entry events and automations, the Google Calendar event and the reminders. The guest is booked on the time they chose, even if the calendar’s minimum notice or hours changed while the payment cleared — only a time already past is refused. If the calendar was switched off after they paid, the paid booking is still made.

In the calendar’s dashboard, a booking paid this way carries a Paid badge.

Because the payment page reserves nothing, two people can pay for the same time, and a boleto can clear after its hold ended and somebody else booked. FlyB never books one time twice: that payment is marked Paid — needs a new time, and an e-mail goes both to your team — the calendar’s responsible members, or the owner and admins when it has none — and to the guest, who is told your team will get in touch. The calendar’s dashboard shows an alert until it is dealt with, in one of two ways, both in its Payments section:

  • Book a new time opens the booking page with the guest’s details filled in. The booking you make there is paid with the money the guest already paid: they are not charged again, and the payment becomes Paid and booked, with the new time.
  • Mark as handled, when you settled it another way — a refund in your Stripe dashboard, say. Nothing about the money changes; the payment just stops asking for attention.

When two guests pay for the same time with boleto, the first to generate theirs holds it. The second is still waiting for their payment, without a reservation: if it clears while the time is free, the booking is confirmed; if not, it becomes a payment that needs a new time.

Bookings that do not charge

  • Your team. The booking page opened from FlyB by a member who may edit calendars — New booking on the calendar’s dashboard, or booking for a contact — offers Book without online payment: the guest is on the phone, or pays at the counter.
  • The API. A booking made by an integration is the organization’s own, and is confirmed without the online payment.
  • Rescheduling. A paid booking moves like any other, and the payment stays with it.

Cancelling a paid booking does not refund it — refunds are made in your Stripe dashboard, and the cancellation dialog says so before you confirm.

If a calendar still charges but can no longer take payments — Stripe disconnected, the price archived or deleted, the plan downgraded — its booking page says online booking is unavailable and takes no booking, instead of taking free ones. The editor shows which of the three walls is in the way.

A calendar with payments still in progress — a checkout open, a boleto that can still clear — or with a payment that needs a new time cannot be deleted: deleting it would take those payments with it, and with them any way of telling the guest what happened. Switch it off instead (it stops taking bookings), or delete it once its payments are settled.

Time zone

Every calendar has an IANA time zone — the clock its availability is written on. This is the single most important setting on the screen, which is why it sits at the top of Availability → Hours, above the rules it governs.

  • Times you register are read on the calendar’s clock.
  • Visitors see them converted to their own, and the booking page lets them switch between “establishment time” and “your time”.
  • starts_at and ends_at are always exact instants, so nothing is ambiguous.

Changing the time zone re-reads every registered hour on the new clock. Appointments already booked keep the exact moment they were confirmed for — check the upcoming ones after saving.

Availability

Availability is a set of weekly rules, under Availability → Hours. Each rule names the days of the week, a start and end time, the duration of an appointment and the interval between appointments. Overlapping rules are refused.

Booking rules

The two ends of what a visitor can book, side by side:

SettingWhat it does
Minimum noticeHow soon a visitor can book. No time starting sooner than this, counted from now, is offered — with 4 hours, a visitor opening the page at 10:00 is offered 14:00 onwards. One tap for no minimum, 1, 2, 4, 12, 24 or 48 hours, or type any number of hours up to 720
Booking windowHow far ahead slots are offered, in days

New calendars start with 4 hours of minimum notice. Calendars created before the setting existed keep no minimum, exactly as they behaved until then, until you change it.

Both are availability rules, not presentation ones: they decide which times exist for a visitor at all — on the booking page, on the API and behind team distribution links alike. The section spells out, in one sentence, from when to when a visitor opening the page right now can book, and warns you when a notice as long as the whole window would leave nothing to offer.

Slot presentation

How the free slots of a day are offered to the visitor. It sits under Availability → Booking rules, and the weekly rules warn you — with a link straight to it — when a rule is marked as priority while the presentation ignores priorities:

ModeBehaviour
All slots of the dayEvery free slot
Sequential ascendingOne slot per day: the earliest still free
Sequential descendingOne slot per day: the latest still free
Priority slots firstPriority slots are offered alone; the others only appear once no priority slot is left that day

Sequential modes are how you fill a day compactly instead of scattering two appointments across eight hours. Priority is a flag on each availability rule, and only the “priority first” mode reads it.

The presentation rule applies to what is offered, never to what can be booked: a hidden slot is a real opening, and the API can bypass the rule.

Vacations and time off

Inclusive date ranges that generate no slot at all, even where a weekly rule applies. Use them for holidays, breaks and any interval you will not be available.

Blocked slots

A month of the slots your rules generate. Click any slot to block that specific date and time; click it again to restore it. This is the exception mechanism for one-off changes.

Checked again at the moment of booking

A booking page can be left open for hours. When the guest finally confirms, the time they picked is checked against the calendar as it is now: a vacation added since, a slot blocked since, rules that no longer produce that time, a time that has slipped inside the minimum notice or out of the booking window — any of them turns the booking down. With Google Calendar linked, Google is asked again at that moment too, so a commitment you added to your Google Calendar after the guest opened the page turns it down as well. The guest is then taken back to the month, refreshed, with everything they typed still in the form, and told to pick another time.

An appointment that sits between your slots — one you dragged to 16:10 in Google Calendar, or one booked before you changed the duration of your rules — blocks every slot it overlaps, so nobody can be booked on top of it.

Team & integrations

Team

Responsible members — everyone checked is copied on every confirmation and cancellation, and gets the calendar’s reminders in their Inbox. In the Inbox, the calendar’s appointments — booked, moved, cancelled, reminded — are shown only to its responsible members; a calendar with nobody checked belongs to the whole team. The contact record shows every appointment with the members responsible for it. One of them can be crowned the lead owner of the contacts a booking creates.

The crown is at most one person, and it only ever applies to contacts a booking creates — a returning guest keeps the owner they already had. The first member you check gets it automatically; checking more members never moves it, and if the contacts should stay unassigned, click the crown to take it off. While there are responsible members but no crown, the section says so. Removing somebody from the responsible members also removes the crown, so nobody can end up silently owning new leads from a calendar they are no longer on.

Who can manage the calendar. The organization’s owner and admins can change any calendar. Every other member — even with permission to edit calendars — can change only a calendar that names them among its responsible members, or one that names nobody (it then belongs to the whole team): its settings, reminders and Google Calendar link, and deleting it. On anybody else’s calendar the list shows a lock instead of the edit and delete buttons, and the calendar opens on its dashboard only. Booking on it, rescheduling and cancelling its appointments are not “managing” it — they still follow the Calendars permission (and, for a member who sees only their own contacts, only their contacts’ appointments). Unchecking yourself from the responsible members of a calendar you are not an admin of hands it to them: the section warns you before you save.

When a member is removed from the organization, they are taken off every calendar’s responsible members (and its crown) automatically, so they stop receiving its e-mails.

CRM

The funnel and stage every booking on this calendar files its contact into. You can create a new stage without leaving the section.

Notifications

Everything the guest receives, under Notifications in the editor’s menu: the confirmation e-mail, the optional WhatsApp confirmation, and the reminders on either channel.

Always sent

  • A confirmation e-mail with the date, the place and a calendar invite, on every booking and every reschedule
  • A “Reschedule or cancel” button that opens the calendar with the appointment already selected
  • A copy to the responsible members — also when the guest left no e-mail address (it is optional on an in-person calendar): the team still hears that somebody booked

The confirmation e-mail cannot be turned off.

Language of the e-mails

The confirmation, the reminders and the cancellation notice go out in Portuguese or English, chosen per person:

  • The guest reads the language of their phone’s country: a number from a Portuguese-speaking country — Brazil (+55), Portugal (+351), Angola (+244), Mozambique (+258), Cape Verde (+238), Guinea-Bissau (+245), São Tomé and Príncipe (+239) or Timor-Leste (+670) — gets Portuguese, any other country code gets English. A guest with no phone on file gets the organization’s language.
  • The responsible members’ copy is in the language of the organization’s own country (Portuguese for the countries above, English otherwise), whatever language the guest’s copy is in.

When the guest and the team read the same language and the same clock, the team’s copy is a blind copy of the guest’s e-mail; otherwise each side gets its own.

E-mail instructions

Free text highlighted in the confirmation and in every reminder, and carried into the calendar invite — “Fast for 8 hours before the exam”, “Bring your ID”. Set it under Notifications → Confirmation e-mail.

WhatsApp confirmation

With a WhatsApp number connected, a calendar can also confirm every booking and every reschedule on the guest’s WhatsApp — beside the confirmation e-mail, never instead of it. It is off by default: a template message is paid per send and lands on the guest’s phone, so it is your decision.

Switch on Send the confirmation on WhatsApp and pick the template it sends. The list groups your templates by number, and the message goes out from the number the chosen template lives on, to the phone the guest typed on the booking page. A reschedule confirms the new time; editing a booking without moving it confirms nothing again.

Don’t have a template yet? Create confirmation template opens the template wizard: the template manager opens in a new tab with a ready-made confirmation — its text, the samples Meta reviews it with, what each variable means and the free service message — already filled in, in the language you use FlyB in. Review it, submit it, and it comes back already selected here. A template still in review can be picked straight away; until Meta approves it, each booking is recorded in the history as not sent, with that reason.

Which message the guest actually gets is decided when it is sent, as everywhere else: the free service message if they wrote to you in the last 24 hours, the approved template otherwise.

On a number linked through WhatsApp Web there are no templates. Under such a number the list shows your automation messages instead — the messages of your message automations; a rule with no trigger is the natural place to keep one — and the one you pick is sent as written, with its {{booking.*}} variables describing this appointment and its buttons written out under the words. No approval and no 24-hour window apply; only the guest’s consent, below, does.

When all your numbers are linked through WhatsApp Web, the button beside the list is Create confirmation message instead: it opens Message automation in a new tab with a new rule already written — no trigger (the calendar is what sends it), the confirmation text with its {{booking.*}} variables and a Reschedule or cancel button. Review it, save it, and it comes back already selected here, on the number you picked; save the calendar to start using it.

WhatsApp messages about a booking — the confirmation and the reminders — only go to a guest who agreed to receive them. Whenever a calendar sends either one, its booking form asks:

I agree to receive confirmations and reminders of my booking from your business on WhatsApp at this number. I can cancel anytime.

The box is unticked by default and booking never depends on it. A guest who confirms without ticking it gets one more chance: a window explains what the reminders are for, with Confirm with reminders on and Confirm without reminders. Either one books.

  • Agreed — the confirmation and the reminders go out on WhatsApp as configured.
  • Did not agree — the e-mails go out as usual and nothing reaches their WhatsApp. Each WhatsApp message that was therefore not sent is in the calendar’s history, with the reason.
  • Changing their mind — the page every booking e-mail links to (the one used to reschedule) shows WhatsApp reminders: on / off with a one-tap switch, both ways. It takes effect from the next message, and the history records when they changed it.

The question is only asked when the calendar actually writes on WhatsApp — a confirmation or a reminder with a template (or an automation message), a plan that includes WhatsApp and a number connected. A guest who booked while it was not asked has not agreed, so switching WhatsApp on later does not reach them. Bookings made before this question existed keep receiving what they did. Your team, booking for a contact on the same page, answers the question on their behalf.

Reminders

Up to 10 reminders per calendar, each sent a chosen amount of time before the appointment — by e-mail, on WhatsApp, or both. Each reminder has:

SettingWhat it does
Send beforeHow long before the appointment
Internal nameOnly you see it
Send notification by e-mailOn by default — the reminder e-mail, with its reschedule-or-cancel button
Send notification on WhatsAppOff by default. Pick the template it sends, or create one with Create reminder template, exactly as for the confirmation — or, on a number linked through WhatsApp Web, the automation message it sends (Create reminder message writes one, when all your numbers are WhatsApp Web). Only guests who agreed to WhatsApp receive it
Move the contact after sendingOptionally move them to a CRM stage once the reminder goes out — once, on whichever channel gets there first
Copy the responsible membersUseful for the one right before the appointment. The copy is an e-mail, so it needs the e-mail channel on

A reminder is one moment on up to two channels: the two are sent, retried and recorded independently. A failed e-mail is retried on the next minute; a WhatsApp message Meta refused is not, because each refused attempt is also written into the guest’s conversation and Meta’s refusals do not heal by asking again — the history says why it did not arrive. A reminder with both channels switched off sends nothing, and the editor says so.

When a reminder’s moment comes, it also brings the guest back to the Inbox of the calendar’s responsible members — of the whole team, when the calendar names nobody — and only theirs: the person rises to the top of their queue and into their Pending, with the time left until the appointment on the card, and a pop-up opens on whatever screen they are on, to join the meeting, reschedule, cancel or open the conversation. That happens even when the guest could not be reminded — no e-mail address, no WhatsApp consent — because that is the guest somebody should confirm by hand. When the reminder did reach the guest, their conversation also carries a reminder card — the calendar, the appointment’s date and time, the channels it went out on and the Google Meet link when there is one; with several reminders, only the latest is shown, saying how many went out. The CRM move happens once per reminder, on whichever channel gets there first.

A reminder only reaches bookings made before its moment — a booking taken inside the window skips it, and the history says so. The editor tells you how many of your upcoming bookings each reminder will actually reach, and suggests a shorter offset when the answer is none.

A reminder the day before and another an hour before is what cuts no-shows the most.

The appointment in a WhatsApp message

The wizard’s templates are filled from {{booking.*}} — the appointment the message is about: the one being confirmed, or the one a reminder counts down to. That is not always the contact’s next appointment (somebody with an appointment tomorrow and another in three weeks gets a reminder about the right one), and its date and time are written on the guest’s own clock, like the confirmation e-mail. See Variables.

Google Calendar

Linking a calendar to a Google Calendar does four things:

  • Times already busy on Google are hidden from your booking page — and checked again the moment a guest confirms
  • Every confirmed booking becomes an event with the contact’s details
  • What you do to those events in Google comes back to FlyB: delete one and the appointment is cancelled, move one and it is rescheduled (see below)
  • Remote appointments get a Google Meet link automatically

Connect it under Team & integrations → Google Calendar in the editor. You can disconnect at any time from the same section, or revoke access directly in your Google account. Existing events stay on Google; FlyB simply stops syncing.

Changes made in Google Calendar

The patient calls to cancel and you delete the appointment straight from your phone’s Google Calendar: with Apply changes made in Google Calendar on (the default), FlyB does the rest. The appointment is cancelled here too, exactly as if it had been cancelled on the dashboard — the time is free again on the booking page, the reminders stop, and the cancellation’s automations and Lead Score rules run. Drag the event to another time instead, and the appointment is rescheduled to that time: the reminders follow it.

Done in Google CalendarWhat happens in FlyB
Event deleted (or moved to another of your calendars)Appointment cancelled — by Google Calendar in the history
Event moved to another time or dayAppointment rescheduled to that time — by Google Calendar in the history
Event moved onto a time another appointment already holdsBoth are kept: FlyB mirrors the double booking you made rather than leaving the moved one at a time that is no longer true
Title, description, duration or guests editedNothing — the appointment keeps its own details
Event turned into an all-day eventNothing — the appointment keeps its time

Only appointments still ahead are ever touched — tidying up last month in Google never rewrites your history — and only through the events FlyB created. Your own events are never changed; they only block times.

Tell the guest (on by default) decides whether the guest hears about it the way they would had you made the change in FlyB: the cancellation e-mail, with its Book a new time button, or the confirmation of the new time — also on WhatsApp where the calendar confirms there. Off, the change is applied without writing to the guest; the responsible members still get their copy of a cancellation, and your message automations for a cancelled booking still run. A change FlyB only learns about more than a day after you made it — the first sync of a calendar linked before this feature existed, for instance — is applied quietly: the time is freed and the reminders stop, the history records it, but nobody is written to and no automation runs, because the guest has most likely been told already.

Google itself may offer to e-mail the guest when you delete or move an event that has them as a guest. If you usually let it, switch Tell the guest off so they do not hear it twice.

Switching Apply changes made in Google Calendar off stops it at once. Switching it back on applies what you do from then on: what you deleted or moved while it was off stays as it is in FlyB.

How fast. Google tells FlyB the moment an event changes, so the cancellation usually lands within seconds. FlyB also checks your Google Calendar by itself every few minutes, and always right before sending a reminder — so even if a notification from Google is lost, no guest is ever reminded of an appointment you deleted. The section shows when Google was last checked and whether instant updates are active, and Sync now checks immediately.

Also block times from other calendars

Under Also block times from these calendars, switch on any other calendar of the same Google account — your personal calendar, a shared family one — and its busy times hide slots too. Up to 10. FlyB only reads when they are busy; events are created only on the calendar picked above.

On every one of them, an event marked Free in Google (Show as: Available) and an invitation you declined never block a time — only what Google itself counts as busy does.

When the connection stops working

If Google stops accepting FlyB’s access — you revoked it in your Google account, or it expired — your Google appointments would stop blocking times without anybody noticing. So the section shows Reconnect, and the calendar’s responsible members (or, with nobody named, the organization’s owner and admins) get one e-mail saying the connection stopped and what that means. Reconnecting takes a minute and picks up where it left off.

What FlyB reads from Google

Busy/free time ranges of the linked calendar and of the ones you add above — and, to notice what happened to the events it created, the identifier, status, start time and last-change time of events that change on the linked calendar. Never the titles, descriptions, locations or attendees of your own events, and nothing about an event FlyB did not create is kept. FlyB only ever modifies or deletes events it created itself. Full detail is in the Privacy Policy → Google user data.

The booking page

Served at a public URL you can copy, open, embed in a landing page or hand out directly. The visitor picks a day on the month grid first, then a time.

On a phone, tapping a day opens a panel from the bottom of the screen with that day’s times grouped into morning, afternoon and evening, the time zone they are shown in, and two buttons: Change date and Confirm, which becomes available once a time is chosen. The visitor can step to the previous or next available day without closing it. On a computer or tablet the times stay on the page with the calendar, as before.

The times offered respect the calendar’s booking rules: nothing inside the minimum notice, nothing past the booking window. When today has no time left that far ahead, the page simply opens on the next day that does — and when the current month has no time left at all (late in the month, a long minimum notice, time off), the page opens on the first month ahead that does, within the booking window. The visitor can still step back to the current month. A reschedule link always opens on the month of the appointment being moved.

With Show the organization’s social networks switched on, the page also carries your profiles’ icons — see Booking page.

Bookings can be rescheduled or cancelled by the guest through the link in their e-mail. Cancelling asks for a reason — required, because it is what tells your team whether to offer the freed time to someone else. Before confirming a cancellation, the page offers rescheduling instead.

The browser tab shows the calendar’s name, and so does the preview a chat app builds when the link is pasted into a conversation — with the calendar’s description and your company’s logo beside it.

The page carries a discreet “Powered by FlyB” line under the card. On the Check-in (Free) plan it is always there; on Plus and Prime, switch off Show “Powered by FlyB” badge under Calendar → Booking page in the editor to remove it. See Plans, Flights & Limits.

The link accepts name, phone, email and an answer to any custom question (cf_<question>), so a system that already knows who it is sending can open the page with the form filled in:

https://.../c/<calendar-id>?name=Ana&phone=11987654321

phone is accepted in either shape — with the country’s dial code (?phone=5511987654321) or without it (?phone=11987654321). Both reach the same number: a number sent without one is read against your organization’s country, and one that already carries it is not given a second copy. Add country_code when the number belongs to another country and does not spell it out.

slot opens the page on one time, straight on the form, with that time already chosen — it is how FlyB’s own Book this time and a suggestion’s Confirm arrive (see below). The page first checks that the time can still be booked — free, outside the time off and the minimum notice, inside the booking window — and, when it no longer can, says so and shows that day’s other times. The time does not have to be one the presentation rule is offering: the rule decides what guests are shown, not what can be booked.

Booking for someone who asked you to

Not everybody books online. When a customer phones, or asks for a time over WhatsApp, take the booking for them: New booking, on the Bookings tab of the contact record, or the calendar button beside the message box in the Inbox (also under + Actions in its panel). Both open the team’s agenda:

  • On the left, every calendar of your organization — not only the ones you are responsible for: the front desk books the doctor’s diary. A calendar that is switched off is listed but cannot be picked, because its page is not being served.
  • On the right, one day of the chosen calendar, opening on today: arrows from day to day, Pick a date, and Next free time. Every time the calendar’s hours lay out on that day is listed with how long it lasts and what it is — Booked (with the guest’s name and phone), Awaiting payment, Busy on Google Calendar, Blocked on this calendar, Time off, Minimum notice, Already past — or free. The free times your booking page is offering right now carry a ★ Preferred; the others are still free, and you can take any of them.

Pick a free time and press Book this time: the booking page opens in a new tab on that time, straight on the form, with the contact’s name, phone, e-mail — and the answers they already gave to that calendar’s extra questions — filled in. When the contact already has an appointment on that calendar, Reschedule to this time moves it there instead. In the Inbox, Suggest this time sends the person the time — or up to five — in a message, and books the one they pick with a click: see Suggesting a time. Each calendar keeps the wording of that message, which whoever sends it can edit.

It is the ordinary booking page, not a shortcut past it: the time off, the minimum notice, the booking window and the required questions all still apply, and the appointment lands on the contact you started from instead of creating a second one.

If the contact already has an appointment coming up, the agenda says so — with the date and which calendar — before you choose. It does not stop you: a second appointment is often exactly what they are asking for. It just must not be a surprise.

A member who sees only their own contacts sees A teammate’s contact on the times held by somebody else’s leads: the time still reads as taken, without the name.

On a calendar that charges for the booking, the page also offers you Book without online payment, under the payment button: the appointment is confirmed at once and the payment is handled outside FlyB. It is offered to members who may edit calendars, on the browser where they are logged in to FlyB.

A booking page opened by somebody logged in to FlyB is never counted as a visit in Analytics, so taking bookings for your customers does not inflate the calendar’s numbers.

Managing bookings

Click a calendar in the list to open its dashboard. Its menu on the left has:

SectionWhat it shows
DashboardThe counters, who is next, the booking link and the appointments themselves
AnalyticsThe booking page’s visits and where they came from — see Analytics
HistoryEverything that happened to the calendar’s appointments
PaymentsOn a calendar that charges for bookings: every checkout opened on its booking page — see Payments
Manage calendarOpens the editor, like the Edit calendar button at the top

The screen refreshes itself every minute, so new bookings, reschedules and cancellations appear on their own.

Dashboard

  • Counters — today, tomorrow, the next 7 and the next 30 days. Click one to open those bookings in a list you can re-period, search and sort.
  • Next appointment — who comes next and how soon, with the same modify and cancel actions as the list.
  • Booking link — the calendar’s public address (on your custom domain when you have one), to copy or open; URL, UTM & QR Code builds a tagged link and its QR Code, and New booking opens the booking page in a new tab, to take a booking yourself.
  • Bookings — as a list (what the dashboard opens on) or as a calendar month. The list filters by Upcoming (from today on), today, tomorrow, the next 7 or 30 days, Past (newest first) or everything, and searches by name, phone, e-mail, notes, date or time. Click a row to open the contact. A booking a guest paid for online carries a Paid badge.

Every booking in the list has two actions:

  • Modify opens the booking page with that appointment already selected — exactly what the guest sees when they reschedule, with the same rules.
  • Cancel opens the cancellation, described below.

Both are offered to members who may edit calendars — the same permission the actions themselves require.

Cancelling a booking

The same dialog opens wherever you cancel an appointment from FlyB: the calendar’s dashboard, its counters’ lists and the contact record.

FieldWhat it does
Cancellation reasonOptional. Recorded in the calendar’s History for your team — the contact never sees it
E-mail the contact to confirm the cancellationOn by default. Off, the contact is not written to; the responsible members still get their copy. Unavailable when the contact has no e-mail address
Message to the contactOptional, shown while the e-mail is on. Your own words, printed in the cancellation e-mail under A note from the team — “our specialist had an emergency, sorry”. The responsible members’ copy carries it too, so everyone knows what the contact was told
Offer the contact a new timeShown while the e-mail is on, and on by default. The e-mail then invites the contact to book again, with a Book a new time button that opens the booking page with their name, phone and e-mail already filled in

The freed time is back on the booking page at once. A calendar that is switched off never offers to rebook, because its page is not taking bookings.

Cancelling a booking the guest paid for online does not refund it — the dialog reminds you that refunds are made in your Stripe dashboard. A guest cancelling a paid booking on the booking page is told the same, and that moving it to another time keeps the payment.

When it is the guest who cancels, on the booking page, their cancellation e-mail repeats the reason they gave, and its Book a new time button fills the form with their details too.

With Google Calendar linked you can also cancel by simply deleting the appointment’s event in Google Calendar — FlyB cancels it here and, with Tell the guest on, sends the same cancellation e-mail with Book a new time.

History

Every booking, reschedule, cancellation and reminder of this calendar — and every time a guest turned WhatsApp messages on or off — with who did it: the guest, your team, the API, automatically, or Google Calendar (an appointment deleted or moved there). Filter it by period (today, the last 7 or 30 days, everything, or any dates), by kind of event — each chip counts how many happened in the period — and by a search over names, e-mails, phones and reasons. Reminders and WhatsApp confirmations carry the channel they went out on (E-mail or WhatsApp), and a message that was not sent or failed says why — a template still in review, a guest with no phone number, Meta’s own refusal. Click an entry to open the contact.

A member flagged See only their own contacts sees the calendar’s appointments, counters, history and payments minus the contacts they do not own.

For the day you are in right now, you do not need this screen at all: the Dashboard lists today’s appointments across every calendar you are a responsible member of — plus the ones with no responsible member, which belong to the whole team.

Yesterday’s bookings reach you without a screen at all: the daily summary by e-mail reports how many bookings the organization received the day before, and which three calendars took most of them.

Payments

On a calendar that charges for bookings — or did once — the Payments section lists every checkout opened on its booking page, newest first, with the guest, the time they chose, the amount and where the payment stands:

StatusWhat it means
Checkout startedThe guest went to the payment page and has not paid. The time is not reserved
Awaiting paymentPaid with a method that clears later, like boleto. The line says until when the time is held
Paid and bookedPayment approved and booking confirmed
Paid — needs a new timePaid, but the time could no longer be booked. Book a new time opens the booking page with the guest’s details, to book without charging again; Mark as handled when you refunded it instead
Not completedThe guest left the payment page without paying — a lead worth a follow-up
Payment failedThe payment did not go through, or the boleto was not paid. The time was released

The counters at the top filter the list, and a click on a row opens the contact. While a payment needs a new time, the menu entry shows how many, and the Dashboard shows an alert. A payment re-booked on a new time shows that time; one marked as handled says when.

One link, several calendars. Instead of an address, a booking distribution link holds a pool of calendars — one per person on your team, each with their own Google account — and picks one per visitor.

Create one from + Booking distribution link on this screen, or from URLs & QR Codes. A distribution link is a link of the Links & QR Codes module, where it is listed and edited, so both that module and Scheduling have to be active for it to be offered.

RuleHow the calendar is chosen
Round-robinOne at a time, in sequence. Everyone receives the same number of visits
Soonest availabilityWhoever has the nearest free slot. Ties are drawn at random
Fewest bookingsWhoever received the fewest bookings over a window you set
RandomA plain draw on every visit

Four things worth knowing:

  • The pool is re-resolved on every visit, so a calendar that is deleted, moved or simply switched off receives nobody. That is how someone goes on holiday.
  • A device keeps the calendar it was given, so a visitor who comes back through the same link reaches the same person.
  • Nothing may fail a redirect. If a rule cannot be evaluated in time, the link falls back to a random draw and reports it honestly.
  • Links pasted into a chat generate a preview fetch. Those pick a calendar without advancing the rotation, so sharing a link does not burn a turn.

The editor shows a fairness readout: how many bookings each person actually received over the last period.