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

# Set Up the ConnectWise PSA Ticketing Integration

> Create the ConnectWise Manage security role, API member, and keys Thread needs to sync tickets, contacts, time entries, and configurations with your PSA.

This guide explains how to set up the ConnectWise PSA Integration in the platform.

During the initial setup of your account in the platform, you are prompted to set up your ticketing system. Following the prompts for ConnectWise will lead you to the following screen asking you to enter API credentials.

<Steps>
  <Step title="Leave this screen open.">
    Leave this screen open, we will come back to it later.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/19091c9e-2023-08-29-14-10-37.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=001a49af0038ce6cb8180e128b31c8e1" alt="ConnectWise API credentials entry screen in the platform setup" width="512" height="750" data-path="images/19091c9e-2023-08-29-14-10-37.png" />
    </Frame>
  </Step>

  <Step title="Open a new browser tab to configure the API user.">
    Open a new browser tab or window to continue to the next step, configuring the API user.
  </Step>
</Steps>

## 1. Configure the Security Role for the API User

<Steps>
  <Step title="Log-in to ConnectWise.">
    Log-in to ConnectWise.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/26201e3d-image.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=464d46c22baf0c2cb9e5bc838e4326df" alt="ConnectWise login screen" width="350" height="544" data-path="images/26201e3d-image.png" />
    </Frame>
  </Step>

  <Step title="Create a new security role.">
    Select in the left side panel **System** -> **Security Roles** and click on the **+** sign to create a new security role.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/04960a6d-image.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=de5a899b62fbe5afc7981eb6d06d388e" alt="System → Security Roles with the add button in ConnectWise" width="744" height="943" data-path="images/04960a6d-image.png" />
    </Frame>
  </Step>

  <Step title="Name the role and save.">
    Enter a name for the new role in the **Role ID** field and click **Save**.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/26f8cb3b-screenshot-2026-05-08-133712.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=34b43e52f54eb9c3840d95b728450c47" alt="Role ID field for a new security role in ConnectWise" width="389" height="186" data-path="images/26f8cb3b-screenshot-2026-05-08-133712.png" />
    </Frame>
  </Step>

  <Step title="Change permissions in the following categories and save.">
    Change Permissions in the following categories and click **Save** when done.
  </Step>
</Steps>

| Companies           |           |            |              |               |
| ------------------- | --------- | ---------- | ------------ | ------------- |
|                     | Add Level | Edit Level | Delete Level | Inquire Level |
| Company Maintenance | All       | All        | None         | All           |
| Configurations      | All       | All        | None         | All           |
| Contacts            | All       | All        | None         | All           |
| Manage Attachments  | All       | All        | None         | All           |
| Team Members        | All       | All        | None         | All           |

| Finance           |           |            |              |               |
| ----------------- | --------- | ---------- | ------------ | ------------- |
|                   | Add Level | Edit Level | Delete Level | Inquire Level |
| Billing View Time | All       | All        | None         | All           |
| Agreements        | None      | None       | None         | All           |

| Projects        |           |            |              |               |
| --------------- | --------- | ---------- | ------------ | ------------- |
|                 | Add Level | Edit Level | Delete Level | Inquire Level |
| Project Tickets | All       | All        | None         | All           |

| Service Desk          |           |            |              |               |
| --------------------- | --------- | ---------- | ------------ | ------------- |
|                       | Add Level | Edit Level | Delete Level | Inquire Level |
| Close Service Tickets | All       | All        | None         | All           |
| Merge Tickets         | All       | All        | None         | All           |
| Resource Scheduling   | All       | All        | All          | All           |
| Service Tickets       | All       | All        | None         | All           |

| System             |           |            |              |               |
| ------------------ | --------- | ---------- | ------------ | ------------- |
|                    | Add Level | Edit Level | Delete Level | Inquire Level |
| Manage Hosted API  | None      | None       | None         | All           |
| Member Maintenance | None      | None       | None         | All           |
| Security Roles     | None      | None       | None         | All           |
| Table Setup        | All       | All        | None         | All           |

**Update:** On the right side of Table Setup click **customize**. You will see a pop up modal in which you can Allow or Disallow particular permissions. Make sure to allow the following permissions:

