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

# Calendly

> Scheduling — members & access

<Tabs>
  <Tab title="Overview">
    Connect Calendly with a Personal Access Token to sync organization members and run access reviews. Read-only.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the Calendly user roster — names, emails, roles and the date each membership was created, which appears on your **Access** page. Calendly's organization memberships expose no account status, so every member is listed as Active; only accepted members are read, never pending invitations.

    It calls these Calendly endpoints:

    * `/users/me`
    * `/organization_memberships`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your Calendly environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection fails to validate">
        Invalid token, or the token has no organization.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/data-library/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    A Calendly Personal Access Token scoped to organizations:read and users:read. Read-only.

    **Before you begin**

    * A Calendly account where you are the organization Owner or an Admin
    * A Personal Access Token scoped to organizations:read and users:read (created by an Owner/Admin, since a regular user's token can't see the full org roster)

    You will need:

    | Field                     | Where to find it                                       | Example                          |
    | ------------------------- | ------------------------------------------------------ | -------------------------------- |
    | **Personal Access Token** | [Open](https://calendly.com/integrations/api_webhooks) | `Calendly Personal Access Token` |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Calendly**, and click **Connect** to open the connect panel. Leave it open — it lists every value you need, and you create those in the steps below.
      </Step>

      <Step title="Open your Calendly API & Webhooks settings">
        Go to calendly.com/integrations/api\_webhooks (Integrations → API & Webhooks).

        <img src="https://mintcdn.com/dsalta/4UzgskHSsjeDN5e5/images/integrations/calendly/01-calendly-integrations-api-webhooks.png?fit=max&auto=format&n=4UzgskHSsjeDN5e5&q=85&s=21e4d913a2d56664e359eace89d8e291" alt="Calendly Integrations & apps page with webhooks typed in the search box and the API and webhooks card showing a Connected badge" style={{maxWidth:"720px",width:"100%",borderRadius:"8px"}} width="2928" height="1498" data-path="images/integrations/calendly/01-calendly-integrations-api-webhooks.png" />
      </Step>

      <Step title="Generate a Personal Access Token">
        Click Create a token (Get a token now if you have never created one), give it a name (e.g. DSALTA), and select the organizations:read and users:read scopes. Copy the token — it's shown only once. You must be an account Owner or Admin for the token to see the full organization roster.

        <Tip>Calendly warns on this screen that "personal access tokens you create as an admin will grant access to Calendly data for everyone in your organization". The token is as powerful as the role of the person who created it, so generate it from an account you control and revoke it in the same place if that person leaves.</Tip>

        <Tip>Calendly caps you at 10 personal access tokens per account and never stores the value — "After generation, they're unretrievable." If the counter on that page is already at 10/10, revoke an unused token before creating this one.</Tip>

        <img src="https://mintcdn.com/dsalta/4UzgskHSsjeDN5e5/images/integrations/calendly/02-calendly-personal-access-tokens.png?fit=max&auto=format&n=4UzgskHSsjeDN5e5&q=85&s=25a4b4795d86e2daf9c12ba0edb62d8f" alt="Calendly Your personal access tokens page with the Create a token button, a 1/10 tokens counter, and a token named dsalta_compliance listed with View scopes and Revoke actions" style={{maxWidth:"720px",width:"100%",borderRadius:"8px"}} width="2938" height="1376" data-path="images/integrations/calendly/02-calendly-personal-access-tokens.png" />
      </Step>

      <Step title="Connect Calendly">
        Paste your Personal Access Token, then click Connect.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the credential when you click **Connect**. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.
    </Check>

    <Warning>
      **If the connection is rejected.** Invalid token, or the token has no organization.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check                                                                                                                   | Severity | What it verifies                                                                    |
    | ----------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- |
    | [User access to Critical System should be valid](/integrations/calendly/user-access-to-critical-system-should-be-valid) | Info     | Checks that everyone with Calendly access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/calendly/offboarded-users-should-not-have-active-access) | High     | Checks that offboarded employees no longer have active Calendly access.             |
  </Tab>

  <Tab title="Useful links">
    | Topic   | Link                                                                                      |
    | ------- | ----------------------------------------------------------------------------------------- |
    | Setup   | [Create a Calendly Personal Access Token](https://calendly.com/integrations/api_webhooks) |
    | Setup   | [Calendly: personal access tokens](https://developer.calendly.com/personal-access-tokens) |
    | Setup   | [Calendly API scopes](https://developer.calendly.com/scopes)                              |
    | General | [Calendly website](https://calendly.com)                                                  |
    | DSALTA  | [Connection error messages](/troubleshooting/connection-error-messages)                   |
  </Tab>
</Tabs>
