Loading...
Help Center / Getting Started / Appointment Scheduler App Overview

Appointment Scheduler App Overview

Appointment Scheduler App Overview

Publish a booking page with your true availability — invitees pick a genuinely-free slot at /meet/your-page, the meeting lands on every calendar automatically, and confirmations, reminders, and self-service reschedule links go out without any back-and-forth email.


What is the Appointment Scheduler App?

Appointment Scheduler is a Calendly-class scheduling app built on the MangoApps calendar core. Employees and teams publish branded booking pages, and external customers, candidates, vendors — or colleagues — book time against availability that tells the truth: internal calendar events, Google and Outlook busy time, approved leave, and already-confirmed appointments are all subtracted before a slot is ever offered. Every booking becomes a real calendar event with confirmation email, ICS invite, reminders, and a secure manage link for the invitee.

Core Value Proposition:

  • 🎯 Kill the back-and-forth — invitees self-schedule from only genuinely-free slots; no “does Tuesday work?” email chains
  • 🛡️ Double-booking-proof — server-side slot re-validation, a live Google/Outlook free/busy re-check at confirmation time, and a database uniqueness backstop
  • 🔗 One platform — bookings create real calendar events, reserve meeting rooms, pre-register visitors, and log to the CRM automatically
  • 🏭 Frontline-ready — availability can be constrained to published shifts, so slots are only offered when the host is actually scheduled to work

Key Concepts (How It Works)

If you only read one section, read this — it explains the model behind the screens.

The three building blocks: Booking Page → Meeting Type → Appointment

Everything in the app is one of three things, and each carries different settings:

  1. Booking Page — the published surface at /meet/your-slug. It owns the availability (weekly windows and date overrides), the timezone, the visibility setting, and — for team pages — the member list. One host (or team) can have several pages.
  2. Meeting Type — a bookable kind of meeting on a page (“30-min intro call”, “60-min consult”). It carries the slot parameters: duration, buffers before/after, minimum notice, rolling booking window, optional daily cap, location mode (virtual / in person / phone), custom intake questions, and optional host-written notes for the confirmation, reminder, and follow-up emails. A page needs at least one active meeting type to be bookable.
  3. Appointment — a confirmed booking an invitee made against a meeting type. It stores the invitee’s details and answers, owns the calendar event, and carries an unguessable manage token — the link in the invitee’s email that lets them cancel or reschedule without an account.

A common confusion: availability lives on the page; slot rules live on the type. “Mondays 9–5” is a page setting; “45 minutes with a 15-minute buffer and 24 hours’ notice” is a type setting. Two types on the same page share the same weekly windows but can offer very different slots.

How a slot becomes offerable (and why a slot might not show)

For each date, the engine starts from the page’s availability windows (weekly rules, replaced or blocked by any date override), subtracts every source of busy time for the host, then cuts what remains into slots of the type’s duration plus buffers. Busy time is unioned from:

  • Internal calendar events (including the Google Calendar inbound mirror)
  • Outlook / Microsoft 365 busy time, fetched live via a connected Microsoft account
  • Approved leave — folded in when the admin toggle “Treat approved leave as busy time” is on (default on)
  • Already-confirmed appointments on any of the host’s pages

A slot is then dropped if it starts before the type’s minimum notice, falls outside the rolling window (e.g. “bookable up to 30 days out”), or the host already hit the type’s max per day cap. So “why isn’t 2pm showing?” is almost always one of: a calendar event or leave overlaps it (including buffer time), it’s inside the minimum-notice window, or the daily cap is reached.

Shift modes (optional, per page) add a frontline dimension: constrain to shifts offers slots only inside the host’s published shifts; block during shifts does the inverse and blocks them.

