Skip to content

Reference

Calendly

Set up Calendly OAuth for scheduling automation and event management

Connect your users to Calendly for scheduling automation, event management, and availability tracking.

PropertyValue
Provider IDcalendly
CategoryProductivity
PKCESupported
Token refreshAutomatic
Redirect URIShown in Developer Portal

Sign up for the Calendly Developer Portal

Go to the Calendly Developer Portal and click Log in / Sign up — sign up with GitHub or Google. The developer account is separate from a regular Calendly user account.

Create an application

Create a new OAuth application from the developer console and enter its name.

Configure the application

Choose:

  • Kind of application — web (Alter Vault exchanges the authorization code as a confidential web client)
  • Environment — Sandbox for development (HTTP localhost allowed), Production for live data (HTTPS only)

Add the redirect URI

Add the Redirect URI from the Developer Portal to the Redirect URI field.

Enable the scopes the application will request

In the app’s scope settings, enable every scope the application will request. Newly created Calendly apps grant no API access until scopes are explicitly enabled — a scope requested at authorization but not enabled on the app is rejected.

Get credentials

Copy the Client ID, Client Secret, and Webhook signing key. The secret and signing key are only displayed once.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add Calendly provider

Go to OAuth Providers > Add Provider > Calendly.

Enter credentials

  • Client ID: Paste your Calendly Client ID
  • Client Secret: Paste your Calendly Client Secret

Select scopes

Choose the scopes the application needs.

Save

Click Save. The provider is now active.

ScopeDescription
users:readRead user profiles (GET /users/me, GET /users/{uuid}) — the minimum scope; validates the connection
event_types:readRead event type details and available times
event_types:writeCreate and modify event types
scheduled_events:readRead scheduled events and event invitee information
scheduled_events:writeCreate event invitees, cancel events or mark invitees as no-show
availability:readRead availability schedules and available times
availability:writeModify availability schedules
locations:readRead location details
routing_forms:readRead routing forms and their submissions
shares:writeCreate and customize a single-use scheduling link from an existing event type
scheduling_links:writeCreate single-use scheduling links
groups:readRead groups and group memberships
organizations:readRead organization details, memberships, and invitations
organizations:writeManage organization memberships and invitations
webhooks:readRead webhook subscriptions
webhooks:writeCreate and delete webhook subscriptions
activity_log:readRead organization activity log entries
data_compliance:writeSubmit data-deletion (compliance) requests
outgoing_communications:readRead outgoing communication records
contacts:readRead contacts
contacts:writeCreate and modify contacts
meeting_recaps:readRead meeting recaps (Notetaker)
meeting_recaps:writeManage meeting recaps (Notetaker)
  • The Calendly developer account is separate from a regular Calendly user account — sign in with GitHub or Google.
  • Newly created Calendly apps are deny-by-default: enable the scopes the application will request in the app’s scope settings, or the authorization is rejected. Legacy apps created before scoped permissions retain full access.
  • Use the Sandbox environment for development; HTTP localhost redirect URIs are allowed there. Production requires HTTPS.
  • Calendly OAuth recommends PKCE with the S256 code_challenge_method (RFC 7636); Alter Vault sends it, and authenticates the token request with the Client ID and Client Secret in an HTTP Basic Authorization header — the method Calendly documents for web clients.
  • Access tokens expire after 2 hours; refresh tokens are single-use and rotate on every refresh (Alter Vault stores the new refresh token from each response).
  • The Client Secret and Webhook signing key are revealed only at creation — save them immediately.
  • See the Calendly scope catalog and the OAuth application documentation for more details.

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Operation IDFamiliesMethodProvider path
organization-invitations/createadmin, sendPOST/organizations/{uuid}/invitations
data-compliance/delete-inviteesdelete, writePOST/data_compliance/deletion/invitees
organization-memberships/removeadmin, deleteDELETE/organization_memberships/{uuid}
scheduled-events/canceldelete, writePOST/scheduled_events/{uuid}/cancellation
webhook-subscriptions/deleteadmin, deleteDELETE/webhook_subscriptions/{webhook_uuid}
webhook-subscriptions/createadmin, writePOST/webhook_subscriptions
scheduling-links/createwritePOST/scheduling_links
event-type-available-times/listreadGET/event_type_available_times
event-types/getreadGET/event_types/{uuid}
event-types/listreadGET/event_types
invitees/getreadGET/scheduled_events/{event_uuid}/invitees/{invitee_uuid}
invitees/listreadGET/scheduled_events/{event_uuid}/invitees
organization-invitations/listreadGET/organizations/{uuid}/invitations
organization-memberships/getreadGET/organization_memberships/{uuid}
organization-memberships/listreadGET/organization_memberships
scheduled-events/getreadGET/scheduled_events/{uuid}
scheduled-events/listreadGET/scheduled_events
user-availability-schedules/listreadGET/user_availability_schedules
user-busy-times/listreadGET/user_busy_times
users/getreadGET/users/{uuid}
users/mereadGET/users/me
webhook-subscriptions/getreadGET/webhook_subscriptions/{webhook_uuid}
webhook-subscriptions/listreadGET/webhook_subscriptions

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.