What’s supported
Supported actions
This connector supports:- Read Actions, including full historic backfill and incremental read. Please note that incremental read is unreliable due to ConnectWise API limitations. You may get more data than what is within the time range.
- Subscribe Actions.
- Write Actions.
- Proxy Actions, using the base URL
https://{{.region}}.myconnectwise.net.
| Object | Read | Write | Subscribe |
|---|
record.patch.
When performing an update, record.id must also be provided so the connector can resolve which record to patch.
Write payload example for the contacts object:
Custom Fields
The connector supports reading and writing custom fields on supported objects, and they behave like native fields. For reads, they’re available through scheduled reads, historical backfills, and subscriptions. Each custom field is exposed ascustomField<ID>. Map it to a more readable name in your configuration with mapToName.
Example: a field with ID59representing a marketing preference is selected ascustomField59and can be mapped tomarketingEmailOn.
null.
To find a custom field’s ID, check a read response, custom fields are returned with their IDs in the customFields array.
Example integration
For an example manifest file of a ConnectWise integration, visit our samples repo on Github.Contact Communication Items
ConnectWise stores a contact’s email, phone, and fax numbers inside a nestedcommunicationItems array, which isn’t directly mappable.
To make these easy to read and write, the connector exposes the default email, phone, and fax of a contact
as flat fields, which you can map like any other contact field.
Only the default item of each category is exposed. If a contact has several emails, only the one marked as default appears in
AMPERSAND-defaultEmail.
Reading
Map these fields in a read action just like standard contact fields:john@example.com reads back as:
...Id field identifies which communication type the default value belongs to. This matters when a contact has more than one item in the same category.
Writing
Map a value toAMPERSAND-defaultEmail (or phone/fax) to set it when creating or updating a contact:
- Set just the value, and the connector uses the customer’s default type for that category.
- Set the matching
...Idfield too if you want to target a specific type (for example, a Work email vs a Home email). The value is applied to that type and marked as the default.
The
...Id fields refer to ConnectWise “communication types” configured in the customer’s ConnectWise account.
You only need them when a contact has more than one email, phone, or fax and you want to target a specific one.Advanced: partial updates with JSON Patch
If you call the write API directly, you can send a JSON Patch to change a single field, including these virtual fields:replaceon a value updates the current default item.replaceon an...Idfield switches which communication type is the default, (used together withAMPERSAND-defaultEmail, etc.)removedeletes the current default item for that category.
communicationItems array.
Using the connector
This connector uses Basic Auth, which means that you do not need to set up a Provider App before getting started. (Provider apps are only required for providers that use OAuth2 Authorization Code grant type.) To start integrating with ConnectWise:- Create a manifest file like the example above.
- Deploy it using the amp CLI.
- Embed the InstallIntegration UI component. The UI component will prompt the customer for their username and password.
- Start making Proxy Calls, and Ampersand will automatically attach the correct header required by Basic Auth. Please note that this connector’s base URL is
https://{{.region}}.myconnectwise.net.
Credential format for ConnectWise
ConnectWise uses a non-standard format for Basic Auth. The username and password fields do not correspond to the actual username and password that a customer uses to log in. Instead:- Username: The username will always begin with
CompanyId+(the plus sign is literal) and then use either thepublic key,integrator username, orMemberId(e.g.mycompany+8mr4fDio4MBPsER2). - Password: The password will be the
private key,integrator password, ormember hash.