What makes someone a member, an admin, or an app admin?

  • Member (host) — any signed-in user with the app enabled. Members create and manage their own booking pages and see their own appointments, dashboard stats, and analytics.
  • Admin — anyone with the platform Admin/Owner role, or a user granted the app-admin role for Appointment Scheduler specifically. Admins see all pages and appointments in the business, and they own the Admin → Settings tab (the tenant-wide toggles).
  • There is no separate “viewer” tier — visibility is simply mine vs. everyone’s, decided by the admin check.

Solo pages vs. team pages — and the three team modes

A page is solo (one owner-host) or team (a member list). Team pages unlock three assignment modes on their meeting types:

  • Round-robin — a slot is offered when any member is free. At booking time the app assigns the member who was assigned longest ago (with a per-member priority as tiebreaker) and who passes a live free/busy check. Good for “book a demo with our team.”
  • Collective — a slot is offered only when every member is free, and all members are attached to the one meeting. Good for panel interviews and joint calls.
  • Groupone host, many seats (a configurable seat capacity, e.g. a 20-seat orientation session). The slot stays bookable until its confirmed seat count hits the cap; all attendees share a single calendar event.

Round-robin and collective require a team page with at least 2 members — the app enforces this.

What the waitlist is (group sessions only) — and what it is not

A waitlist exists only for group meeting types, and only for a slot that is genuinely full (confirmed seats have hit the capacity). On the public page, a full group slot still appears, but instead of a booking form it offers a short “join the waitlist” form (name + email). Joining is idempotent — submitting twice, or two tabs racing, leaves exactly one entry rather than erroring.

The important thing to understand is what happens when a seat frees up. When someone cancels or reschedules out of a full group slot, the app emails everyone waiting for that exact meeting-type-and-time, and the first person to click through and rebook gets the seat. It is:

  • Not an auto-booking — nobody is booked without acting.
  • Not a held or reserved seat — the seat is open to all waitlisters (and to the general public) until someone actually books it.
  • Not a queue with position numbers — there is no “you are 3rd in line.”
  • Once per person, per slot — each waitlist entry is notified exactly once; the notification stamp is the claim, so overlapping cancellations can’t double-email the same person.

Solo, round-robin, and collective types have no waitlist — a full slot there simply stops being offered.

Booking-page branding vs. the meeting type’s email notes

Two different things shape what an invitee sees, and they live at different levels:

  • Page branding (on the booking page) controls the public page’s appearance: a logo URL, an accent color (hex), and a welcome message up to 300 characters. It also carries the list of embed domains — the external hostnames allowed to iframe this page (up to 10; bare hostnames, and localhost-style entries are rejected).
  • Email notes (on the meeting type) control email copy — separate host-written notes appended to the confirmation, reminder, and follow-up emails.

So “change what the booking page looks like” is a page setting; “change what the confirmation email says” is a meeting-type setting. Branding never appears in email, and email notes never appear on the page.

Cancel vs. reschedule (they are not the same record operation)

Cancelling flips the appointment to cancelled, removes the calendar event (sending an ICS CANCEL so it disappears from the invitee’s calendar), releases any auto-reserved room, cancels any pre-registered visitor pass, and emails the invitee. Rescheduling is cancel-plus-rebook in one step: a brand-new appointment is created at the new time and the old one is marked rescheduled (not cancelled) with a link between the two — so analytics never counts one meeting as two bookings, and the audit trail preserves the whole chain. Both the invitee (via their manage link) and the host (from the Appointments tab) can cancel or reschedule.

  • Public — anyone with the link can view and book; the page can also surface internally (e.g. the “Book time” button on a colleague’s profile).
  • Organization only — invitees must sign in as a member of your organization before they can see slots or book. Use this for internal-only office hours.
  • Link only — bookable by anyone who has the URL, but not surfaced in internal discovery.

The invitee’s manage link works regardless of visibility — there, the unguessable token is the credential.

What happens automatically vs. what you configure

