> ## Documentation Index
> Fetch the complete documentation index at: https://docs.serval.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Calendly

> Connect Calendly to Serval with a personal access token so workflows can read scheduled meetings, check availability, manage your organization, and act on anything in the Calendly API.

## About Calendly

Calendly is a scheduling automation platform for booking meetings and managing availability. The Serval Calendly integration lets your workflows read and act on Calendly data - scheduled events and invitees, event types and availability, organization members and invitations, scheduling links, routing forms, and webhook subscriptions. Serval only ever talks to Calendly's official API address (api.calendly.com), using the token you provide.

**Authentication:** Personal access token (API key). An admin generates a token in Calendly and pastes it into Serval's connect form. There is no OAuth flow - the token stays valid until you revoke or replace it in Calendly.

**Data sync:** On-demand only. Serval reads from and writes to Calendly exclusively when a workflow runs. There is no background sync, no entity ingestion, and no prebuilt workflows are installed with this integration.

## What the Calendly integration enables

| Capability                         | Description                                                                                                                                             |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| See scheduled meetings             | List and read scheduled events, see each event's invitees, cancel events, and mark or clear invitee no-shows.                                           |
| Check event types and availability | Look up a user's event types, their details and hosts, and available times; create one-off event types; and read availability schedules and busy times. |
| Manage organization membership     | See who belongs to your Calendly organization, remove members, send or revoke organization invitations, and read groups and group memberships.          |
| Share scheduling links             | Create single-use scheduling links and shares.                                                                                                          |
| Read routing forms                 | List and read routing forms and their submissions.                                                                                                      |
| Notify other systems via webhooks  | List, create, read, and delete Calendly webhook subscriptions, and fetch sample webhook payloads.                                                       |
| Audit and data compliance          | Read organization activity log entries and request compliance deletion of invitee or scheduled-event data.                                              |

Anything defined in the [Calendly API](https://developer.calendly.com/api-docs) can be accessed through Serval.

## Get your credentials

You need a Calendly personal access token, generated from a Calendly account that can see the meetings, event types, and members your workflows will need - often an organization owner/admin or a dedicated service account. See the [Calendly API documentation](https://developer.calendly.com/api-docs) for background.

<Steps>
  <Step title="Log in to Calendly">
    Log in to your Calendly account.
  </Step>

  <Step title="Open the API & Webhooks page">
    Go to **Integrations**, then **API & Webhooks**, or open it directly at [calendly.com/integrations/api\_webhooks](https://calendly.com/integrations/api_webhooks).
  </Step>

  <Step title="Generate a token">
    Under **Personal Access Tokens**, click **Get a token now** (or **Generate new token** if you already have tokens).
  </Step>

  <Step title="Name the token">
    Enter a name for the token (e.g. "Serval Integration").
  </Step>

  <Step title="Create and copy the token">
    Click **Create Token**, then **Copy token**.
  </Step>
</Steps>

<Warning>
  Calendly shows the token only once. Copy it immediately - you cannot retrieve it later.
</Warning>

<Tip>
  The token acts as the person who created it. Serval can only see the meetings, event types, and members that account can see, within that account's organization. For broad coverage, generate the token from an organization owner/admin or a dedicated service account.
</Tip>

## Connect in Serval

<Steps>
  <Step title="Open the Calendly connect form">
    In Serval, add the **Calendly** integration to open the connect form.
  </Step>

  <Step title="Enter an Instance Name">
    Fill in **Instance Name** - "A friendly name for this Calendly integration instance (e.g., "Production Calendly")". The name also becomes the connection's internal identifier, so pick a stable, meaningful name up front, give each Calendly connection a distinct one, and treat it as permanent.
  </Step>

  <Step title="Paste your Personal Access Token">
    Fill in **Personal Access Token** - "A personal access token generated for your Calendly account." This is a password-style field; after saving, Serval shows it masked, with only the last 4 characters visible.
  </Step>

  <Step title="Save">
    Save the connection. Neither field shows inline validation messages, so a blank or mistyped token is accepted at save time - if the save itself fails you will see a general error such as "Failed to connect service" or "Failed to install integration".
  </Step>
</Steps>

<Note>
  Serval does not run a connection check when you save. A wrong or revoked token will not be flagged here - it surfaces the first time a workflow calls Calendly. Verify the connection right after saving (see below).
</Note>

## Verifying the connection

The Calendly integration has no automated health checks in Serval, so nothing runs after you connect and there is no pass/fail status to look for. To verify the connection:

1. Create or run a simple workflow that reads Calendly data - for example, one that lists your scheduled meetings or event types.
2. If the workflow returns Calendly data, the token works.
3. If it fails with an authentication or authorization error, generate a fresh token in Calendly and re-enter it in the connection settings.

<Tip>
  If a basic read works but a specific workflow still fails, check what the token's owner can actually see in Calendly. The token is limited to that person's visibility and organization - meetings or members outside their view are invisible to Serval.
</Tip>

## Gotchas and troubleshooting

<AccordionGroup>
  <Accordion title="The connection stopped working after I edited its settings">
    When updating this connection's settings (including rotating the token), always re-enter the full **Personal Access Token** before saving, and do not clear or blank out any pre-filled field. If the connection stops working after an edit, re-enter the token and save again. Errors during an edit appear as messages like "Failed to update configuration", "Failed to update integration: \[error message]", or "Failed to save configuration. Please try again."
  </Accordion>

  <Accordion title="The connection saved fine, but workflows fail with authentication errors">
    Calendly has no health checks in Serval, so a mistyped or revoked token is not caught at connect time - it surfaces the first time a workflow calls the Calendly API. Generate a new token in Calendly, re-enter it in the connection settings, and re-run the workflow.
  </Accordion>

  <Accordion title="Workflows cannot see certain meetings, event types, or members">
    The token acts as the person who created it. Serval sees only what that person can see, inside their Calendly organization. If workflows need broader visibility, generate the token from an organization owner/admin or a dedicated service account. If the issuing person leaves or their access changes, the token can stop working - rotate to a new token.
  </Accordion>

  <Accordion title="I lost the token and cannot see it in Serval">
    Calendly shows the token only once, and Serval stores it masked (only the last 4 characters visible) - it can be replaced but never revealed. Generate a new token in Calendly and enter it in the connection settings.
  </Accordion>

  <Accordion title="Renaming an existing connection is not safe">
    The **Instance Name** field appears pre-filled on the connection's settings page, but it doubles as the connection's internal identifier (derived from the lowercased name), so saving a new name silently changes that identifier - Serval offers no safe way to rename an existing connection. Leave the pre-filled name exactly as it is whenever you edit or reconnect. To use a different name, set up a new connection - and because the identifier comes from the lowercased name, give each Calendly connection on a team a distinct name so two connections never collide internally.
  </Accordion>
</AccordionGroup>

***

Need help? Contact **[support@serval.com](mailto:support@serval.com)** for assistance with your Calendly integration.
