One morning queue for every meeting waiting on your approval

See every meeting still waiting on a decision, with customer context attached, and confirm, decline, reschedule, or reassign it without leaving the page.

App
Cal.comHubSpotSlackSalesOperationsMeeting WorkflowsLead Enrichment
PromptCreate

Build me a booking triage desk for Cal.com that my sales ops person opens every morning to clear the queue of meetings still waiting on a human decision. The point of the app is to be one working screen that replaces jumping between Cal.com's separate Upcoming, Unconfirmed, Recurring, Past, and Cancelled tabs.

The main view is a single list of bookings that need confirmation. Load it with Cal.com's Get All Bookings, filtered to pending status and sorted by soonest start time, paging with the take and skip parameters. Each row shows the attendee name and email, the event type, when the call starts (with the time zone and a relative countdown like "in 6 hours"), and the answers they gave on the booking form.

Any pending booking starting in under 24 hours is pinned to the top of the list and styled in red, with a count of how many sit in that danger zone. Those are the ones that quietly rot into no-shows, so they should be impossible to miss when the page loads.

Beside each attendee, show CRM context from HubSpot so the reviewer knows who they are dealing with before deciding. Look the attendee email up with Search Contacts, and pull the full record with Get Contact, which accepts an email address through its idProperty parameter, for details like company, lifecycle stage, and owner. Summarize each one as a simple badge: existing customer, known contact, or total stranger. Do not fire these lookups for every row on page load. Batch them or load them lazily as rows come into view, because Cal.com allows 120 requests a minute and HubSpot has its own limits.

Every row has action buttons wired to the matching Cal.com operations: Confirm a Booking, Decline a Booking with a reason, Reschedule a Booking to a new time, Reassign a Booking to a different host, Cancel a Booking, and Add Guests to a Booking when someone needs a colleague pulled in. Decline, cancel, reschedule, and reassign should each open a small dialog to collect the reason, the new time, or the new host before anything is sent. Once an action succeeds, drop the row out of the pending queue and show a brief confirmation.

When a booking is reassigned, post a Slack message to the new host with the meeting details, attendee name, event type, start time, and the booking form answers, so they are not ambushed by a call they never saw. Use Slack's Send a Message. To reach the host directly, Open a Conversation with their user first to get the direct message channel, or let the operator pick a shared channel instead.

Adding guests is rate limited to 5 requests a minute, well below Cal.com's normal ceiling, so add guests one at a time from the dialog rather than looping over a bulk paste, and show progress in the UI instead of firing every request at once.

Two Cal.com API details to bake in. The v2 booking endpoints require a cal-api-version header set to 2026-02-25, and leaving it off surfaces as a confusing 404. Responses come wrapped as an envelope shaped like { "status": "success", "data": ... }, so unwrap data before rendering it.

Round it out with a manual refresh, filters for event type and host so several people can share the desk, and a clean empty state for when the queue is clear, since clearing it is the whole goal. Keep it readable at a glance. This is a surface someone works for ten minutes every morning, not a report they read.

What does this prompt do?

  • Puts every meeting still waiting on your approval into one list, soonest first, so nothing sits unanswered for days
  • Flags anything starting in the next 24 hours in red at the top, since those are the ones that quietly turn into no-shows
  • Shows who each person is before you decide: an existing customer, a known contact, or someone brand new, matched from your CRM by email
  • Gives every row the buttons to act on the spot: approve, decline with a reason, move to a new time, hand off to a different host, cancel, or pull in a colleague
  • Tells the new host on Slack when you hand a meeting to them, with the details they need to walk in prepared

What do I need to use this?

  • A Cal.com account, connected with a key you generate in your Cal.com settings
  • At least one meeting type set to require your confirmation, since that is what creates the queue in the first place
  • A HubSpot login, so the app can show customer context beside each name
  • A Slack workspace, if you want the new host notified when you hand a meeting over

How can I customize it?

  • Change the urgency window from 24 hours to whatever counts as last minute for your team
  • Send handoff notices to a shared channel instead of a direct message, or switch them off entirely
  • Filter the queue down to one meeting type or one host when several people share the same desk

FAQs

Which meetings actually show up in this queue?
Only the ones still waiting on a human decision. If you have turned on the setting that makes a meeting type require your confirmation, those requests land here instead of going straight onto your calendar. Meetings that are already confirmed never clutter the list.
How is this different from the bookings page I already have?
Cal.com splits your bookings across separate Upcoming, Unconfirmed, Recurring, Past, and Cancelled tabs, so the decisions you owe people are mixed in with everything else. This app pulls just the decision work onto one screen, sorts it by what starts soonest, and adds the customer context you would otherwise go hunting for in your CRM.
Will this work if I do not use HubSpot?
Yes. The customer context beside each name is an optional column, and the queue and all the action buttons work without it. You can also point it at a different CRM when you set the app up.
What does the attendee see when I decline or move a meeting?
Nothing changes about the emails they normally get. Cal.com sends its usual notifications, and the reason you type when declining or rescheduling gets passed along with it, so the person is not left guessing.
Can more than one person work the queue?
Yes. Anyone you give access to can open it, and every action takes effect in Cal.com immediately, so a refresh always shows the current state of the queue rather than a stale copy.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Plan a field sales day around drive time and neglected accounts

Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.

Geolocation
HubSpot
Google Calendar
App
Find ICP accounts, verify the emails, file them in HubSpot

One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.

Hunter
HubSpot
App
Browse and shortlist creators without burning audit credits

Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.

HypeAuditor
Airtable
Slack
App
Hiring funnel dashboard for every open Hireflix role

One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.

Hireflix
Slack
App
Competitive battlecard workspace ranked by open pipeline

See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.

Guru
HubSpot
Slack Bot
App

Stop letting meetings rot in an unconfirmed tab.

Open one queue each morning, decide with the full customer picture in front of you, and clear it before your first call.