Automatic on every booking: the calendar event (with the invitee attached and Google/Outlook sync), the confirmation email with ICS invite and manage link, a host in-app notification, the audit-log entry, CRM account linking when the invitee’s email matches exactly one account, and — if configured on the type — meeting-room auto-reservation and Guest Pass visitor pre-registration. Automatic on cancel or reschedule out of a full group slot: the waitlist email fan-out. Automatic on schedule: the reminder sweep (invitee email + host notification at the tenant-configured lead time), the optional invitee SMS reminder, and the post-meeting follow-up email — which sends only when the meeting type has a follow-up note written; the note itself is the opt-in. Manual / configured: pages, types, availability, branding, team membership, routing, and the tenant admin toggles.

Why an SMS reminder needs two yeses

Text reminders are the one channel that requires agreement from both sides, and both must be true:

  1. The tenant admin turns on “Send SMS reminders” — this is off by default, unlike email reminders.
  2. The invitee opts in on the booking form — they must enter a phone number and tick “Text me a reminder before the meeting.”

If either is missing, no text is sent (the email reminder is unaffected). The SMS is deliberately short — meeting type, host’s first name, start time in the invitee’s own timezone, and the manage link. Two details worth knowing: the opt-in carries across a reschedule, so an invitee who moves their meeting doesn’t silently lose their reminder; and an SMS only rides along with an email reminder sent in the same sweep, so a booking whose email reminder already went out never receives a late, orphaned text.


At a Glance

🔗 Integrations 📱 Mobile Ready 🌐 Public Booking 🤖 AI Agent
7+ apps ✅ Yes ✅ No login needed ✅ Yes

Perfect For:

  • 🧑‍💼 Anyone who takes meetings — every employee can publish a personal /meet link for 1:1s, office hours, and customer calls
  • 👥 Teams with shared demand — round-robin sales/demo rotation, collective panel bookings, group sessions with seat caps
  • 🏭 Frontline & HR teams — shift-aware availability plus HR/IT/Benefits office-hours pages colleagues book without email tag

How It Works

The Booking Flow

┌─────────────────────────────────────────────────────────────────────────────┐
│                          BOOKING JOURNEY                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  HOST                          INVITEE (no login)                           │
│  ┌──────────────┐              ┌──────────────┐      ┌──────────────┐       │
│  │ CREATE PAGE  │   share      │ OPEN /meet/  │      │  PICK DATE   │       │
│  │ + types      │─────────────▶│ your-page    │─────▶│  & TIME      │       │
│  │ + availability│    link     │ (routing Q?) │      │ (their tz)   │       │
│  └──────────────┘              └──────────────┘      └──────┬───────┘       │
│                                                             ▼               │
│                                              ┌───────────────────────────┐  │
│                                              │  CONFIRM-TIME RE-CHECK    │  │
│                                              │  slot still offerable?    │  │
│                                              │  live Google/Outlook      │  │
│                                              │  free/busy re-check       │  │
│                                              └────────────┬──────────────┘  │
│                                                           ▼                 │
│  ┌────────────────────────────────────────────────────────────────────────┐ │
│  │                      APPOINTMENT CONFIRMED                             │ │
│  │  calendar event (+ sync)  ·  ICS confirmation email  ·  manage link    │ │
│  │  host notified  ·  room auto-reserved  ·  guest pre-registered  ·  CRM │ │
│  └───────────────────────────┬────────────────────────────────────────────┘ │
│                              │                                              │
│              ┌───────────────┼────────────────┐                             │
│              ▼               ▼                ▼                             │
│      ┌──────────────┐ ┌──────────────┐ ┌──────────────┐                     │
│      │  REMINDER    │ │ RESCHEDULE / │ │  FOLLOW-UP   │                     │
│      │ (email+inbox)│ │ CANCEL (link)│ │ (if note set)│                     │
│      └──────────────┘ └──────────────┘ └──────────────┘                     │
└─────────────────────────────────────────────────────────────────────────────┘

