> ## 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.

# Typeform

> Forms & surveys — members, workspaces & access

<Tabs>
  <Tab title="Overview">
    Connect Typeform with a read-only personal access token to sync workspace members with their roles, workspaces, and forms, and run access reviews. Read-only. Data feeds into your Access accounts and Inventory pages.

    <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>

    <Info>
      **What you'll see.** The Access page lists the members of every Typeform **workspace** the token can see, combined into one roster: a person who sits in several workspaces appears once, with their roles from each workspace joined in the role column (**Owner** or **Member**, or **Member** when Typeform reports no role). Each row shows the member's name, or their email address when Typeform carries no name. Rows whose member type is anything other than **user** are left out; a collaborator invited into a shared workspace is listed like any other member. Typeform reports no account status or join date, so every row is shown as **Active** and stamped with the date of the sync. Typeform reports no per-user MFA state, so the **MFA** column is blank (shown as a dash).
    </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 Typeform workspace rosters — names, emails and roles — which appear on your **Access** page; and your Typeform **workspaces** (form count, and whether each is the default or a shared workspace) and **forms** (type, public or private, the workspace they belong to and when they were last updated), which appear on your **Inventory** page. Forms are read best-effort after the roster and appear once you have created one. Form responses and themes are not read.

    It calls these Typeform endpoints on `api.typeform.com` (or `api.eu.typeform.com` when the region is set to `eu`):

    * `/me`
    * `/workspaces`
    * `/workspaces/{id}`
    * `/forms`

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

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        The token is invalid, or it was generated without the **workspaces:read** scope (or without **accounts:read**, which the first call needs). Typeform fixes a token's scopes when it is generated, so a token missing one cannot be edited: delete it, generate a new one with **accounts:read**, **forms:read** and **workspaces:read**, and connect again. A token whose first workspace lists no members is also rejected.
      </Accordion>

      <Accordion title="The Access page is missing workspaces or members">
        A personal token only sees the workspaces its creator can see. A token generated by a member other than the organization owner covers that member's workspaces alone, so the roster is incomplete. Generate the token as the organization owner, then disconnect and connect again. Note that disconnecting permanently deletes the data already collected from Typeform.
      </Accordion>

      <Accordion title="The connection stopped working">
        A token deleted from **Personal tokens** stops working immediately, and Typeform automatically disables a personal access token that is detected in a GitHub repository. Generate a new token, then disconnect and connect again.
      </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/compliance/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 read-only Typeform personal access token created by the organization owner. Workspaces are detected automatically. Read-only.

    **Before you begin**

    * A Typeform organization owner account — the token only sees the workspaces its creator can see.

    You will need:

    | Field | Where to find it | Example |
    | - | - | - |
    | **Personal access token** | Organization menu (upper right) → **Your settings → Personal tokens → Generate a new token** (`admin.typeform.com/user/tokens`) | Shown once |
    | **Region (optional)** | Only needed for an account in Typeform's EU data center | `eu` |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Typeform**, and click **Connect** to open the connect panel.
      </Step>

      <Step title="Sign in as the organization owner">
        Sign in at [admin.typeform.com](https://admin.typeform.com) with the organization owner. A token created by another member only sees that member's workspaces, so the member list would be incomplete.
      </Step>

      <Step title="Generate a read-only personal token">
        Open the organization menu (upper right), choose **Your settings**, then **Personal tokens** — or go straight to [admin.typeform.com/user/tokens](https://admin.typeform.com/user/tokens) — and click **Generate a new token**. Name it (for example `dsalta-readonly`), tick only **accounts:read**, **forms:read** and **workspaces:read**, generate it and copy the token.

        <Warning>
          **Do not tick any write scope.** `workspaces:write` lets a token remove teammates from a workspace; DSALTA needs only the three read scopes. Scopes cannot be edited later — a token generated without **workspaces:read** must be deleted and generated again.
        </Warning>

        <Info>
          The token is shown once. If you lose it, generate a new one. Keep it out of source repositories: Typeform automatically disables a personal token that is detected in a GitHub repository.
        </Info>
      </Step>

      <Step title="Connect Typeform">
        Return to the connect panel, paste the token, enter `eu` as the region only if your account lives in Typeform's EU data center, and click **Connect**. Workspaces are detected automatically.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the token when you click **Connect**, by reading your own user record, listing the workspaces the token can see and reading the members of the first one. A token that sees no workspace, or whose first workspace lists no members, is rejected. 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.** An invalid or deleted token, a token generated without the **accounts:read** or **workspaces:read** scope, a token that can see no workspace, or one whose first workspace lists no members.

      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/typeform/user-access-to-critical-system-should-be-valid) | Info | Checks that everyone with Typeform access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/typeform/offboarded-users-should-not-have-active-access) | High | Checks that offboarded employees no longer have active Typeform access. |
  </Tab>

  <Tab title="Useful links">
    | Topic | Link |
    | - | - |
    | Setup | [Typeform personal access tokens](https://www.typeform.com/developers/get-started/personal-access-token/) · [Typeform API scopes](https://www.typeform.com/developers/get-started/scopes/) |
    | General | [Typeform admin](https://admin.typeform.com) |
    | DSALTA | [Connection error messages](/troubleshooting/connection-error-messages) |
  </Tab>
</Tabs>
