Skip to content
Current/ Help Center

ConnectWise sync: the complete field-mapping reference

10 min read · Updated Jul 18, 2026

If you run ConnectWise, you already know its entity model: Companies, Contacts, Agreements, Opportunities, Projects, Phases, Project Tickets, Members, and Time Entries. This page is the field-level reference for exactly how each maps into Current, which direction data flows, and who wins when both sides have touched the same record. Bookmark it — you'll come back to it.

For the plain-language version of how the connection is set up, see "Connect ConnectWise PSA and choose what syncs". For what triggers a write back — and the gates in front of every write — see "What Current writes back to ConnectWise (and when)".

How instance discovery works

ConnectWise instances don't share one API address — your company runs on a specific host and a versioned path that ConnectWise moves during upgrades. When you connect, Current calls ConnectWise's public site-discovery endpoint with your site URL and company ID, learns the right API host and version path, and stores them alongside the connection (they're not secrets). If ConnectWise relocates your instance later, Current notices the old path failing and re-resolves automatically — no manual URL maintenance, ever.

How the delta sync works

Every ConnectWise record carries a last-updated timestamp, and Current's 5-minute poll asks only for records updated since its last pass — per entity, each with its own cursor. Writes made by Current come back stamped with the API Member's identity, and Current skips those, so its own pushes are never re-imported as changes.

Companies

ConnectWise fieldBecomes in CurrentDirectionWho wins
Companies.idConnectWise company link (id)pull onlyConnectWise
Companies.nameCompany namepull onlyConnectWise — unless you've renamed the company in Current and that rename hasn't synced back yet, in which case your edit is protected until it does
Companies.statusActive / inactivepull onlyConnectWise
Companies.typesCompany typepull onlyConnectWise
Companies.phoneNumber / websitePhone / Websitepull onlyConnectWise
Companies.addressLine1 / addressLine2 / city / state / zipAddress fieldspull onlyConnectWise
Companies.marketMarket / industrypull onlyConnectWise when the field is set — never cleared to blank once Current has one
Companies.territoryManager (Territory Manager)Account managerpull + pushConnectWise's Territory Manager is the account manager. If Current's account manager is empty, the Territory Manager fills it; if a manager reassigns the account in ConnectWise, that wins. An in-app AE claim or leadership reassignment made in Current is never overwritten, and when you push a company its account manager is written back as ConnectWise's Territory Manager (the person must be linked to a ConnectWise member).

The Territory Manager becomes the account manager (chosen for ConnectWise on Jul 18, 2026). Auto-matching links by the member's email, so an account manager only fills once that person is linked to a Current user on Users & roles — if ConnectWise names a Territory Manager who isn't linked, the account simply shows no manager (and a company push fails loudly rather than guessing).

Current-only fields on the company record — total MRR, MRR at risk, lead source — have no ConnectWise equivalent and are never pushed.

Contacts

ConnectWise stores a contact's email and phone numbers as a list of communication items rather than flat fields. Current flattens that list on the way in: the default email item becomes the contact's email, the default phone becomes phone, and a mobile item becomes mobile. On push, Current writes the same structure back, so ConnectWise stays canonical.

ConnectWise fieldBecomes in CurrentDirectionWho wins
Contacts.idContact link (id)pull + push (new contacts)
Contacts.firstName / lastNameFirst name / Last namepull onlyConnectWise
Contacts.titleTitlepull onlyConnectWise
communicationItems (default Email)Emailpull onlyConnectWise
communicationItems (Phone / Mobile)Phone / Mobile phonepull onlyConnectWise
Contacts.defaultFlagPrimary contact flagpull onlyConnectWise
Contacts.inactiveFlagActivepull onlyConnectWise

Agreements and additions (your contracts)

Agreements are inbound only — Current reads them to power MRR, seat counts, customer status, and the whitespace grid, and never edits one. An agreement counts as active and recurring when its status resolves to active, it isn't cancelled, and its type and billing cycle read as recurring.

ConnectWise fieldBecomes in CurrentDirectionWho wins
Agreements.name / typeContract name / typepull onlyConnectWise
Agreements.startDate / endDateStart / end datepull onlyConnectWise
Agreements.agreementStatus / cancelledFlagContract statuspull onlyConnectWise
Agreements.billingCycleBilling period + recurring flagpull onlyConnectWise
Additions.product (catalog item)Service line namepull onlyConnectWise
Additions.quantityUnit count (seats)pull onlyConnectWise
Additions.unitPriceUnit pricepull onlyConnectWise
Note
Additions drive the whitespace grid
The whitespace grid's coverage matching runs against your agreement addition names — the catalog item identifier and description as written in ConnectWise. Namespaced product names group cleanly under one short match phrase, exactly as Autotask service names do. See "The whitespace grid: find every cross-sell gap".

Opportunities (your deals)

Opportunities pull into the deals pipeline, and deal pushes go the other way once CRM write mode allows them. ConnectWise separates a deal's stage (where it sits in the pipeline) from its status (open, won, lost) — Current reads both: the stage maps through the stage mapping in your Manage drawer, and won/lost comes straight from the status record's own won and lost flags, so there's no label guessing.

  1. 1
    Open the stage mapping
    Integrations → ConnectWise PSA → Manage → “Deal pipeline & stage mapping”. The badge there shows how many of your pipeline stages are still unmapped.
  2. 2
    Map each Current stage to a ConnectWise stage
    Open the editor and pick the ConnectWise opportunity stage each of your Current pipeline columns corresponds to. Won and lost aren't mapped here — they come straight from the ConnectWise status's own won/lost flags.
  3. 3
    Why it matters
    A deal only pushes its stage to ConnectWise once that stage is mapped — an unmapped stage fails closed and never writes, so a half-mapped pipeline silently won't push. Map every active column you want to sync.
ConnectWise fieldBecomes in CurrentDirectionWho wins
Opportunities.idDeal link (id)pull + push (new deals)
Opportunities.stagePipeline stage (via your stage mapping)two-waythe side that moved it last
Opportunities.status (wonFlag / lostFlag)Won / lost outcomepull onlyConnectWise
Opportunities.expectedCloseDateExpected close datepull onlyConnectWise
Opportunities.primarySalesRepDeal owner (via the member ↔ user link)pull onlyConnectWise
Opportunities.companyLinked companypull onlyConnectWise

Projects, phases, and project tickets

A ConnectWise project imports as a ConnectWise-synced project — ConnectWise stays the source of truth for time and billing on it, and Current owns the schedule. ConnectWise's project tickets are the work items inside a project, so they become Current tasks.

ConnectWise fieldBecomes in CurrentDirectionWho wins
Projects.nameProject namepull onlyConnectWise
Projects.status (project board status)Project statuspull onlyConnectWise
Projects.companyLinked companypull onlyConnectWise
Projects.managerProject manager (via the member link)pull onlyConnectWise
Projects.estimatedStart / estimatedEndProject datespull onlyConnectWise
Projects.estimatedHoursBudget hourspull onlyConnectWise
Phases.descriptionPhase namepull onlyConnectWise
Phases.scheduledStart / scheduledEndPhase datespull onlyConnectWise
Project tickets.summaryTask namepull onlyConnectWise
Project tickets.status (board status)Task status (backlog/in progress/review/done)two-way (see below)depends on your two-way sync setting
Project ticket datesTask start / end datestwo-wayCurrent — after the first import, Current's scheduler owns task dates and pushes changes out
Project tickets.budgetHoursEstimated hourspull onlyConnectWise
Project tickets.wbsCodeWork-breakdown positionpull onlyConnectWise

Service tickets

Service tickets with no project attached feed the read-only company ticket history behind account insight, sentiment, and SBR statistics — grouped by service board, which is where the board-noise toggles apply. They never become project tasks, and Current never edits them.

Members (your staff)

ConnectWise fieldBecomes in CurrentDirectionWho wins
Members.identifierMember linkpull onlyConnectWise
Members.firstName + lastNameNamepull onlyConnectWise
Members.emailEmail — the link key to a Current loginpull onlyConnectWise
Members.inactiveFlagActivepull onlyConnectWise

Time entries

A ConnectWise time entry charges to something — for project work, that's the project ticket. Current logs time against the task and submits it as a time entry charged to that ticket, with the work role, work type, and agreement you picked. The vocabulary differs from Autotask — work role where you'd say billing code, agreement where you'd say contract — and Current's time dialog labels follow the PSA you run.

ConnectWise fieldBecomes in CurrentDirectionWho wins
TimeEntries.idTime entry link (id)two-way
TimeEntries.memberLogged-by usertwo-way
chargeToId / chargeToTypeLinked task (project ticket)two-way
timeStart / timeEnd / actualHoursDate, times, and hourstwo-wayConnectWise
workRole / workType / agreementWork role / Work type / Agreementpush, then mirrored backConnectWise
billableOptionBillable flagtwo-wayConnectWise
Time status + invoice linkageApproval / invoiced statuspull-back after push (read-back)ConnectWise — an invoiced entry can never be edited from Current

Board statuses: how done means done

ConnectWise statuses live per board, and each status carries its own closed flag. Current builds its status map from your boards' live lists: a status ConnectWise flags as closed maps to done, and the rest map to Current's simplified stages by their labels. The original ConnectWise status id is always kept alongside the simplified stage, so nothing is lost in translation — and the board/status mapping in the Manage drawer lets you correct any board whose labels don't say what they mean.

Holidays and time off (PTO)

Current keeps your scheduler honest by reading two things from ConnectWise's schedule area: company holidays and member time off.

  • Holidays come from your ConnectWise holiday lists. Every date across every list pulls in as a read-only company holiday, and the dependency and cascade scheduler skips those days — just like weekends — so task dates never land on a day no one is working. You can still add holidays by hand on the Holidays admin page; a ConnectWise-synced one you delete there reappears on the next sync (remove it in ConnectWise to make it stick).
  • Time off comes from ConnectWise schedule entries whose type reads like PTO (vacation, sick, out of office, and the like). Each becomes per-day PTO for that member in Current, so the Timeline, dependency map, and what-if scenarios all schedule around real absence. Only members linked to a Current user produce PTO rows.

Both pulls are read-only and self-healing: a cancelled holiday or a shortened time-off request disappears on the next sync. If your API member can't read the schedule area, Current simply skips these pulls with a note rather than failing your whole sync — add holidays and PTO by hand in the meantime.

What's deliberately not synced

  • ConnectWise appointments and other non-time-off schedule entries don't pull — only company holidays and PTO-type time off feed the scheduler.
  • Ticket attachments aren't downloaded — attachment handling for ConnectWise is a planned follow-on.
  • Project health scores, total MRR, and MRR at risk are computed in Current and never pushed to any ConnectWise field.
  • Agreements, additions, and the product catalog are read-only in every direction — Current never edits your billing structures.
  • Current polls; it does not register ConnectWise callbacks. The 5-minute delta covers change detection without a webhook's failure modes.
Tip
Related reading
For push behavior specifically — what triggers a write to ConnectWise, the gates, retry rules, and what a push can never touch — see "What Current writes back to ConnectWise (and when)".
Was this helpful?