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

# Teamwork.com

> Project management — members, MFA & access

<Tabs>
  <Tab title="Overview">
    Connect Teamwork.com with a site owner's API token and your site URL to sync site members with their two-factor status and projects, and run access and MFA 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 the Teamwork.com site whose URL you enter at connect time — the people the token's owner can see, which is the whole site for a site owner's or administrator's token — with their name (falling back to their full name, username, then email address), their email, their site role (**Site Owner**, **Administrator** or **Member**) and the date they were added to the site (or the date of the sync when Teamwork.com reports none). Client users, collaborators and contacts, service accounts, observers, people whose invitation is still pending, and deleted people are left out. Because deleted people are not synced, every listed member is shown as **Active**. Teamwork.com does report per-user two-factor authentication, so the **MFA** column shows **Yes** or **No**, and is blank (a dash) for a member whose record carries no value.
    </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 Teamwork.com site people roster — names, emails, site roles, two-factor flags and creation dates — which appears on your **Access** page; and your Teamwork.com **projects**, which appear on your **Inventory** page with their status (and sub-status), type, and whether they are one of Teamwork.com's sample projects. Projects are read best-effort after the roster: a failure on that call leaves the Inventory page empty without failing the sync, and a site with no projects has nothing to list. Members' last-login and last-active times and login counts are not synced, and tasks, files and messages are not read.

    It calls these Teamwork.com endpoints on your site URL (`https://{site}.teamwork.com`, or `https://{site}.eu.teamwork.com` for an EU-hosted site):

    * `/me.json`
    * `/people.json?includeObservers=false`
    * `/projects/api/v3/projects.json`

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

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        Teamwork.com API tokens are personal. A regular member's token only sees the people who share a project with its owner, and DSALTA rejects it at connect time — use the site owner's or an administrator's token. A wrong site URL is rejected the same way as a bad token: an EU-hosted site must be entered as `https://{site}.eu.teamwork.com`. A Teamwork Desk, Spaces or CRM key does not work against the Projects site either.
      </Accordion>

      <Accordion title="Someone with access to the site is not on the Access page">
        Client users, external collaborators and contacts, service accounts, observers and people whose invitation has not been accepted are not site members and are left out on purpose. A member who was deleted from the site is left out as well. The token's owner also has to be able to see the person: a token from the site owner or an administrator sees the whole site.
      </Accordion>

      <Accordion title="Inventory is empty while Access works">
        Projects are read best-effort after the roster: a failure on that call leaves the Inventory page empty without failing the sync, and a site that has not created a project yet has nothing to list. Click **Sync from integrations** on the **Integrations** page to retry.
      </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 Teamwork.com site owner's or administrator's API token together with your site URL. Read-only.

    **Before you begin**

    * A Teamwork.com site owner or administrator account — tokens are personal, and a regular member's token does not see the whole roster.

    You will need:

    | Field | Where to find it | Example |
    | - | - | - |
    | **Site URL** | Your browser's address bar once you are signed in | `https://yoursite.teamwork.com` or `https://yoursite.eu.teamwork.com` |
    | **API token** | Profile icon (bottom left) → **Edit My Details → API & Mobile → Show your Token** | Copied from the API & Mobile tab |

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

      <Step title="Sign in as the site owner or an administrator">
        Sign in to your Teamwork.com site and note its full URL from the browser: `https://{site}.teamwork.com`, or `https://{site}.eu.teamwork.com` for EU-hosted sites.

        <Info>
          A wrong region is rejected like a bad token, so copy the URL exactly. DSALTA keeps only the host name — any path after it is dropped.
        </Info>
      </Step>

      <Step title="Copy your API token">
        Click the profile icon (bottom left), then **Edit My Details**, open the **API & Mobile** tab, click **Show your Token**, and copy the key.

        <Warning>
          **Do not use a Teamwork Desk, Spaces or CRM key.** Those products have their own API hosts and keys, and they do not authenticate against the Projects site, so DSALTA rejects them.
        </Warning>
      </Step>

      <Step title="Connect Teamwork.com">
        Return to the connect panel, paste the site URL and the API token, and click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the token when you click **Connect**, by reading the token's own person record, checking that it belongs to the site owner or an administrator, and listing the site's people. 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 token, a wrong site URL or region (an EU-hosted site entered without `.eu.`), a token that belongs to a regular member rather than the site owner or an administrator, or a Teamwork Desk, Spaces or CRM key.

      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/teamwork/user-access-to-critical-system-should-be-valid) | Info | Checks that everyone with Teamwork.com access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/teamwork/offboarded-users-should-not-have-active-access) | High | Checks that offboarded employees no longer have active Teamwork.com access. |
    | [MFA should be enabled for all users](/integrations/teamwork/mfa-enabled-for-all-users) | High | Checks that every Teamwork.com site member has two-factor authentication enabled. |
  </Tab>

  <Tab title="Useful links">
    | Topic | Link |
    | - | - |
    | Setup | [Teamwork.com API authentication](https://apidocs.teamwork.com/guides/teamwork/authentication) · [Locating your API key](https://support.teamwork.com/projects/using-teamwork/locating-your-api-key) |
    | General | Your Teamwork.com site — `https://{site}.teamwork.com` or `https://{site}.eu.teamwork.com` |
    | DSALTA | [Connection error messages](/troubleshooting/connection-error-messages) |
  </Tab>
</Tabs>
