---
title: "Connectwise Connector"
slug: "connectwise-connector"
description: "Seamlessly integrate with ConnectWise API to sync configurations, agreements, SLAs, and tickets, enhancing asset management and data consistency."
updated: 2026-07-17T15:43:45Z
published: 2026-06-12T14:42:21Z
canonical: "docs.lansweeper.com/connectwise-connector"
---

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

# Connectwise Connector

Note on third‑party tools

              

We aim to provide accurate and helpful details about third‑party tools, but we can’t guarantee that this information is always complete or up to date. If you notice any discrepancies, feel free to share them in the feedback section below. For the most reliable information, please always refer to the third‑party tool’s official documentation.

The ConnectWise Connector enables seamless integration with the ConnectWise API to sync configurations, agreements, SLAs and tickets. It allows users to get, add and update configurations via actions and filters.

The component key is **connectwiseConnector.**

## API Documentation

This component was built using the [ConnectWise Api Doc](https://developer.connectwise.com/Products/ConnectWise_PSA/REST).

## Connections (Authentication)

### ConnectWise PSA Connection

| Input | Notes | Example |
| --- | --- | --- |
| ConnectWise PSA Site (string/ Required) | Base site for ConnectWise PSA | staging.connectwisedev.com |
| ConnectWise Company ID (string / Required) | Company ID for ConnectWise REST | lansweeper_f |
| ConnectWise Public Key | Public key for ConnectWise REST | Bwgy949Of41PUnsH |
| ConnectWise Private Key (string / Required) | Private Key for ConnectWise REST | fNTWV5Gl5w4GyA5G |

### Lansweeper Connection

| Input | Notes | Example |
| --- | --- | --- |
| Access Token (string / Required) | Lansweeper Access Token for REST | lsf_eyJ0b2tlbiI6ImQwZWVjOWZkZWYzZTA3ZGRiY2VlZTZmNzk3MmZmYWYyOGZkNDFhMGU0YTdhYWU |

## Endpoint Mapping Information

Data on which information will need to be posted/referenced for an endpoint (Endpoint in table) as prerequisites (Mapped Endpoints) before posting that data to an endpoint.

If a ConnectWise configuration needs to be created, we will need to pass the enumerated fields as references, such as types, status, and locations. For example, if a location "California" doesn't already exist in the ConnectWise database, then we first need to create it and then use the reference to create a configuration.

| Endpoint | Mapped Endpoints (Pre-requisites) |
| --- | --- |
| `/company/configurations` | 1. `/company/configurations/types` (req) 2. `/company/configurations/statuses` (req) 3. `/company/companies` (req) 4. `/system/locations` (client req) 5. `/procurement/manufacturers` (client req) |
| `/company/configurations/types` | Not required |
| `/company/configurations/status` | Not required |
| `/company/companies` | Not required |
| `/system/locations` | `/system/myCompany/corporateStructureLevels` (Need confirmation) |
| `/procurement/manufacturers` | Not required |

## Data Sources

### Company

This data source is used to provide a company reference that can be used in config variables.

The company list is fetched from an API, and users can select their company from the dropdown shown in the screenshot below. This company reference is then used to post or update ConnectWise configurations.

## Actions

### List Locations

This action is used to fetch a list of locations

**Key:** `listOfLocationsAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Conditions (string / Optional) | Search results based on the fields returned in a GET | `/company/contacts?conditions=name=&quot;test&quot;` |
| Child Conditions (string / Optional) | Searching arrays on endpoints that list childConditions under parameters | `/company/contacts?childconditions=communicationItems/value like &quot;&lt;john@Outlook.com&gt;&quot; AND communicationItems/communicationType=&quot;Email&quot;` |
| Custom Field Conditions (String / Optional) | Allows searching custom fields when customFieldConditions is listed in the parameters | `/company/contacts?customFieldConditions=caption=&quot;TomNumber&quot; AND value !=null` |
| Page (integer / Optional) | Specifies the page number to fetch | 2 |
| Page Size (integer / Optional) | Specifies number of records to fetch. If not provided default value will be 25 | 200 |

#### Pagination Scenarios

| Page Number | Page Size | Expected Result |
| --- | --- | --- |
| NA | NA | Fetch all records from ConnectWise. Example: if total is 15,000 → return all 15,000 records |
| 2 | NA | Fetch 25 records starting from page 2. **Range: 26 to 50** |
| 2 | 100 | Page size = 100, skip the first 100 records (page 1), then fetch the next 100. **Range: 101 to 200** |
| 2 | 200 | Page size = 200, skip 200, fetch next 100. **Range: 201 to 300** (but only up to 100 will be returned) |
| NA | 300 | Default Page = 1, fetch 300 records on page 1. Max Page Size = 1000 |

### Create Location

This action is used to create a location

**Key:** `createLocationAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Name (string / Required) | Name of the location to be created | test-location |
| Structure Level Id (string / Required) | Provide a reference of Corporate Structural Level (Level 1 to Level 5) | 1 |

### List Configuration Types

This action is used to fetch a list of configuration types

**Key:** `listConfigurationTypes`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Conditions (string / Optional) | Search results based on the fields returned in a GET | `/company/contacts?conditions=name=&quot;test&quot;` |
| Child Conditions (string / Optional) | Searching arrays on endpoints that list childConditions under parameters | `/company/contacts?childconditions=communicationItems/value like &quot;&lt;john@Outlook.com&gt;&quot; AND communicationItems/communicationType=&quot;Email&quot;` |
| Custom Field Conditions (String / Optional) | Allows searching custom fields when customFieldConditions is listed in the parameters | `/company/contacts?customFieldConditions=caption=&quot;TomNumber&quot; AND value !=null` |
| Page (integer / Optional) | Specifies the page number to fetch | 2 |
| Page Size (integer / Optional) | Specifies number of records to fetch. If not provided default value will be 25 | 200 |

#### Pagination Scenarios

| Page Number | Page Size | Expected Result |
| --- | --- | --- |
| NA | NA | Fetch all records from ConnectWise. Example: if total is 15,000 → return all 15,000 records |
| 2 | NA | Fetch 25 records starting from page 2. **Range: 26 to 50** |
| 2 | 100 | Page size = 100, skip the first 100 records (page 1), then fetch the next 100. **Range: 101 to 200** |
| 2 | 200 | Page size = 200, skip 200, fetch next 100. **Range: 201 to 300** (but only up to 100 will be returned) |
| NA | 300 | Default Page = 1, fetch 300 records on page 1. Max Page Size = 1000 |

### Create Configuration Type

This action is used to create a configuration type

**Key:** `createConfigurationTypeAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Name (string / Required) | Name of the configuration type to be created (Max length: 50) | test-configuration |

### List Manufacturers

This action is used to fetch a list of manufacturers

**Key:** `listOfManufacturersAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Conditions (string / Optional) | Search results based on the fields returned in a GET | `/company/contacts?conditions=name=&quot;test&quot;` |
| Page (integer / Optional) | Specifies the page number to fetch | 2 |
| Page Size (integer / Optional) | Specifies number of records to fetch. If not provided default value will be 25 | 200 |

#### Pagination Scenarios

| Page Number | Page Size | Expected Result |
| --- | --- | --- |
| NA | NA | Fetch all records from ConnectWise. Example: if total is 15,000 → return all 15,000 records |
| 2 | NA | Fetch 25 records starting from page 2. **Range: 26 to 50** |
| 2 | 100 | Page size = 100, skip the first 100 records (page 1), then fetch the next 100. **Range: 101 to 200** |
| 2 | 200 | Page size = 200, skip 200, fetch next 100. **Range: 201 to 300** (but only up to 100 will be returned) |
| NA | 300 | Default Page = 1, fetch 300 records on page 1. Max Page Size = 1000 |

### Create Manufacturer

This action is used to create a manufacturer

**Key:** `createManufacturerAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Name (string / Required) | Name of the manufacturer to be created | lenovo |

### List Configuration Status

This action is used to fetch a list of configuration statuses

**Key:** `listConfigurationStatus`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Conditions (string / Optional) | Search results based on the fields returned in a GET | `/company/contacts?conditions=name=&quot;test&quot;` |
| Page (integer / Optional) | Specifies the page number to fetch | 2 |
| Page Size (integer / Optional) | Specifies number of records to fetch. If not provided default value will be 25 | 200 |

#### Pagination Scenarios

| Page Number | Page Size | Expected Result |
| --- | --- | --- |
| NA | NA | Fetch all records from ConnectWise. Example: if total is 15,000 → return all 15,000 records |
| 2 | NA | Fetch 25 records starting from page 2. **Range: 26 to 50** |
| 2 | 100 | Page size = 100, skip the first 100 records (page 1), then fetch the next 100. **Range: 101 to 200** |
| 2 | 200 | Page size = 200, skip 200, fetch next 100. **Range: 201 to 300** (but only up to 100 will be returned) |
| NA | 300 | Default Page = 1, fetch 300 records on page 1. Max Page Size = 1000 |

### Create Configuration Status

This action is used to create a configuration status

**Key:** `createConfigurationStatusAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Description (string / Required) | Description of the configuration Status to be created (Max length: 50) | test-active |
| Closed Flag (boolean / Optional) | Closed flag of the configuration status (Default: false) | true |
| Default Flag (boolean / Optional) | Default flag of the configuration status (Default: false) | true |

### Match Configurations

This action is used to match external assets with ConnectWise configurations

**Key:** `matchConfigurationsAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Conditions (string / Optional) | Search results based on the fields returned in a GET | `/company/contacts?conditions=name=&quot;test&quot;` |
| Case sensitive match (Boolean / Required) | Specifies how to match the external data with ConnectWise data (default: true) | false |
| Configuration Name Path (String / Optional) | Specifies the path for the name of the configuration | asset.general.name |
| Serial Number Path (String / Optional) | Specifies the path for serial number of the asset | asset.general.serialNumber |
| Mac Address Path (String / Optional) | Specifies the path of the mac address of the asset | asset.network.macAddress |
| Model Number Path (String / Optional) | Specifies the path of the model number of the asset | asset.model |
| IP Address Path (String / Optional) | Specifies the path of the ip address of the asset | asset.network.ipAddress |
| Additional Field Mappings (key-value pairs) | Specifies the path mappings for key-value pairs. Can enter multiple key-value pairs. | **Key:** `asset.general.warranty` **Value:** `warrantyDetails` **Available ConnectWise paths:** - type.name - status.name - company.name - contact.name - vendor.name - site.name - location.name - department.name - manufacturer.name - serialNumber - deviceIdentifier - modelNumber - tagNumber - warrantyExpirationDate - vendorNotes - notes - macAddress - lastLoginName - billFlag - backupSuccesses - backupIncomplete - backupFailed - backupRestores - backupServerName - backupBillableSpaceGb - backupProtectedDeviceList - backupYear - backupMonth - ipAddress - defaultGateway - osType - osInfo - cpuSpeed - ram - localHardDrives - activeFlag - mobileGuid - companyLocationId - showRemoteFlag - showAutomateFlag - needsRenewalFlag |
| Custom Field Mappings (JSON / Optional) | Specifies the JSON with field mappings that contains ConnectWise custom field paths with corresponding external data | `[{&quot;asset.general.key&quot;: &quot;ls_asset_id&quot;},{&quot;asset.general.url&quot;: &quot;ls_asset_url&quot;},{&quot;software.general&quot;: &quot;ls_software&quot;}]` |
| External Data (JSON / Required) | Specifies the JSON with external Data. The JSON should be an array of objects where objects are assets | See example below |

**External Data Example:**

```
[
  {
    "asset": {
      "id": "567",
      "general": {
        "type_key": "LTEwLUFzc2V0VHlwZS02ZGQyY2MyZC0zOWM2LTQ2YzAtYTAxOS1hYTQ2YWUzNmM1MjI=",
        "key": "0f5ac0be-93e3-3a9d-8fcb-02904d4f42d8",
        "manufacturer": "Rockwell Automation",
        "name": "166.246.143.187/1/7",
        "state": "Active",
        "type": "OT"
      }
    }
  }
]
```

### List Agreements for Configurations

This action is used to fetch a list of agreements for configurations

**Key:** `listAgreementsForConfigurationsAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Configuration Request Payload (array / Required) | Specifies the configuration payload for fetching agreements | `[Config1, Config2, &#x2026;]` |

**Sample Output:**

```
[
  {
    "id": 9015,
    "name": "109.164.219.139/1/5",
    "customFields": {
      "ls_asset_id": "01771f50-6a8c-325c-a3d6-bd2681282014"
    },
    "sla": null,
    "agreements": [
      {
        "id": 538,
        "name": "test",
        "startDate": "29/09/2000",
        "endDate": "30/09/2028",
        "agreementStatus": "Active",
        "type": {
          "id": 5,
          "name": "Block Time - One time",
          "_info": {
            "type_href": "https://api-staging.connectwisedev.com/v4_6_release/apis/3.0//finance/agreements/types/5"
          }
        }
      }
    ]
  }
]
```

### List Tickets for Configurations

This action is used to fetch a list of tickets for configurations

**Key:** `listTicketsForConfigurationsAction`

| Input | Notes | Example |
| --- | --- | --- |
| Connection (connection / Required) | ConnectWise connection | — |
| Configuration Request Payload (array / Required) | Specifies the configuration payload for fetching tickets | `[Config1, Config2, &#x2026;]` |

**Sample Output:**

```
[
  {
    "id": 9015,
    "name": "109.164.219.139/1/5",
    "customFields": {
      "ls_asset_id": "01771f50-6a8c-325c-a3d6-bd2681282014"
    },
    "tickets": [
      {
        "id": 538,
        "summary": "test",
        "recordType": "ServiceTicket",
        "status": {
          "id": 16,
          "name": "New (not responded)",
          "Sort": 0,
          "_info": {
            "status_href": "https://api-staging.connectwisedev.com/v4_6_release/apis/3.0//service/boards/0/statuses/16"
          }
        },
        "closedFlag": false
      }
    ],
    "ticketsInfo": {
      "totalTickets": 1,
      "openTickets": 1,
      "closedTickets": 0
    }
  }
]
```

### Configurations Sample Input

Can be used in **listAgreementsForConfigurationsAction** and **listTicketsForConfigurationsAction** as config1, config2, etc.

```
[
  {
    "id": 10585,
    "name": "1756-EafgN/C 2178921900",
    "type": {
      "id": 139,
      "name": "ls_OT"
    },
    "status": {
      "id": 34,
      "name": "ls_Don't show"
    },
    "company": {
      "id": 6,
      "identifier": "BlueLightCo",
      "name": "Blue Light, Co."
    },
    "serialNumber": "00d0c39f",
    "modelNumber": "1756-EN678/D",
    "purchaseDate": "2025-10-11T07:35:18Z",
    "warrantyExpirationDate": "2025-10-09T07:34:42Z",
    "macAddress": "00:1D:9C:D1:F6:DF",
    "billFlag": false,
    "ipAddress": "166.139.180.82",
    "customFields": [
      {
        "id": 5,
        "caption": "ls_asset_id",
        "type": "Text"
      },
      {
        "id": 6,
        "caption": "ls_asset_url",
        "type": "Text"
      },
      {
        "id": 7,
        "caption": "ls_software",
        "type": "TextArea"
      }
    ]
  }
]
```

## Integration Workflows

### Asset Synchronization Integration

The Asset Synchronization Integration synchronizes assets from Lansweeper and migrates them into ConnectWise as configurations. The integration supports both configuration creation and updates by managing reference data, performing matching logic, and executing batched operations to ensure optimal performance.

#### Implementation

The process begins with the "List Assets" action from Lansweeper, which retrieves the list of assets used as input for the synchronization process.

Before creating or modifying configurations, the integration verifies that all required reference objects needed by ConnectWise are available. The following subflows are invoked sequentially:

- **Location Flow**
- **Manufacturer Flow**
- **Status Flow**
- **Type Flow**

Each subflow:

- Fetches existing records from ConnectWise
- Creates the reference objects if they do not already exist

The resulting reference data is then stored and reused during configuration creation and modification to maintain data consistency throughout the process.

#### Matching Process

The **"Match Configurations"** action is then executed:

- This step receives the asset data and compares it with existing ConnectWise configurations to identify synchronization status
- The output includes two arrays:
  - **matched[]**: Assets that already exist in ConnectWise (existing configurations)
  - **unmatched[]**: Assets that are new and need to be created as configurations

#### Creating New Configurations

For assets in the **unmatched[]** list:

- A configuration creation payload is constructed using the asset data and previously prepared reference objects
- Each payload object is appended to a batch array
- The batched payload (in groups of 50) is passed to the "Bulk Configuration Creation" action to create configurations in ConnectWise
- This batching mechanism ensures efficient API utilization

#### Updating Existing Configurations

For assets in the **matched[]** list:

- The integration validates and updates the related reference objects (Location, Manufacturer, Status, Type) if required
- A modification payload is created containing only the fields that differ (i.e., unmatchedFields)
- The modification payloads are aggregated into batches of 50
- Each batch is passed to the "Bulk Configuration Modification" action to update the existing configurations in ConnectWise

### Tickets, Agreements and SLA Sync Integration

The ConnectWise to Lansweeper synchronization flow ensures that data from ConnectWise configurations is accurately reflected in Lansweeper assets. This integration synchronizes both metadata and relationship details, including agreements and tickets, and updates Lansweeper assets with this contextual information to maintain data consistency across systems.

#### Implementation

The flow begins by invoking the Cross Flow responsible for custom field synchronization:

- This subflow validates whether the required custom fields exist in Lansweeper
- If any custom field is missing, it is created dynamically before the main synchronization process proceeds

The integration retrieves configuration data from ConnectWise using the "List of Configurations" action. The output from this action serves as input for subsequent operations that associate configurations with related agreements and tickets.

The following actions are executed sequentially using the configuration data:

- **List Agreements by Configuration**: Fetches all agreements linked to each configuration
- **List Tickets by Configuration**: Retrieves all tickets associated with each configuration

The integration then uses a Code Block component to construct the final asset payloads:

- This component transforms ConnectWise configuration, agreement, and ticket data into a payload structure that aligns with Lansweeper's asset schema
- The prepared payload array is then passed to the next step for iteration

A Loop component iterates over each payload object, and the integration calls the "Edit Asset" action of Lansweeper for each asset. This updates or enriches the existing Lansweeper assets with the corresponding ConnectWise data.

#### Agreement Data Captured

For Agreements, the following details are captured and updated in Lansweeper:

- Agreement ID
- Agreement Name
- Agreement Type
- Agreement Status
- Start Date
- End Date

#### Ticket Data Captured

For Tickets, the integration aggregates and stores ticket-related metrics in Lansweeper custom fields:

- **cw_total_tickets**: Total number of tickets associated with the configuration
- **cw_open_tickets**: Number of Open tickets
- **cw_closed_tickets**: Number of tickets in Closed status
- **cw_configuration_url**: Direct link to ConnectWise configuration page

Tickets are classified as open or closed based on the Boolean flag property in ConnectWise service tickets, known as "closedFlag".

This flow ensures bidirectional synchronization between ConnectWise and Lansweeper, keeping assets in Lansweeper enriched and contextually up to date with their corresponding ConnectWise records.

## Integration Setup Instructions

Navigate to the Integration folder in the repository and locate the YAML file to import into the platform.

### Update Connector References

Identify all connector components (e.g., ConnectWise, Lansweeper) in the YAML file and update them as needed. Simply replace the following placeholders with their respective key and version values for the components:

- `&lt;Lansweeper Component Version&gt;`
- `&lt;Lansweeper Component Key&gt;`
- `&lt;ConnectWise Component Version&gt;`
- `&lt;ConnectWise Component Key&gt;`

**Example:**

```
component:
  isPublic: false
  key: connectwiseConnector # Use your component key
  version: 54 # Use your published component version
```

Replace the key and version fields for each connector with the correct values published on your platform. Repeat this process for all instances of ConnectWise and Lansweeper connectors in the YAML file.

### Custom Field Setup

The ConnectWise administrator needs to create the required custom fields in ConnectWise and enter their IDs in the configuration wizard. **Make sure they are named as follows:**

- **"ls_asset_id"**: For Lansweeper Asset Key
- **"ls_asset_url"**: For Lansweeper Asset URL
- **"ls_software"**: For Lansweeper Asset Software data
- **"ls_asset_location"**: For Lansweeper Asset Location data

The administrator can view the IDs of the custom fields created in the ConnectWise UI. The IDs visible there need to be entered into the respective ID input for the custom field in the Integration configuration wizard.
