Skip to Content
IntegrationsCRM / PSAConnectWise PSA

ConnectWise PSA

Cotillion’s ConnectWise integration is a read-only sync of Opportunities, their forecast line items, Companies, Contacts, and Notes from your ConnectWise PSA instance into a single, standardized deal record. Once synced, the deals appear in your Cotillion workspace where you can register them against vendor portals (AWS Partner Central, Microsoft Partner Center, …) with a single action.

Before you begin — you’ll create a dedicated API Member in your ConnectWise PSA with a read-only Security Role, and generate an API key pair. The whole setup takes about 10 minutes.

At a glance

ItemValue
AuthenticationAPI Member key pair — Company ID + Public Key + Private Key
API surfaceConnectWise PSA REST API v3.0 (/v4_6_release/apis/3.0)
DirectionRead-only (Cotillion never writes back)
CredentialsAWS KMS-encrypted at rest, never logged
RegionYou pick your ConnectWise cloud region (Australia / Europe / North America)

Setup

A dedicated Security Role keeps the API Member scoped to just the data this integration reads.

In ConnectWise PSA:

  1. Open System → Security Roles and click New to add a role — name it Cotillion Read-only (or similar).
  2. Each module row has four permission columns — Add / Edit / Delete / Inquire — each a level dropdown (None … All). Set Add / Edit / Delete = None everywhere (the integration never writes), and Inquire = All on only the modules Cotillion reads:
    • Companies — Company Maintenance, Contacts (customer and contact lookup).
    • Sales — Opportunity and Closed Opportunity (to read open deals plus won/lost, and their forecast line items).
    • System — Member Maintenance, plus the System Reports / API permission that backs the connection check. Cotillion reads the members directory to resolve opportunity owners and note authors, and calls system/info to verify credentials.
    • Project — Project Headers and Project statuses. Cotillion reads projects and their statuses for the trust-profile delivery stats.
    • Service Desk — Service Tickets. Cotillion reads service tickets for the trust-profile SLA / first-response stats.
  3. Save.

Sources (official ConnectWise docs): Create an API Member & Security Role (ConnectWise Developer Network)  · ConnectWise Developer Network — REST API reference  (endpoint → module mapping).

Why read-only. Our integration never writes to ConnectWise. Granting any Add / Edit / Delete permission goes beyond what is required.

Step 2 — Create an API Member

  1. Open System → Members, then switch to the API Members tab.
  2. Click New to create an API-only Member (it holds no license and has no interactive UI login).
  3. Set its Role ID to the Cotillion Read-only role from Step 1, and fill the required Location / Business Unit fields.
  4. Save.

Step 3 — Generate the API key pair

  1. Open the API Member you just created and go to its API Keys tab.
  2. Click New, give the key a description (e.g. Cotillion), and save.
  3. Copy the Public Key and the Private Key.

Keep these values handy — the Private Key is shown only once by ConnectWise. If you lose it, you’ll need to generate a new key pair.

Step 4 — Find your Company ID

Your Company ID is the short company code you type on the ConnectWise PSA login screen (not your email). If you’re unsure, it also appears in your instance URL.

Also note your region — it’s the prefix of your ConnectWise login URL (na. / au. / eu.myconnectwise.net). You’ll pick it from a dropdown in the next step. (Cotillion can’t detect it for you: ConnectWise’s company lookup only answers on the matching regional host, so the region has to come from you.)

Self-hosted / on-premise ConnectWise? The region dropdown covers the ConnectWise cloud (myconnectwise.net). If you run ConnectWise on your own server (your own domain), contact us — we’ll add your host directly.

Step 5 — Connect in Cotillion

  1. Sign in to your Cotillion workspace at cotillion.indyrct.com .
  2. Open CRM / PSA in the sidebar → Connect → ConnectWise PSA.
  3. Enter your Company ID, Public Key, and Private Key from the steps above, and choose your ConnectWise region (Australia / Europe / North America) from the dropdown.
  4. Click Test & Connect.

What happens automatically:

  • ✅ Cotillion builds your API host from the region you chose.
  • ✅ Verifies the credentials against the ConnectWise PSA REST API.
  • ✅ Encrypts them with an AWS KMS envelope before storing.
  • ✅ Starts a one-time backfill sync, then schedules recurring updates.

Step 6 — Optional — Exclude individual opportunities from the sync

