Skip to main content

Calendly integration

Trigger workflows from booked meetings and manage scheduled events on behalf of your clients' Calendly accounts.

What it does

The Calendly integration lets your agency react the moment a client's calendar fills, and act on Calendly scheduled events without leaving TaskJuice. Connect a Calendly account once and your workflows can list and read scheduled events, cancel a booking, browse event types, look up an invitee, and listen in real time as invitees book, cancel, or no-show across every workspace you operate.

Connect a Calendly account

  1. Open your workspace in TaskJuice and navigate to Connections.
  2. Choose Calendly and click Connect.
  3. Sign in to the Calendly account that owns the workspace you want to wire up and approve the requested access.
  4. TaskJuice returns you to the workspace with the connection ready to use in any workflow.

To revoke access, open your Calendly account, navigate to Integrations and API, and remove the TaskJuice authorization. See the Calendly OAuth guide for the full grant flow.

Triggers

Add a Calendly trigger to a workflow and publish. That is the whole setup.

TaskJuice creates the webhook subscription in the connected Calendly account for you: it points the subscription at an address only your workspace can receive on, subscribes it to the events your published workflows need, and attaches a signing key it generates and keeps. There is no subscription to create in Calendly, no URL to copy, and no signing key to invent.

While the trigger panel says setup is underway, TaskJuice is talking to Calendly. It normally finishes within a minute of publishing.

The triggers cover bookings, no-shows, contacts, meeting recaps, event types and routing forms. The ones most workflows start from:

  • calendly/invitee-created fires when an invitee books a Calendly scheduled event (invitee.created). The activation payload carries the event name, the originating user URI, and the full invitee object with questions and answers.
  • calendly/invitee-canceled fires when an invitee cancels a booking (invitee.canceled). Use it to update CRMs, notify Slack, or kick off recovery sequences.
  • calendly/invitee-no-show-created fires when an invitee is marked as a no-show on a scheduled event (invitee_no_show.created).
  • calendly/event-type-created and calendly/event-type-updated fire when an event type is added or changed (event_type.created, event_type.updated). Each activation carries the event type's full current state — its URI, name, slug, duration and scheduling URL — rather than a diff.
  • calendly/routing-form-submission-created fires when someone submits a Calendly routing form (routing_form_submission.created). It has an extra requirement, covered below.

Every inbound POST is authenticated by recomputing HMAC-SHA256 over the concatenation of the signed timestamp, a literal period, and the raw request body, then comparing the hex digest against the value Calendly sends in the Calendly-Webhook-Signature header (formatted as t=<unix-ts>,v1=<hmac>). Activations that fail the signature or fall outside the replay window are rejected before they reach your workflow.

Which bookings you receive

For every trigger except routing form submissions, TaskJuice registers against the Calendly user you connected, not the whole organization. You receive that account's bookings, and nothing from colleagues who share the organization. To cover several people, connect each of their accounts — one connection per Calendly user.

So for those triggers the connection needs no admin rights in Calendly. Any Calendly user can authorize TaskJuice and get working triggers.

Routing form submissions are organization-wide

calendly/routing-form-submission-created is the one exception, and it is Calendly's constraint rather than ours: Calendly delivers routing form submissions only through an organization-scope subscription. There is no user-scope equivalent to fall back to.

Two consequences, both stated on the trigger itself before you publish it:

  • The connected account must be a Calendly organization admin. Calendly refuses an organization-scope subscription from anyone else.
  • You receive submissions for every routing form in the organization, not only your own.

TaskJuice keeps the two apart rather than mixing them: publishing this trigger adds a second, organization-scope subscription carrying routing_form_submission.created and nothing else, alongside the user-scope one that carries everything else. Both deliver to the same URL and are verified with the same signing key.

If the connected account is not an admin, Calendly refuses that second subscription and TaskJuice degrades rather than failing: your other Calendly triggers keep working, and the panel reads "Partly set up" with the refused trigger named. Reconnect with an organization admin account and republish to finish it.

Unpublishing the routing-form workflow removes the organization-scope subscription on the next pass — as long as you still have another Calendly trigger published. That is the case the wider access is scoped to: it lasts exactly as long as a published workflow needs it.

If you unpublish every Calendly trigger instead, TaskJuice keeps both subscriptions registered for up to 90 days so that republishing costs no new setup. Nothing reaches your workflows in the meantime — with no published trigger subscribing to them, the deliveries are discarded on arrival — but the organization-scope subscription itself stays live at Calendly for that window. To end it immediately, disconnect the Calendly connection: that removes both subscriptions at Calendly straight away.