* *Agreements / Agreement Type*
* *Company / Company Status*
* *Contacts / Contact Type*
* *General / Manage Hosted API*
* *Scheduling / Location*
* *Service / Email Formats*
* *Service / Priority*
* *Service / Service Board*
* *Service / SLA*
* *Service / Source*
* *Time / Work Role*

<Frame>
  <img src="https://mintcdn.com/thread/MmA6qEMELRi-vXeU/images/dd8c7843-image.png?fit=max&auto=format&n=MmA6qEMELRi-vXeU&q=85&s=1b78949d83d093b27b883968760c8294" alt="Table Setup customize modal with the required permissions allowed" width="522" height="330" data-path="images/dd8c7843-image.png" />
</Frame>

| Time & Expense             |           |            |              |               |
| -------------------------- | --------- | ---------- | ------------ | ------------- |
|                            | Add Level | Edit Level | Delete Level | Inquire Level |
| Expense Billable Option    | All       | All        | None         | All           |
| Expense Report Entry       | All       | All        | None         | All           |
| Time Entry                 | All       | All        | All          | All           |
| Time Entry Billable Option | All       | All        | None         | All           |

## 2. Create the API Member and Keys

<Steps>
  <Step title="Add a new API member.">
    Select **System** -> **Members** in the left side panel, click on **API Members** tab and click on **+** to add a new API member.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/36b848c5-image.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=d805251fc3515b24c22df897a1164615" alt="API Members tab with the add button in ConnectWise" width="765" height="166" data-path="images/36b848c5-image.png" />
    </Frame>
  </Step>

  <Step title="Fill out the required fields and assign the role.">
    Fill out all required fields, and select the role created earlier in **System** -> **Role ID**.

    1. Set **Member ID** to *Thread* (or whatever you like to call it)
    2. Make sure that **Level** is set to Corporate (Level 1).
    3. **IMPORTANT**: Remove all boards from **Service Defaults** -> **Restricted Board Access**. Click **Save**.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/351b80ab-screenshot-2026-05-08-134002.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=dae2ff3351f42e297beba1a8a9666674" alt="Restricted Board Access cleared under Service Defaults" width="745" height="790" data-path="images/351b80ab-screenshot-2026-05-08-134002.png" />
    </Frame>

    4. If you are setting up Board exclusions in your API Member there is an extra flag that has to be turned on to make callbacks from api users compliant to their board restrictions. 1) Navigate to System > Setup Tables > Manage Labs table 2) Pull up and activate the 'Callback Member Board Restrictions' lab with the Actions drop down:

    <Frame>
      <img src="https://mintcdn.com/thread/MmA6qEMELRi-vXeU/images/f3e089bb-image.png?fit=max&auto=format&n=MmA6qEMELRi-vXeU&q=85&s=62633801be2b961fff48b3240f77164f" alt="Callback Member Board Restrictions lab in Manage Labs" width="1920" height="911" data-path="images/f3e089bb-image.png" />
    </Frame>
  </Step>

  <Step title="Open the API Keys tab and add a key.">
    Select **API Keys** tab and click on **+** icon in the top left corner

    <Frame>
      <img src="https://mintcdn.com/thread/ysyi1-ysJ96KyxOf/images/712c8813-image.png?fit=max&auto=format&n=ysyi1-ysJ96KyxOf&q=85&s=b744695430805f2e348b1923d9e1acf0" alt="API Keys tab with the add button in ConnectWise" width="338" height="205" data-path="images/712c8813-image.png" />
    </Frame>
  </Step>

  <Step title="Name the key Thread and save.">
    Type "Thread" in Description field and press **Save**.

    <Frame>
      <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/3d53198b-image.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=188df1c71c168fa7a357402d9812f1f9" alt="Description field set to Thread for the new API key" width="512" height="144" data-path="images/3d53198b-image.png" />
    </Frame>
  </Step>

  <Step title="Save your public and private keys.">
    **Save your public and private keys** - while public key is always available in ConnectWise, private key is only available at the time the key is created, so please make a note of it, you will need it in the next step.

    <Frame>
      <img src="https://mintcdn.com/thread/MmA6qEMELRi-vXeU/images/e6dba202-screenshot-2026-05-08-134440.png?fit=max&auto=format&n=MmA6qEMELRi-vXeU&q=85&s=7de3c3a475fb245c2ef9d9d1a2210d5b" alt="Generated public and private API keys in ConnectWise" width="473" height="165" data-path="images/e6dba202-screenshot-2026-05-08-134440.png" />
    </Frame>
  </Step>
