> For the complete documentation index, see [llms.txt](https://prohelp.assetpanda.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prohelp.assetpanda.com/integrations-store/data-sync/connectwise-integration.md).

# ConnectWise Integration

You can integrate Asset Panda Pro and ConnectWise Cloud to pull device information from ConnectWise into Asset Panda. This integration ensures you have up-to-date information in Asset Panda Pro to manage your assets more efficiently.The Asset Panda and ConnectWise integration supports uni-directional data synchronization, pulling data from ConnectWise into Asset Panda.&#x20;

{% hint style="info" %}
ConnectWise is a third-party application. Asset Panda does not control updates made by ConnectWise. For information on ConnectWise, see [ConnectWise resources](https://www.connectwise.com/resources).&#x20;
{% endhint %}

You must perform the following steps to integrate ConnectWise with Asset Panda Pro:

* **Generate ConnectWise API credentials:** Create and configure the ConnectWise account and API credentials.
* **Configure Asset Panda Integration:** Configure and map the ConnectWise data fields in Asset Panda Pro.
* **Ensure Data Accuracy:** Ensure that the data fetched from ConnectWise is accurately mapped and stored in Asset Panda. &#x20;

***

## Prerequisites <a href="#prereqs" id="prereqs"></a>

* Active ConnectWise and Asset Panda Pro accounts
* Administrative permissions in ConnectWise and Asset Panda

***

## ConnectWise tasks <a href="#cw-tasks" id="cw-tasks"></a>

### Create a role

1. Log into **ConnectWise Manage** with an administrator account.
2. Navigate to **System > Security Roles**.
3. Click **+** to create a new role.
4. Enter a **Role ID** (for example, <kbd>AssetPandaIntegration</kbd>).
5. Assign the following permissions:
   * **Companies >** **Company Maintenance**: Set **Inquire Level** to **All**.
   * **Companies > Configurations**: Set **Inquire Level** to **All**.
   * **Companies > Contacts**: Set **Inquire Level** to **All**.
   * **Finance >** **Agreements**: Set **Add**, **Edit**, and **Inquire Levels** to **All**.
   * **Procurement >** **Product Catalog**: Set **Inquire Level** to **All**.
   * **Service Desk >** **Service Tickets**: Set **Add** and **Inquire Levels** to **All**.
6. Click **Save**.

***

### Create an API member

1. In ConnectWise, navigate to **System > Members**.
2. Select the **API Members** tab.
3. Click **+**.
4. Provide the following details:
   * **Member ID**: Enter a unique identifier (for example, <kbd>AssetPandaAPI</kbd>).
   * **Member Name**: Enter a name (for example, <kbd>Asset Panda Integration</kbd>).
   * **Role ID**: Select the security role created earlier.
   * **Level**: Set to **Corporate**.
   * **Email**: Provide a valid email address.
5. Click **Save**.

***

### Generate API credentials&#x20;

1. In ConnectWise, open the newly created API member.
2. Go to the **API Keys** tab.
3. Click **+** to create a new API key.
4. Enter a **Description** (for example, <kbd>Asset Panda API Key</kbd>).
5. Click **Save**. The system generates a **Public Key** and **Private Key**.
6. Copy and store the keys for future use.

{% hint style="warning" %}
The Private Key cannot be retrieved later, so save the keys securely to ensure it is accessible later.
{% endhint %}

***

## Asset Panda Pro tasks

### Set up the ConnectWise integration

1. Log into Asset Panda Pro with an administrator account
2. Navigate to **Settings > Account Management**.
3. Expand the appropriate account and module.
4. Click **Manage** in the Integrations card.
5. In the **ConnectWise** tile, click **Add**, and then click **Edit**.

{% hint style="info" %}
To ensure full access and proper functionality, the Public & Private Keys must be generated using a user with an ADMIN role in ConnectWise.&#x20;
{% endhint %}

8. Enter the following details:
   * **URL**: Web address of the system to which you are connecting. This identifies the location of the service.
   * **Company Name**: Organization’s unique identifier within the connected system, which helps link your account.
   * **Public Key**: Unique identifier used for authentication. This key is part of a secure login process.
   * **Private Key**: Confidential code that, when used with the Public Key, verifies access permissions.
   * **Is Self Hosted (Checkbox)**: Specifies whether the system runs on a private server instead of a cloud-based service.
9. Click **Test and Save Connection** to verify the authentication.&#x20;
10. Click **Add mapping.**
11. In the **Mapping** section, map the appropriate field from ConnectWise to the relevant column in your Asset Panda Pro collection. See [Configure data mapping and filtering](#configure-data-mapping-and-filtering).
12. Click **Save**.

***

### Configure data mapping and filtering

During integration, ConnectWise fields must be mapped to the corresponding Asset Panda Pro fields to ensure accurate data synchronization. Proper mapping prevents duplication and ensures that records are updated correctly.

#### Custom field support

Custom fields from ConnectWise can be mapped to Asset Panda Pro fields during integration setup to sync additional business-specific information beyond the default ConnectWise fields. The integration supports custom fields for all supported external entities, including the following field types:

* Text
* Numeric
* Percentage
* Date
* URL
* Checkbox
* SSL-supported list and radio field variations

{% hint style="info" %}
Field behavior depends on how the custom field is configured in ConnectWise. For example, date-based custom fields support date mapping only when the source system uses a date picker.
{% endhint %}

#### Unique identifiers

A unique identifier is a field that remains constant and is distinct for each record, ensuring accurate data syncing and preventing duplicates between ConnectWise and Asset Panda. For example:

* Use **Company ID** for company records.
* Use **Product SKU** for products.
* Use **Ticket Number** for service tickets.
* Use **Agreement ID** for agreements.

{% hint style="danger" %}
Do not use fields like **Company Name**, **Phone**, or **Status** as unique identifiers, as they can change over time, leading to sync errors.
{% endhint %}

You can set up [an automation](/settings/account-management/automations.md) to ensure data stays up to date by syncing records at scheduled intervals.

#### ConnectWise fields

| Field Name                                                               | Description                                    | Mapping & Filtering Guidance                                            |
| ------------------------------------------------------------------------ | ---------------------------------------------- | ----------------------------------------------------------------------- |
| **Address 1**                                                            | Primary address of the company                 | Map to address fields; filter by region if needed.                      |
| **Address 2**                                                            | Additional address details                     | Optional for extended address information.                              |
| **City**                                                                 | Company’s city location                        | Map to city fields; filter by city if required.                         |
| **Company**                                                              | Official company name                          | Map to company name in Asset Panda; avoid using as a unique identifier. |
| <p><strong>Company ID</strong><br><em>Unique identifier</em></p>         | System-generated unique company identifier     | Best choice for a unique identifier.                                    |
| <p><strong>Company Identifier</strong><br><em>Unique identifier</em></p> | Alternate internal company ID                  | Can be used as a unique identifier, if structured properly.             |
| **Country**                                                              | Country of operation                           | Map to country fields; filter by specific countries.                    |
| **Number of Employees**                                                  | Total employee count                           | Use for reporting; filter by size if needed.                            |
| **Phone**                                                                | Primary contact number                         | Map to phone fields; not suitable for filtering.                        |
| **State**                                                                | State or province location                     | Useful for filtering by region.                                         |
| **Status**                                                               | Active, inactive, or other status              | Filter to include only active records.                                  |
| **Type**                                                                 | Classification (for example, Client or Vendor) | Filter by type to sync relevant data.                                   |
| **Website**                                                              | Company’s official website                     | Map to website fields.                                                  |
| **Zip**                                                                  | Postal or ZIP code                             | Map to ZIP code fields; filter by location if needed.                   |

***

## Troubleshooting

<table><thead><tr><th width="178.59375" valign="top">Issue</th><th>Steps to Resolve</th></tr></thead><tbody><tr><td valign="top">Test and Save Connection fails</td><td><ol><li>Set <strong>Companies > Contacts</strong> to <strong>Inquire: All</strong> in the security role.</li><li>Confirm keys were made by a ConnectWise admin.</li><li>Re-check that the <strong>URL</strong> and <strong>Company Name</strong> are typed correctly.</li><li>Check that the <strong>Is Self Hosted</strong> selection matches your setup (Cloud = unchecked).</li><li>If the issue persists, regenerate the Public/Private Key pair.</li></ol></td></tr><tr><td valign="top">Data missing after a sync</td><td><ul><li><p>Set <strong>Inquire: All</strong> for the specific record type:</p><ul><li>Companies > Configurations for configs</li><li>Companies > Contacts for contacts</li></ul></li><li>Check that mapping filters aren't excluding records (for example, Status = Active).</li></ul></td></tr><tr><td valign="top">Duplicate records after sync</td><td><ul><li><p>Confirm that the unique identifier is Company ID, Product SKU, Ticket Number, or Agreement ID.</p><ul><li>Do not use Company Name, Phone, or Status as the identifier.</li></ul></li></ul></td></tr><tr><td valign="top">Custom fields are blank or not syncing</td><td><ul><li>Confirm the field type is supported: Text, Numeric, Percentage, Date, URL, Checkbox, or list/radio</li><li>Date fields only sync if set up as a date picker in ConnectWise.</li></ul></td></tr></tbody></table>