Integration Ecosystem

                            ┌──────────────────────┐
                            │ APPOINTMENT SCHEDULER │
                            └──────────┬───────────┘
                                       │
      ┌────────────┬───────────┬───────┼────────┬────────────┬───────────┐
      ▼            ▼           ▼       ▼        ▼            ▼           ▼
┌──────────┐ ┌──────────┐ ┌─────────┐ ┌────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐
│ CALENDAR │ │  LEAVE   │ │ SHIFTS  │ │BOOKINGS│ │  GUEST  │ │   CRM   │ │ ASK AI │
│(Google / │ │(approved │ │(publish-│ │(rooms  │ │  PASS   │ │(GTM/CS  │ │(agent) │
│ Outlook) │ │ = busy)  │ │ed only) │ │auto-   │ │(visitor │ │ account │ │        │
│          │ │          │ │         │ │reserve)│ │pre-reg) │ │ + note) │ │        │
└────┬─────┘ └────┬─────┘ └────┬────┘ └───┬────┘ └────┬────┘ └────┬────┘ └───┬────┘
     ▼            ▼            ▼          ▼           ▼           ▼          ▼
 Event of     Time off     Slots only  Room booked Reception  Meeting on  Manage
 record +     never gets   during your on confirm, expects    the account pages &
 2-way sync   booked over  shifts      freed on    the guest  timeline    bookings
                                       cancel                             by chat

Key Features

📄 Booking Pages

Your published scheduling surface — live in minutes.

Feature Description
Vanity URL Every page gets /meet/your-slug (lowercase letters, numbers, hyphens)
Visibility Public, Organization-only (sign-in required), or Link-only
Timezone-true The page has a home timezone; invitees see slots converted to their timezone
Activate / deactivate Toggle the public link on and off without deleting anything
Expiry Optional end date after which the page stops accepting bookings
Embed Copy-paste iframe snippet to embed the page on any external site, plus an allowlist of up to 10 external hostnames permitted to frame it
Branding Logo URL, accent color (hex), and a welcome message up to 300 characters shown on the public page
Duplicate One click copies the page — meeting types, weekly rules, future date overrides, and team members come along

💡 Pro Tip: Deactivating a page (or letting it expire) immediately stops new bookings — including scripted replays — while keeping every existing appointment and its history intact. Deleting a page is blocked while appointments exist.

💡 Pro Tip: Duplicating is the fastest way to stand up a near-identical page (a second region, a colleague’s copy of a team page). The copy always arrives inactive with a fresh URL and a clean round-robin rotation, so you can adjust it before anyone can book — and only future date overrides carry over, since past days off are history rather than setup.


🗓️ Meeting Types

Each page offers one or more bookable meeting kinds, each with its own slot rules.

Setting What it does
Duration 1 minute to 8 hours
Buffers Up to 4 hours of protected time before and/or after each meeting
Minimum notice Stop last-second bookings (“at least 24 hours ahead”)
Rolling window How far out invitees can book (up to 365 days)
Daily cap Optional max confirmed bookings per day for this type
Location mode Virtual (uses the host’s saved meeting link), In person, or Phone
Intake questions Custom questions — text, long text, dropdown, checkbox — each optionally required (enforced server-side)
Email notes Host-written notes appended to the confirmation, reminder, and follow-up emails
Duplicate Copy a type onto the same page as an inactive draft, so a live type is never accidentally cloned into public view

Use Case: A benefits specialist offers a “15-min quick question” type with zero buffer and a “60-min enrollment consult” with a 15-minute buffer and a required “What plan are you on?” dropdown — on the same page, sharing the same weekly hours.


⏰ Availability: Weekly Rules + Date Overrides

  • Weekly rules — recurring windows per weekday (“Mondays 09:00–17:00”), defined in the page’s timezone and DST-safe.
  • Date overrides — exceptions for a specific date: mark the day closed (vacation, holiday) or replace the weekly windows with custom hours for just that date.
  • Shift modesconstrain to shifts (offer slots only inside the host’s published shifts) or block during shifts (the inverse). Only published schedules count — draft shifts never leak into availability.