Some opportunities should never appear in Cotillion — internal-only forecasts, experiments, or deals you don’t want surfaced for vendor registration. You can opt them out with a custom field on the Opportunity.

In ConnectWise PSA:

  1. Open System → Setup Tables → Custom Fields, choose the Opportunity screen, and click New.
  2. Set Field Type = Checkbox and Caption = Cotillion Exclude From Sync, then save.
  3. Tick it on any opportunity you want hidden.

On the next sync (within ~5 minutes), Cotillion skips the AI mapping for that opportunity entirely.

Do not rename this caption later. Cotillion matches the field by its exact caption, so a rename stops the exclusion — the opportunity would start syncing again on the next pass.

Reversible. Un-tick the field to re-include the opportunity on the next sync. Cotillion does not delete previously-synced deal data when you flip the flag on — it stops refreshing it, and flipping it off brings the data back up to date.

How the sync works

CadenceWhat
Members directory refreshRoughly once a day: Cotillion refreshes the ConnectWise members directory it uses to resolve opportunity owners and note authors. This is the only data pulled on a fixed cadence.
Opportunity syncEvery 5 minutes per organization: opportunities + their forecast line items + companies + contacts + notes. Opportunity statuses, stages, and types are resolved inline on every sync straight from ConnectWise (status flags + reference labels) — there is no separate 24-hour refresh for them, so a rename is reflected on the next sync.

The integration respects ConnectWise’s per-instance rate limits — each sync is rate-limited per credential, with backoff on throttling, and outbound traffic is logged in our operational dashboards for audit.

Which opportunities Cotillion keeps

Cotillion keeps the opportunities you could register with a vendor, and the ones it is already tracking. In practice:

  • Open opportunities are synced and appear in Deals.
  • An opportunity that closes while Cotillion is tracking it stays — that is exactly when the outcome has to reach the vendor, when the vendor’s verdict comes back, and when a won deal becomes eligible for an incentive. It moves out of the “requires action” view and stays under the registered deals.
  • Opportunities that were already closed before Cotillion saw them are not kept. Editing an old closed opportunity in ConnectWise does not pull it in either. Your closed deal history stays in ConnectWise.

What gets synced and how it stays stable

Each sync produces a structured, standardized view of every opportunity. Because ConnectWise keeps deal value on the opportunity’s forecast (not on the opportunity header), Cotillion reads the forecast line items and rolls them up into a single standardized amount, currency, and per-line-item detail. Won / lost / open status is read from ConnectWise’s status flags, not the editable status name, so it stays correct even if you rename your statuses.

Two guarantees Cotillion holds across syncs:

  • Customer and contact identity are stable. When you rename a company in ConnectWise, Cotillion picks up the new name on the next sync, but the same customer keeps the same internal identity — every opportunity that pointed to it before still points to it after. The same applies to contacts.
  • Disconnect-then-reconnect is non-destructive. If you remove the ConnectWise integration in Cotillion and add it back later, your existing opportunities re-attach to the new connection without losing their vendor-registration history or per-line-item state.

Audit trail

Cotillion keeps an immutable record of every payload submitted to a vendor. The record captures exactly what was sent at submission time, independent of subsequent edits in ConnectWise or Cotillion.

Reference

ConnectWise’s official help if your UI differs from the steps above:

Troubleshooting

Authentication fails on Test & Connect

First, check the region you picked matches your ConnectWise login URL (the na. / au. / eu. prefix). Correct keys against the wrong region fail auth and read like bad keys — leave the keys alone and re-pick the region.

If the region is right, the Company ID, Public Key, or Private Key was mistyped, or the API Member’s Security Role is missing read access. Regenerate the key pair in ConnectWise (the Private Key cannot be retrieved later) and re-check the role from Step 1.

Deal amounts are missing

ConnectWise keeps deal value on the opportunity forecast. If amounts are blank, confirm the API Member’s role can read the opportunity’s forecast / products, and that the opportunity actually has forecast line items.

Rate limit reached

ConnectWise returned a 429 (rate-limited) response. Cotillion automatically backs off and retries; no action required.

An opportunity is missing from Cotillion

Check the opportunity’s Cotillion Exclude From Sync custom field — if it’s ticked, the opportunity is intentionally hidden (see Step 6). Un-tick it to bring it back on the next sync (within ~5 minutes).


For Cotillion-side issues, email [email protected].

Last updated on