ConnectWise PSA integration
ConnectWise PSA integration
What it does
- Imports the ConnectWise companies you choose as xClause clients.
- Imports company contacts as client users, for the companies and people you choose.
- Imports company sites as client sites.
- Pushes SOW managed unit counts to the quantity on matching ConnectWise agreement additions.
- Lets your team pull ConnectWise products, agreement additions, and device counts into a Statement of Work (see SOW integration import).
- Reads agreement additions nightly to record the license quantities you have contracted.
Before you start
In xClause
- ConnectWise requires a plan that includes PSA integrations. On the Free, Free Plan, and MSP Starter plans, connecting fails with "PSA integrations are not available on your ... plan. Upgrade to Pro to connect integrations." The Integrations page itself is also not available on MSP Starter.
- xClause does not check for an admin role when you connect. Any user in your xClause company can connect, update, or disconnect ConnectWise, so use an account that should manage integrations.
In ConnectWise
- Your ConnectWise Manage server URL: the exact URL you use to log in.
- Your company ID (the ConnectWise company login name).
- An API-only member with a public and private key. The private key is shown only once.
- A security role on that member with the API access listed under Permissions the API account needs.
Connect
- In xClause, go to Settings > Integrations.
- Under PSA & RMM, click ConnectWise. A panel opens with the ConnectWise PSA Integration card.
- In ConnectWise, create the API keys. The xClause dialog gives these steps:
- In ConnectWise: System > Members > API Members.
- Create or select an API-only member.
- Open the API Keys tab and generate keys.
- Copy the public and private key.
- Back in xClause, click Connect to ConnectWise.
- Fill in the four required fields:
- Server URL: for example
https://na.myconnectwise.net. Use the exact URL you use to log in. Do not useapi-na.myconnectwise.netor a dev/sandbox URL unless that is your login URL. The URL must start withhttps://and end inconnectwise.com,connectwisedev.com, ormyconnectwise.net. - Company ID: your ConnectWise company login name.
- Public Key: the API member's public key.
- Private Key: the API member's private key.
- Server URL: for example
- Click Connect.
xClause saves the credentials and tests them. If the test passes, the card shows a Connected badge.
Connecting does not import any clients. To import clients, use the Clients & users row on the card:
- Click Manage.
- Optional: turn on Keep picked clients' contacts updated on each ConnectWise sync if you want new contacts imported automatically on later syncs. The list of ConnectWise orgs shows either way, and nothing is imported until you pick it.
- Check Import this org as a client for each ConnectWise company you want, and choose which of its contacts become users (everyone, selected people, or nobody).
- Click Save.
To change the credentials later, click Update connection and enter all four fields again.
Permissions the API account needs
In ConnectWise, these are set under System > Security Roles > your role > API Access. The list below comes from the calls xClause makes.
| ConnectWise area | What xClause does there | Access |
|---|---|---|
| System > System Info | Tests the connection. | Inquire |
| Company > Companies | Lists companies for the Manage list, sync, and the SOW import client list. | Inquire |
| Company > Contacts | Reads contacts for each imported company. | Inquire |
| Company > Sites | Reads each imported company's sites. | Inquire |
| Company > Configurations | Reads each imported company's configurations. Sync counts them; SOW import uses them for device counts. | Inquire |
| Finance > Agreements | Lists agreements that are not cancelled and reads their additions. Updates the quantity on an addition when you sync managed unit counts. | Inquire and Edit |
| Procurement > Products | Searches the catalog when you map managed units or import products into a SOW. | Inquire |
Notes:
- The only change xClause makes in ConnectWise is the quantity on existing agreement additions, and only when Sync managed unit counts to agreements is on.
- The connect dialog's Required role permissions list also shows Add and Edit on Companies and Contacts, Inquire on Sites, Inquire on Service Tickets, Inquire and Edit on Agreements, Inquire on Products, and Inquire on System Info. That list does not include Configurations. xClause currently reads, and does not write, companies and contacts, and no current feature uses service tickets.
What syncs, and which direction
| Data | Direction | What triggers it |
|---|---|---|
| Companies | ConnectWise to xClause | You import them in Clients & users > Manage. Sync now refreshes only companies you have already imported. |
| Contacts (with an email) | ConnectWise to xClause | Sync now, for companies you imported, according to the people you chose in Manage. |
| Sites | ConnectWise to xClause | Sync now, when Sync sites from ConnectWise is on. |
| Configurations | ConnectWise to xClause (count only) | Sync now. Configurations are counted but not imported as devices. |
| Managed unit counts | xClause to ConnectWise | Sync unit counts now, when Sync managed unit counts to agreements is on. |
| License quantities | ConnectWise to xClause | A nightly job reads active agreements and their additions. |
| Products, additions, device counts for SOWs | ConnectWise to xClause | Your team picks them while building a SOW, for the sources and item types enabled under Settings > Integrations > SOW integration import. |
How it works:
- Sync now does not import new clients, and it does nothing if Sync companies from ConnectWise is off, because the contact, site, and configuration steps run for each company in that pass.
- Sync now and Sync unit counts now are manual. xClause does not run a scheduled ConnectWise sync. The only scheduled job is the nightly license read.
- Sync unit counts now works like this:
- Map each xClause managed unit to a ConnectWise catalog product under Product mapping. Type in Search CW product..., pick the product, and click Save mappings. You must map at least one unit to save.
- Turn on Sync managed unit counts to agreements.
- Click Sync unit counts now.
- xClause uses each client's latest in-force, signed SOW. For each of the client's ConnectWise agreements that is not cancelled, it finds the addition for the mapped product and replaces its quantity with the SOW's count. The client must be an imported ConnectWise company. Clients without a signed SOW, or without a matching addition, are skipped.
- Quantities land on live agreement additions, which affect billing.
- On the card, Total Companies and Total Contacts count the clients and client users xClause has imported from ConnectWise. They are not your ConnectWise totals.
- Sync contacts from ConnectWise does not control which users are imported. Clients & users > Manage does.
Troubleshooting
| What you see | What it means and what to do |
|---|---|
| "Please fill in Server URL, Company ID, Public Key, and Private Key" | A field is empty. Fill in all four. |
| "Use a valid ConnectWise server URL (e.g. https://na.myconnectwise.net or https://yourcompany.connectwise.com)" or "Invalid ConnectWise server URL. Use e.g. https://na.myconnectwise.net or https://yourcompany.connectwise.com" | The URL is not https:// on an allowed ConnectWise domain. Use your login URL. |
| "PSA integrations are not available on your ... plan. Upgrade to Pro to connect integrations." | Your plan does not include PSA integrations. Upgrade. |
| "Failed to connect to ConnectWise. Check your server URL, company ID, and API keys (public/private)." | The connection test failed. Check the server URL, company ID, and keys, and check that the member's role has System Info inquire access. After a failed test the integration is left paused with the credentials you just entered, so re-enter correct ones with Update connection. |
| "ConnectWise integration not configured (missing Client ID)" | A platform-side setting is missing. Contact xClause support. |
| Disconnected badge, Data sync shows Paused | The integration is saved but not active, usually after a failed connection test. Click Update connection. |
| "ConnectWise not connected" when you click Sync now | The integration is not active. Reconnect. |
| "Failed to connect to ConnectWise. Please check your connection." | The connection test failed during a sync. Click Update connection if your keys changed or were revoked. |
| "Sync completed with N errors. Check console for details." | Some companies failed. The failure messages are in your browser's developer console. A missing Configurations inquire permission produces one error per imported company. |
| "Sync completed - no changes needed" | Nothing changed since the last sync. |
| "Map at least one managed unit to a ConnectWise product before saving." | Save mappings needs at least one mapped unit. |
| "Sync complete: X updated, Y skipped, Z errors" | Sync unit counts now finished. Skipped means no mapping, no ConnectWise company link, no signed SOW, or no matching addition. Errors can mean the role lacks Agreements edit access. If the switch is off, the run reports one error and updates nothing; turn on Sync managed unit counts to agreements first. |
| "We couldn't save that setting" | A switch change did not save and was reverted. Try again. |
Disconnecting
- On the ConnectWise PSA Integration card, click Disconnect.
- Confirm: "Are you sure you want to disconnect from ConnectWise? This will remove all integration settings."
Disconnecting deletes the stored credentials, the sync switches, and your product mappings. xClause does not delete the clients, users, or sites you already imported. xClause does not call ConnectWise when you disconnect, so the API member and its keys stay active in ConnectWise until you change them there. Agreement quantities already updated are not reverted.