If registration does not finish

A failed attempt does not surface straight away: the panel keeps showing "Setting up Calendly…" while TaskJuice is still retrying, and an error message replaces it only after repeated failures. When one does, it tells you what happened and what to do. The three worth knowing in advance:

  • "Calendly rejected the connection. Reconnect your Calendly account, then republish." The OAuth authorization was revoked, or the token can no longer be refreshed. Open Connections, reconnect the account, and republish.
  • "Calendly did not confirm the registration. Registration retries automatically — no action needed." Calendly did not confirm in time. TaskJuice keeps retrying on its own, backing off between attempts; the panel clears when it succeeds.
  • "Automatic setup for Calendly stopped after repeated failures, and its triggers may not be firing. Contact support." Something has kept failing long enough that waiting is no longer the answer, and the message says what it means: if the subscription was never created, none of your Calendly triggers are receiving anything. TaskJuice still re-checks once a day behind this message, but contact support rather than wait it out.

What happens when you unpublish or disconnect

Calendly has no endpoint for changing a subscription after it is created, so TaskJuice re-registers whenever the set of events your published workflows need changes — deleting the old subscription and creating a replacement. The signing key stays the same across that swap: it belongs to the connection rather than to any one subscription, so TaskJuice reuses the key it already holds instead of minting a new one. Only the subscription's Calendly URI changes. This is invisible in normal use; it is why an event-set change is not quite instant the way it is for integrations that can be edited in place.

Unpublishing everything leaves the subscription in place and stops the events reaching your workflow; republishing within 90 days brings it straight back. Disconnecting the Calendly connection queues the subscription for deletion from the account: the delete usually lands within a minute, and if Calendly cannot be reached, TaskJuice keeps retrying on its own, backing off between attempts.

A subscription you made yourself is replaced, not adopted

Calendly never discloses an existing subscription's signing key, so TaskJuice cannot verify deliveries from a subscription it did not create. If it finds one pointing at your delivery URL, it replaces it with one of its own on the next publish.

Actions

TaskJuice ships an action for every operation in Calendly's public v2 REST API, grouped below by the part of Calendly they touch.

Scheduled events and invitees

  • calendly/list-scheduled-events lists scheduled events for a user URI with optional status and time filters, paginated by next_page_token.
  • calendly/get-scheduled-event retrieves a single scheduled event by UUID.
  • calendly/cancel-scheduled-event cancels a scheduled event with an optional reason shown to invitees.
  • calendly/list-event-invitees lists the invitees on a scheduled event, filterable by status and exact email.
  • calendly/get-event-invitee retrieves a single invitee on a scheduled event, including questions and answers.
  • calendly/book-meeting books a meeting for an invitee through the Scheduling API. Paid plans only.
  • calendly/mark-invitee-no-show, calendly/get-invitee-no-show and calendly/delete-invitee-no-show manage no-show marks.

Event types

  • calendly/list-event-types lists event types owned by a user URI, paginated by next_page_token.
  • calendly/get-event-type retrieves a single event type by UUID.
  • calendly/create-event-type creates a one-on-one event type.
  • calendly/update-event-type updates one, including deactivating it — Calendly has no delete endpoint for event types.
  • calendly/create-one-off-event-type creates an ad-hoc event type for a single meeting, bounded by a date range, a days-in-future window, or explicit spots.
  • calendly/list-event-type-hosts lists the hosts assigned to an event type.
  • calendly/create-scheduling-link mints a single-use scheduling link for an event type.
  • calendly/create-share creates a Customize Once and Share link with per-invitee overrides.

Availability

  • calendly/list-event-type-available-times lists bookable slots for an event type across a window of up to 31 days.
  • calendly/list-user-busy-times lists a user's internal and external busy periods across a window of up to 7 days.
  • calendly/list-user-availability-schedules and calendly/get-user-availability-schedule read a user's working-hours schedules.
  • calendly/list-event-type-availability-schedules and calendly/update-event-type-availability-schedules read and rewrite the schedule attached to an event type. Sending rules overwrites every existing rule, so read first.
  • calendly/list-user-meeting-locations lists the meeting location kinds available to a user and which conferencing integrations are connected.