💡 Pro Tip: Frontline teams should use constrain to shifts instead of maintaining weekly rules by hand — availability then follows the roster automatically, week after week.


👥 Team Scheduling (Round-Robin · Collective · Group)

Add members to a team page, then pick the assignment mode per meeting type:

Mode Slot is offered when… Who attends Typical use
Round-robin any member is free The member assigned longest ago (priority as tiebreaker) Sales/demo rotation, support intake
Collective every member is free All members Panel interviews, joint calls
Group seats remain (configurable capacity, up to 500) One host + up to N invitees Orientations, info sessions, classes

Round-robin re-checks the winning member’s live free/busy before assigning; group sessions share a single calendar event, and a cancelling attendee is dropped from the invite while the session survives for everyone else.


📋 Group-Session Waitlist

When a group slot sells out, the demand doesn’t have to disappear.

Behavior Detail
Where it appears Only on full group-session slots on the public page — full slots stay visible and swap the booking form for a join form
What’s asked Name and email (the invitee’s timezone is captured alongside)
Double-submit safe Joining twice — or two tabs racing — leaves exactly one entry, never an error
When a seat frees A cancel or reschedule out of that slot emails every waiting person for that meeting-type-and-time
How the seat is won First to click through and rebook — no auto-booking, no held seat, no queue position
Exactly once Each entry is notified a single time; the notification stamp doubles as the claim, so overlapping cancellations can’t double-email

💡 Pro Tip: Waitlists turn a full orientation or info session into a demand signal — a slot with a long waitlist is the clearest evidence you should add another session.


🧭 Routing Forms

Put a question in front of the calendar: “What do you need help with?” with options that each route to a different booking page (“Billing → the billing team’s page, Technical → support engineering”). Invitees who pick an option land on the right page — and a “none of these” path books on the current page. Routing shows before any slots whenever at least one option is configured.


🌐 The Public /meet Experience

  • No login required — external customers, candidates, and vendors book without an account (organization-only pages are the exception: they require sign-in, by design).
  • Timezone-aware picker — a date list showing only days with real openings, then slots rendered in the invitee’s own timezone.
  • Required questions enforced server-side — a “required” intake question is real, not just a label.
  • Typed input preserved — if a booking bounces (e.g. the slot was just taken), the invitee’s name, email, and answers are prefilled so they only re-pick the time.
  • Rate-limited — per-visitor and per-business budgets on browsing and booking keep the public surface from being abused.
  • Kill switch — an admin toggle disables the entire public /meet surface for the tenant in one click.

🛡️ Double-Booking Prevention (three layers)

  1. Server-side slot re-validation — the chosen time must still be one of the currently-offerable slots at confirm time; the client’s value is never trusted.
  2. Live provider re-check — a real-time Google/Outlook free/busy call for the concrete host at the moment of confirmation, so a minutes-stale calendar mirror can’t cause a clash.
  3. Database backstop — a uniqueness constraint turns a race between two simultaneous invitees into a clean “that time was booked a moment ago — pick another slot.”

The invitee is external — email is their channel, and every email carries their secure manage link.

Email When Includes
Confirmation Immediately on booking ICS calendar invite + manage link + host’s confirmation note
Reminder N hours before (tenant-configured, 1–168; default 24) Meeting details in the invitee’s timezone + host’s reminder note
Cancellation On cancel (by either side) ICS CANCEL that removes the entry from their calendar
Follow-up After the meeting ends The host’s follow-up note — sent only when the type has one written
Waitlist seat opened A seat frees in a full group slot Sent to everyone waiting for that slot; first to rebook takes the seat

From the manage link, invitees see live booking status and can cancel (with an optional reason) or reschedule onto any currently-open slot — no login, no email chain.


