The customer
A ConnectWise-based MSP that delivers work three ways — remotely, on-site, and the travel in between — and, like most shops with techs in the field, tracks each as its own work type in ConnectWise Manage. Remote, On-site, and Travel: one work type for every way a tech’s time gets spent.
That split is deliberate, and it’s the right call internally. It’s the wrong thing to put in front of the customer.
The tension: a split that’s right inside, wrong outside
Inside the PSA, separating those work types earns its keep. It’s how you see real tech utilization — remote support versus on-site wrench time versus windshield time — and how you understand what a job actually costs you to deliver. Collapse the distinction and you lose visibility into how your team’s hours are really spent.
On the invoice, that same split does nothing but harm.
The sharpest example is travel. A separate Travel line under a visit reads like nickel-and-diming. The customer agreed that on-site work means someone drives out — but seeing “Travel: 0.75 hrs” itemized next to the labor makes it feel like they’re being charged extra to watch your tech sit in traffic. Even when it’s in the agreement, it generates the same call every cycle: “Why am I paying for travel?”
But it’s the same problem across all three. Remote, on-site, travel — the customer bought help with a problem. Itemizing how you delivered it turns one service into a three-line breakdown of your own operations.
The customer bought help. Whether it came over a wire or out of a truck is your operation, not their line item.
What we built
A tenant extension that merges any number of work types into one before the invoice renders.
Point it at Travel, On-site, and Remote, choose the single labor type they should collapse into, and those three rows become one. The hours combine, the amounts combine, and the customer sees a single Labor line that reads like the service they actually bought. Every hour is still billed — it’s just presented as the one thing it was to them: support.
Inside ConnectWise, nothing changes. All three work types still exist, still logged separately, still feeding your utilization and job-costing reports. The merge happens only in how the invoice renders.
The result
One clean labor line per job instead of three. The invoice reads the way the service felt — someone helped, and the problem got solved — and the recurring “why am I paying for travel?” question goes quiet.
Why this matters
- The invoice matches the experience. The customer bought help, not a breakdown of remote hours versus on-site hours versus drive time. One line tells the true story of what happened.
- Billing questions drop. No standalone travel line — and no “why are there three labor rows?” — means no monthly call about it. The conversation you keep having stops happening.
- Utilization reporting is untouched. All three work types stay separate in ConnectWise. You keep every bit of the internal visibility that made you split them — remote, on-site, windshield time, true cost per job.
- It’s presentation, not pricing. You’re not changing what you charge. The total is identical. You’re changing what the customer has to read to understand it.
Why it’s possible
This is the same instinct behind keeping your PSA granular while the invoice stays clean: the way you model work for operations should never dictate what the customer sees.
You pick which work types to merge — two, three, or more — and the single type they collapse into, and the extension does the rest at render time, matching by work type so renaming things in ConnectWise later never breaks it. It’s a tenant extension: a narrow behavior scoped to one customer, not a fork of the product or a change to how you run your PSA.