- Documentation
- Integrations
- Apps
- Calendly integration
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
- Open your workspace in TaskJuice and navigate to Connections.
- Choose Calendly and click Connect.
- Sign in to the Calendly account that owns the workspace you want to wire up and approve the requested access.
- 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-createdfires 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-canceledfires when an invitee cancels a booking (invitee.canceled). Use it to update CRMs, notify Slack, or kick off recovery sequences.calendly/invitee-no-show-createdfires when an invitee is marked as a no-show on a scheduled event (invitee_no_show.created).calendly/event-type-createdandcalendly/event-type-updatedfire 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-createdfires 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.
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-eventslists scheduled events for a user URI with optional status and time filters, paginated bynext_page_token.calendly/get-scheduled-eventretrieves a single scheduled event by UUID.calendly/cancel-scheduled-eventcancels a scheduled event with an optional reason shown to invitees.calendly/list-event-inviteeslists the invitees on a scheduled event, filterable by status and exact email.calendly/get-event-inviteeretrieves a single invitee on a scheduled event, including questions and answers.calendly/book-meetingbooks a meeting for an invitee through the Scheduling API. Paid plans only.calendly/mark-invitee-no-show,calendly/get-invitee-no-showandcalendly/delete-invitee-no-showmanage no-show marks.
Event types
calendly/list-event-typeslists event types owned by a user URI, paginated bynext_page_token.calendly/get-event-typeretrieves a single event type by UUID.calendly/create-event-typecreates a one-on-one event type.calendly/update-event-typeupdates one, including deactivating it — Calendly has no delete endpoint for event types.calendly/create-one-off-event-typecreates 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-hostslists the hosts assigned to an event type.calendly/create-scheduling-linkmints a single-use scheduling link for an event type.calendly/create-sharecreates a Customize Once and Share link with per-invitee overrides.
Availability
calendly/list-event-type-available-timeslists bookable slots for an event type across a window of up to 31 days.calendly/list-user-busy-timeslists a user's internal and external busy periods across a window of up to 7 days.calendly/list-user-availability-schedulesandcalendly/get-user-availability-scheduleread a user's working-hours schedules.calendly/list-event-type-availability-schedulesandcalendly/update-event-type-availability-schedulesread and rewrite the schedule attached to an event type. Sendingrulesoverwrites every existing rule, so read first.calendly/list-user-meeting-locationslists the meeting location kinds available to a user and which conferencing integrations are connected.
Organization, users and groups
calendly/get-current-userreturns the currently authenticated Calendly user, including the user URI required by every list endpoint.calendly/get-userretrieves any user by UUID.calendly/get-organizationretrieves an organization, including its plan and billing stage.calendly/list-organization-membershipsandcalendly/get-organization-membershipread who belongs to an organization and in what role.calendly/remove-user-from-organizationremoves a member. Admin rights required, and an owner cannot be removed.calendly/list-organization-invitations,calendly/invite-user-to-organization,calendly/get-organization-invitationandcalendly/revoke-organization-invitationmanage the invitation lifecycle.calendly/list-groups,calendly/get-group,calendly/list-group-relationshipsandcalendly/get-group-relationshipread the group structure of a Teams or Enterprise organization.
Routing forms
calendly/list-routing-formsandcalendly/get-routing-formread an organization's routing forms and their questions.calendly/list-routing-form-submissionsandcalendly/get-routing-form-submissionread the answers given, the UTM tracking, and where each submission was routed.
Contacts
calendly/create-contact,calendly/get-contact,calendly/update-contact,calendly/delete-contactandcalendly/list-contactsmanage the connected account's contact list.calendly/list-contact-custom-field-definitionsandcalendly/get-contact-custom-field-definitionread the custom field UUIDs thatcreate-contactandupdate-contactexpect insidecustom_fields.
Meeting recaps (Notetaker)
calendly/list-meeting-recaps,calendly/get-meeting-recapandcalendly/get-meeting-recap-transcriptread Notetaker output.calendly/update-meeting-recaprewrites a recap's markdown summary, action items and discussion notes.calendly/delete-meeting-recappermanently deletes a recap and its transcript.
Reporting and data compliance
calendly/list-activity-log-entriesreads the organization admin activity log. Enterprise only.calendly/list-outgoing-communicationsreads the SMS and email Calendly sent on the organization's behalf. Enterprise only.calendly/delete-invitee-dataandcalendly/delete-scheduled-event-datasubmit GDPR erasure requests. Enterprise only, irreversible, and processed over up to seven days.calendly/list-webhook-subscriptionslists 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
429status 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-dataanddelete-scheduled-event-dataanswer403 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-typeandcreate-shareleave artefacts that can only be retired from the Calendly UI (or, for event types, by settingactiveto false withupdate-event-type). - The TaskJuice integration targets the Calendly v2 REST API. Fields surfaced only on private or beta endpoints are not exposed.