📱 SMS Reminders (opt-in on both sides)

An optional text reminder for invitees, requiring two independent yeses:

  1. The tenant admin enables “Send SMS reminders to invitees who opt in”off by default.
  2. The invitee supplies a phone number on the booking form and ticks “Text me a reminder before the meeting.”

The text is deliberately short — meeting type, host’s first name, start time in the invitee’s own timezone, and the manage link — and it goes out on the same schedule as the email reminder. The opt-in survives a reschedule, so moving a meeting doesn’t silently cancel the reminder, and each booking is texted at most once.


🔔 Host Notifications

Hosts are notified through the standard in-app notification pipeline (with its own email/push preference gating):

Notification Trigger
New booking An invitee books — who, which type, when, via which page
Cancelled A booking is cancelled (with the invitee’s reason, when given)
Upcoming The reminder sweep pings the host ahead of the meeting

🗂️ Host & Admin Surfaces

  • Dashboard — your active pages, upcoming appointments (including in-progress), and this month’s booked/cancelled counts.
  • Booking Pages — create, edit, activate/deactivate; the editor covers types, availability, team members, routing, and the embed snippet.
  • Appointments — list and detail views with host-side cancel and reschedule (a slot picker mirroring the invitee flow).
  • Analytics — server-rendered: upcoming/completed/cancelled totals over 90 days, cancellation rate, average booking lead time, an 8-week booking trend, top pages, top meeting types, and a booking-source breakdown (public link, embed, colleague profile, API, AI Front Office).
  • Directory — an internal, searchable list of colleagues you can book time with: every active, org-visible, bookable page in the business, searchable by colleague name or page title. This is the internal discovery surface — link-only pages are deliberately excluded.
  • Admin → Settings — the tenant toggles (below).
  • Mobile — a phone-optimized view at /m/apps/appointment-scheduler: upcoming appointments (with cancel) and your pages with shareable links. Authoring stays on desktop.
  • Dashboard widget — a “My Appointments” home widget showing your next bookings.
  • Colleague profiles — a “Book time” button appears on a colleague’s profile when they have a bookable org-visible page.
  • API — REST endpoints to list booking pages and appointments, fetch one, cancel, and reschedule.

⚙️ Admin Settings

Setting Default What it gates
AI Agent On Whether the Appointment Scheduler agent answers in Ask AI
Public booking On The entire unauthenticated /meet surface for the tenant
Email reminders On The reminder sweep’s invitee emails and host pings
Reminder lead time 24 hours How many hours before the meeting reminders go out
SMS reminders Off Whether opted-in invitees also get a text reminder
Leave blocks availability On Whether approved leave is subtracted from bookable time
Reschedule emails On Sends a dedicated “appointment moved” email (with calendar cleanup for the old time) instead of a plain confirmation
Notify collective members Off Whether booked/cancelled notices reach every host of a collective booking, not just the primary
Integration failure alerts Off Whether a failed room reservation or Guest Pass pre-registration alerts the host instead of only logging

Every toggle has a real runtime consumer — flipping it changes behavior immediately, tenant-wide.


🔗 Integrations

Integration What happens
Calendar Every confirmed appointment owns a real calendar event — Google/Outlook two-way sync, conflict analysis, and ICS apply automatically; collective bookings land on every member’s calendar
Leave Management Approved leave (full-day and partial-day) is folded into busy time, so nobody books over vacation
Shift Scheduling Published shifts can constrain (or block) bookable hours per page
Bookings (rooms & spaces) In-person types can pin a Space that is auto-reserved on confirm and released on cancel — with the outcome logged on the appointment’s audit trail either way
Guest Pass In-person types can pre-register the invitee as an approved visitor, so reception expects them on arrival; cancelled bookings cancel the visit
CRM (Mango GTM / CS) The invitee’s email is matched to a CRM account (unique company-domain match first, then unique contact match) and a meeting activity is dropped on the account timeline
AI Front Office Bookings made by the AI receptionist are tagged as their own source in analytics