</Steps>

## 3. Configure Thread with the API Information

Now that you've set up your API keys, it's time to integrate ConnectWise with Thread! It's time to take the information you saved in the previous steps and enter it into the web form.

<Frame>
  <img src="https://mintcdn.com/thread/yMrisProrR453qj0/images/417c06bd-2023-08-29-14-10-37.png?fit=max&auto=format&n=yMrisProrR453qj0&q=85&s=bc7805c576073a1ea41be05ca02cc2a6" alt="Thread ConnectWise integration credentials web form" width="512" height="750" data-path="images/417c06bd-2023-08-29-14-10-37.png" />
</Frame>

<Steps>
  <Step title="Enter the Host base URL.">
    **Host** - Enter in the base URL that you use to log in to ConnectWise If you are a ConnectWise Cloud customer, you can refer to the table below for extra assistance. If you manage and/or host your own instance of ConnectWise, refer to the URL that you use to log in to ConnectWise **ConnectWise Cloud Region\*\*\*\*ConnectWise PSA URL**North Americahttps\://na.myconnectwise.netEuropehttps\://eu.myconnectwise.netAustralia and New Zealandhttps\://aus.myconnectwise.netAfricahttps\://za.myconnectwise.net
  </Step>

  <Step title="Enter your Company ID.">
    **My Company ID** - Enter in the company ID that you use to log in to ConnectWise
  </Step>

  <Step title="Enter the Public Key.">
    **Public Key** - Enter in the **Public Key** for the API key you saved in step **2.5 Create the API and Member Keys** section above.
  </Step>

  <Step title="Enter the Private Key.">
    **Private Key** - Enter the **Private Key** for the API key you saved in step **2.5** **Create the API and Member Keys** section above.
  </Step>

  <Step title="Choose whether to keep members in sync with PSA.">
    **Keep members in sync with PSA**

    1. Leave this checked to quickly enable your team's access to thread.
    2. Uncheck this if you prefer to invite members individually. If you choose this option, you will be able to invite members later.
  </Step>

  <Step title="Click Continue.">
    Once everything has been entered correctly, click **Continue** to proceed.
  </Step>
</Steps>

## ConnectWise PSA FAQ

<AccordionGroup>
  <Accordion title="My reports credit the Thread API user for closing tickets. How do we reflect which technician closed the ticket?">
    **Q: "Since my techs started using Inbox, I noticed that my reports are giving credit to the Thread API user for closing tickets. We want to make sure our reports reflect which technician closed the ticket. How do you recommend we handle this?"**

    A: ConnectWise's API does not allow vendors to impersonate users in the audit trail (only in the notes and other areas). This means that if a technician closes a ticket using Thread, it will attribute the closed by meta data in the ticket to your Thread API member. A great workaround is to update your reporting to report on tickets closed by ticket owner.

    <Frame>
      <img src="https://mintcdn.com/thread/MmA6qEMELRi-vXeU/images/f3e089bb-image.png?fit=max&auto=format&n=MmA6qEMELRi-vXeU&q=85&s=62633801be2b961fff48b3240f77164f" alt="ConnectWise reporting workaround for tickets closed by owner" width="1920" height="911" data-path="images/f3e089bb-image.png" />
    </Frame>
  </Accordion>
</AccordionGroup>

## Next: Design your Customer Experience

<Card title="Design your customer chat experience" icon="comments" href="/messenger/configurations-in-messenger">
  Set up and personalize Thread Messenger for your clients.
</Card>

<Note>
  See **Integrations** updates in the [changelog](/changelog/q3-2026).
</Note>


## Related topics

- [Set Up the ConnectWise Automate Integration](/integrations/how-do-i-set-up-connectwise-automate.md)
- [Set Up the Autotask PSA Ticketing Integration](/integrations/creating-a-autotask-api-user.md)
- [Set Up the HaloPSA Ticketing Integration](/integrations/how-to-setup-halo-psa-integration.md)