Organization, users and groups

  • calendly/get-current-user returns the currently authenticated Calendly user, including the user URI required by every list endpoint.
  • calendly/get-user retrieves any user by UUID.
  • calendly/get-organization retrieves an organization, including its plan and billing stage.
  • calendly/list-organization-memberships and calendly/get-organization-membership read who belongs to an organization and in what role.
  • calendly/remove-user-from-organization removes a member. Admin rights required, and an owner cannot be removed.
  • calendly/list-organization-invitations, calendly/invite-user-to-organization, calendly/get-organization-invitation and calendly/revoke-organization-invitation manage the invitation lifecycle.
  • calendly/list-groups, calendly/get-group, calendly/list-group-relationships and calendly/get-group-relationship read the group structure of a Teams or Enterprise organization.

Routing forms

  • calendly/list-routing-forms and calendly/get-routing-form read an organization's routing forms and their questions.
  • calendly/list-routing-form-submissions and calendly/get-routing-form-submission read the answers given, the UTM tracking, and where each submission was routed.

Contacts

  • calendly/create-contact, calendly/get-contact, calendly/update-contact, calendly/delete-contact and calendly/list-contacts manage the connected account's contact list.
  • calendly/list-contact-custom-field-definitions and calendly/get-contact-custom-field-definition read the custom field UUIDs that create-contact and update-contact expect inside custom_fields.

Meeting recaps (Notetaker)

  • calendly/list-meeting-recaps, calendly/get-meeting-recap and calendly/get-meeting-recap-transcript read Notetaker output.
  • calendly/update-meeting-recap rewrites a recap's markdown summary, action items and discussion notes.
  • calendly/delete-meeting-recap permanently deletes a recap and its transcript.

Reporting and data compliance

  • calendly/list-activity-log-entries reads the organization admin activity log. Enterprise only.
  • calendly/list-outgoing-communications reads the SMS and email Calendly sent on the organization's behalf. Enterprise only.
  • calendly/delete-invitee-data and calendly/delete-scheduled-event-data submit GDPR erasure requests. Enterprise only, irreversible, and processed over up to seven days.
  • calendly/list-webhook-subscriptions lists webhook subscriptions scoped to an organization or user URI. Creating and deleting subscriptions is not exposed as an action — TaskJuice manages the subscription behind your triggers, and a workflow that deleted it would silently stop its own triggers firing.

Known limitations

  • Calendly enforces a per-token rate limit. When a 429 status is returned, TaskJuice surfaces it as a retryable error so the workflow can back off and retry.
  • Webhook subscriptions are scoped at creation time and cannot be re-scoped. TaskJuice registers against the connected user, so covering several people means one connection per Calendly user.
  • Calendly has no endpoint for updating a webhook subscription. Any change to the set of events your workflows need is a delete-and-recreate. The signing key carries across unchanged — it belongs to the connection, not to any one subscription — so only the subscription's Calendly URI changes. TaskJuice handles both halves; nothing about it is yours to manage.
  • Webhook signatures use a 5-minute replay window. Activations whose signed timestamp falls outside that window are rejected.
  • A queued deletion that can never complete — most commonly because the Calendly authorization was revoked before you disconnected — is retried for several days and then written off, which can leave the subscription sitting in Calendly. If you revoke TaskJuice's access in Calendly first, check the account's webhook subscriptions afterwards and remove any leftover yourself.
  • Webhook management is shared across your whole TaskJuice account, one managed subscription per app. If two of your workspaces hold connections to two different Calendly accounts, whichever workspace published most recently is the account TaskJuice manages — the other account's subscription is left behind permanently: it keeps delivering, but TaskJuice no longer updates it and does not remove it, even when you disconnect that connection. If you stop using the older account, remove its subscription in Calendly yourself.
  • Several endpoints require a Calendly Enterprise subscription. list-activity-log-entries, list-outgoing-communications, delete-invitee-data and delete-scheduled-event-data answer 403 Permission Denied — "Please upgrade your Calendly account to Enterprise." on Free, Standard and Teams plans. Groups and routing forms need at least a Teams plan; on a plan without them the list actions return an empty collection rather than an error.
  • Calendly has no delete endpoint for event types or shares. create-event-type, create-one-off-event-type and create-share leave artefacts that can only be retired from the Calendly UI (or, for event types, by setting active to false with update-event-type).
  • The TaskJuice integration targets the Calendly v2 REST API. Fields surfaced only on private or beta endpoints are not exposed.
Was this helpful?