Room reservation, guest pre-registration, and CRM linking are all failure-safe: a full room or a Guest Pass hiccup never kills the appointment — it’s logged on the audit trail instead.


🤖 Appointment Scheduler AI Agent

The app is wired into the Ask AI sidebar. The agent can:

  • List your booking pages with their public /meet links and status
  • Show your appointments — upcoming, past, or cancelled
  • Get one appointment’s full details by ID or invitee name/email
  • Preview availability — the exact slots an invitee would be offered on a date
  • Create a booking page with sensible defaults (confirmed write)
  • Activate/deactivate a page (confirmed write)
  • Cancel an appointment — the invitee is notified with a rebook link (confirmed write)
  • Reschedule an appointment to a new open slot — the invitee gets the updated confirmation (confirmed write)

Writes go through the same booking service as the UI, so calendar cleanup, room release, and invitee emails behave identically. Admins can turn the agent off per-tenant in Settings.


📜 Audit Trail

Every appointment carries a full audit log: booked, cancelled (with reason), rescheduled (with the successor), reminder sent, follow-up sent, room reserved/released, guest pre-registered, CRM linked — each entry with actor and timestamp. The reschedule chain is preserved end-to-end.


User Roles & Permissions

Role Capabilities
Member (host) Create and manage own booking pages, types, availability, team members, and routing; see own appointments; host-side cancel/reschedule; own analytics; mobile view; AI agent
Admin Everything above across all users’ pages and appointments, business-wide analytics, plus Admin → Settings (the five tenant toggles)
App Admin A user granted admin rights for Appointment Scheduler specifically — same powers as Admin within this app, without platform-wide admin
Invitee (external) Book, reschedule, and cancel via secure links — no account, no login

How We Compare

See how MangoApps Workforce stacks up against leading scheduling tools:

Feature MangoApps Workforce Calendly Microsoft Bookings
Personal booking pages + custom intake questions
Meeting types with buffers, notice & booking windows
Email confirmations & reminders with calendar invites
Round-robin & collective team scheduling 💰
Shift-aware availability (slots follow the published roster)
Approved leave automatically blocks booking
Room auto-reserve + visitor pre-registration on booking
Unified with calendar, leave, shifts, CRM & visitor mgmt
Legend: ✅ Included ❌ Not Available 💰 Paid Add-on ⚡ Limited

Calendly’s round-robin team scheduling requires its paid Teams tier; Microsoft Bookings offers shared booking pages within Microsoft 365 but not rotation-based assignment. Competitor capabilities per each vendor’s public product and pricing pages; MangoApps rows reflect features verified in this app.

Why MangoApps Workforce?

  • 🔗 Unified Platform — bookings create real calendar events, respect leave and shifts, reserve rooms, and pre-register visitors in one system
  • 🏭 Built for the frontline — shift-constrained availability means store and branch staff only offer slots when they’re actually on the roster
  • 🤖 AI-Native — an Ask AI agent that can look up, create, cancel, and reschedule for you, not just answer questions

Getting Started

For Hosts (everyone)

  1. Open Apps → Appointment Scheduler → Booking Pages and create a page (title, URL slug, timezone, visibility)
  2. Add a meeting type (duration, buffers, notice, questions) — default weekly availability is created for you; adjust it and add date overrides
  3. Share your /meet/your-slug link (email signature, chat, or the embed snippet) — bookings, confirmations, and reminders run themselves
  4. Watch the Dashboard and Appointments tabs; cancel or reschedule from there when plans change

For Teams

  1. Create a page and add members under Team
  2. Set each meeting type’s mode: round-robin (rotate), collective (everyone attends), or group (seat capacity)
  3. Optionally add a routing question so invitees land on the right team’s page

