Requirements
- A HubSpot Professional or Enterprise account with access to the scheduling functionality used by the Scheduler API.
- A HubSpot Super Admin, or an administrator with authority to install Marketplace apps and manage integrations.
- Permission from your organization to share the documented data with BookableCheck and its subprocessors.
- For eventual page transfers, an eligible replacement user with the required HubSpot seat and a connected calendar.
Core OAuth access
The first installation asks HubSpot for these focused scopes:
| Scope | Why it is needed |
|---|---|
crm.objects.owners.read | Read active and archived owners and match supported HubSpot user identifiers. |
scheduler.meetings.meeting-link.read | Read supported personal, group, and round-robin scheduling-page metadata. |
oauth | HubSpot's standard OAuth grant for installing and reconnecting the app. |
BookableCheck does not request a scheduling-page write scope and cannot change the organizer or guests on an external Google or Microsoft calendar event.
Install step by step
- Select Connect HubSpot from this site.
- Sign in to HubSpot and choose the intended portal. Verify the portal ID before continuing.
- Review the exact scopes on HubSpot’s authorization screen and approve them.
- HubSpot returns you to BookableCheck, which validates the installation and opens the native app page.
- The initial scan is queued. Keep the app open or return later; the scan does not need the browser to stay connected.
What the free scan keeps
Owner and scheduling-page data are processed to calculate the result, then discarded. The persisted free record contains only the portal-level deactivated-user count, risky-link count, scan completeness status, and completion timestamp.
Free and unauthorized API responses never contain user names, email addresses, scheduling-page names, slugs, URLs, or finding records.
Upgrading to Pro
- An authorized admin starts Stripe Checkout from the BookableCheck app page.
- Stripe collects the billing details. There is no trial.
- BookableCheck waits for Stripe’s signed subscription webhook; the browser success page does not grant access.
- After confirmation, BookableCheck enables Pro and queues a detailed scan.
Only one active BookableCheck subscription is permitted for each HubSpot portal.
Future-meeting reassignment
Before the first Pro meeting scan, BookableCheck uses the same app/client ID to request two conditionally required scopes:
| Conditional scope | Why HubSpot requires it |
|---|---|
crm.objects.contacts.read | HubSpot's official 2026-03 Meetings specification maps meeting search and read to this scope. BookableCheck never calls a Contacts endpoint. |
crm.objects.contacts.write | HubSpot maps meeting batch update to this scope. BookableCheck writes only hubspot_owner_id on the exact CRM meeting records an authorized admin confirms. |
Pro inventories future CRM meeting records owned by inactive users. An authorized admin can choose an active replacement, review the exact records, and confirm a bulk update to hubspot_owner_id. The operation returns per-record results and a verification scan checks the new state.
The feature stores only the meeting ID, owner ID, start and end times, outcome, and a validated HubSpot link. BookableCheck does not retrieve attendee identities, titles, descriptions, notes, locations, or contact associations.
After setup
Continue to Using BookableCheck to interpret findings and create an offboarding case. If installation fails, see Support.