For Administrators

  1. Enable the app in the Apps Marketplace
  2. Review Admin → Settings: public booking, reminders and lead time, leave-blocks-availability, and the AI agent
  3. Use the business-wide Appointments and Analytics views to monitor adoption, cancellation rate, and booking sources

Best Practices

  • Add buffers to back-to-back-prone types — 10–15 minutes of protected prep/travel time prevents meeting fatigue
  • Set a minimum notice (12–24h) on external-facing pages so you’re never ambushed by a same-hour booking
  • Write a follow-up note on types where a post-meeting email matters — the note is the opt-in, and the send is automatic
  • Use organization-only visibility for internal office hours so anonymous visitors can’t see or book them
  • Frontline hosts: use constrain to shifts instead of hand-maintained weekly rules — availability follows the published roster
  • Deactivate, don’t delete pages you’re pausing — history stays intact and the link can come back later

Frequently Asked Questions

Q: Do invitees need a MangoApps account?
A: No. Booking, rescheduling, and cancelling all work through secure links with no login. The one exception is a page set to Organization only — those invitees must sign in as members of your organization first.

Q: Why isn’t a time showing that looks free to me?
A: A slot is only offered when the whole span — including the type’s buffers — is clear of internal calendar events, Google/Outlook busy time, approved leave (if the admin toggle is on), and other confirmed appointments, and it satisfies the type’s minimum notice, rolling window, and daily cap. Date overrides and shift mode can also close a day the weekly rules would open.

Q: What happens if two people try to book the same slot at once?
A: One wins. The other gets a friendly “that time was booked a moment ago — please pick another slot,” with their typed details preserved. Confirmation runs a server-side re-validation, a live Google/Outlook free/busy re-check, and a database uniqueness backstop.

Q: What’s the difference between cancelling and rescheduling?
A: Cancelling ends the booking (calendar entry removed, room released, visitor pass cancelled, invitee emailed). Rescheduling creates a new appointment at the new time and marks the old one rescheduled — linked together so history and analytics stay accurate. Both the invitee (manage link) and the host (Appointments tab) can do either.

Q: When do reminders and follow-ups go out?
A: Reminders go to the invitee (email) and host (in-app) at the tenant-configured lead time — 1 to 168 hours before, default 24 — and each appointment gets exactly one. The post-meeting follow-up email sends only when the meeting type has a follow-up note written; no note, no email.

Q: Can I put my booking page on our website?
A: Yes — the page editor shows a copy-paste iframe snippet, and you can list up to 10 external hostnames allowed to frame the page. Bookings made through the embed are tagged separately in the analytics source breakdown.

Q: A group session is full — can people still sign up?
A: Yes, via the waitlist. A full group slot stays visible and offers a join form instead of a booking form. When a seat frees up through a cancellation or reschedule, everyone waiting for that exact session is emailed and the first to rebook takes the seat — nobody is auto-booked and no seat is held. Waitlists exist only for group meeting types.

Q: How do I get a text reminder instead of just email?
A: Both sides have to opt in. An admin must enable SMS reminders for the tenant (it’s off by default), and the invitee must enter a phone number and tick “Text me a reminder” when booking. If either is missing, only the email reminder goes out. The opt-in carries over if the meeting is later rescheduled.

Q: How do colleagues find my booking page inside the company?
A: The in-app Directory lists everyone with an active, org-visible bookable page, searchable by name or page title, and a “Book time” button appears on your profile. Pages set to Link only are intentionally left out of both — they’re bookable only by someone you send the URL to.

Q: I need a second page almost identical to one I already have. Do I rebuild it?
A: No — duplicate it. The copy brings over meeting types, weekly availability, future date overrides, and team members, and arrives inactive with its own URL so you can adjust it before anyone can book. Duplicating a meeting type works the same way, landing as an inactive draft on the same page.



Publish your page, share your link, and let the back-and-forth end — Appointment Scheduler books the meeting, the calendar, the room, and the guest list in one step.