Why We Kept Teams for Chat and Still Cut the Phone Bill
Raj was cornered between a dying PBX softphone and doubling the company's Microsoft spend for Teams Phone.
Teams owns collaboration, Raj owns the calling experience, and the dialer stopped being a line item anyone questions.
Raj runs telecom infrastructure for a mid-to-large enterprise, about 3,000 seats.
His company had already gone all-in on Microsoft Teams for chat, meetings, document collaboration, the works.
So when the old PBX-based softphone came up for renewal, the obvious move looked like the easy move: turn on Teams Phone, retire the legacy dialer, and let Microsoft own the whole stack.
We sat down with Raj to hear why that "obvious" move fell apart, and what he built instead.
What did you do first?
We did the responsible thing. We ran the numbers on Teams Phone. On paper it made sense: one vendor, one bill, one login for chat and calls. My finance partner liked the story. I liked the story. So I built the business case and started pricing it out against our actual seat count.
What was the breaking point?
The math didn't survive contact with reality. Teams Phone licensing runs roughly $8 to $15 per user per month, on top of the E3 or E5 licenses we already pay for.
Across 3,000 seats, that's $24,000 to $45,000 a month. Real money, every month, forever.
And a good chunk of our workforce barely touches voice. They're on Teams for chat all day and maybe take three calls a week. We'd have been paying full collaboration-suite voice pricing for people who don't really use voice.
On top of the cost, the UX evaluation was rough: a dialer built for a meeting app is not the same thing as a dialer built to be someone's primary phone. Reps wanted a call screen, not a modal inside a chat window.
How did that feel? And commercially?
Honestly, cornered. I don't want to be the guy who tells the CFO "we're doubling our Microsoft spend because it's simpler," but I also didn't want to be stuck maintaining a dying PBX softphone forever.
And there was a second layer that bothered me more than the price tag. Microsoft's whole pitch was "don't worry, it's extensible, plug in your CRM, build what you need." But extending voice inside Teams means building inside Microsoft's approval process, on Microsoft's timeline, inside Microsoft's architecture.
I didn't want to trade one vendor's roadmap for another vendor's roadmap. I wanted my team to own the dialer and whatever we built on top of it, not file a request and wait.
Dying PBX softphone up for renewal
obvious move was to turn on Teams Phone and let Microsoft own the whole stack
Teams Phone quoted $24K to $45K a month
$8 to $15 per user across 3,000 seats, for a workforce that barely uses voice
Chose Acrobits Cloud Softphone
reliability became the floor; Web Tabs and the IPC SDK let the team own the dialer and its integrations
Calling layer runs ~$180 a month
active-user billing, ~1,500 billable users; not the same order of magnitude as Teams Phone
What changed?
We found Acrobits Cloud Softphone, and the pitch that actually landed with me wasn't a feature list. It was that the calling layer just works, quietly, in the background, the way a faucet works. You turn it, water comes out, you don't think about the pipes.
Acrobits carries the hard engineering: making calls actually connect cleanly across a few thousand devices, a mix of iOS and Android, different carriers, different networks. That's the part nobody wants to own, and once it was off my plate, I stopped thinking about the dialer as a risk and started thinking about it as a platform.
Reliability isn't a feature you market. It's the floor everything else stands on.
Teams kept doing what Teams does well: chat, meetings, presence. The phone became its own thing again.
How they used Acrobits
The CRM went into a Web Tab. A Web Tab is just a window inside the softphone app that can display any web page or web tool, same as a browser tab, but it feels native. Each rep's login passes through automatically, so the moment they open the app they're signed into their own CRM account, no second password. When a call comes in, the caller's account record pops up in that same tab. No app-switching, no hunting for context mid-call.
The internal helpdesk portal went into a Web Tab too, sitting right next to the dial pad, so support staff log tickets without breaking their flow during a call.
Both were wired through the IPC SDK, a bridge that lets the web tool inside the tab talk to the real phone underneath. The CRM and the helpdesk portal read live call state (duration, direction, disposition) straight from the native layer and log it automatically. The team built both with standard web code they already had. No native SDK project, no integration vendor, no ticket filed with Microsoft's roadmap team. They shipped it on their own schedule.
If you had to teach this to someone, what is the one idea?
Unified communications happens in the UI. Not in a server room, not in a licensing bundle, in the actual screen the person is looking at while they take the call.
For years the assumption was that "unified comms" meant a big backend platform decision. It's really a front-end decision: can the person on the call see their CRM, their tickets, their tools, in the same place they're talking, without switching apps.
The mechanism that makes that possible is Web Tabs plus the IPC SDK. Once I understood that, the Teams-versus-dialer argument stopped being an either/or. Teams can own collaboration. We own the calling experience and everything we plug into it.
What they needed
- A calling layer that just works across a few thousand iOS and Android devices, carriers, and networks, so reliability is the floor
- To avoid doubling the Microsoft spend on Teams Phone for a workforce that barely uses voice
- Customer-specific tools inside the dialer on their own timeline, not Microsoft's approval process
- A real bridge to the phone: live call state, click-to-dial context, automatic call logging
- Active-user billing so dormant accounts cost nothing and voice scales with actual usage
Technical detail
Features that did the work
Web Tabs
any web tool (CRM, helpdesk portal) renders as a native tab inside the dialer. Auto-login passes each rep's identity through, so it feels like one tool, not a website bolted on.
IPC SDK
web content in those tabs reads live call state (duration, direction, disposition) and logs it automatically. Standard web code, native behavior.
Active-user billing
pay only for staff who register the app and place at least one call in the billing period, so dormant accounts cost nothing.
Teams cohabitation
Teams keeps chat, meetings, and presence; the dialer and its integrations stay owned by the IT team.
And the business?
This is where it stopped being a philosophy and became a budget line. We moved to active-user billing instead of a flat per-seat license, meaning we only pay for staff who actually register the app and place at least one call in the billing period. Dormant accounts cost us nothing.
The numbers:
- At $0.12 per active user, across our roughly 3,000 provisioned seats, we run at about a 50% active rate, so around 1,500 billable users. That's roughly $180 a month in COGS for the calling layer.
- Compare that to the Teams Phone path we walked away from: $8 to $15 per user per month across the same 3,000 seats, which is $24,000 to $45,000 a month. We're not in the same order of magnitude.
- The dialer decision, and the integrations riding on top of it, stopped being a Microsoft decision, and stopped being a line item anyone questions at renewal.
Cohabitation is fine.
Teams for chat, something else for the phone. You don't have to hand one vendor everything just because it looks tidy on a slide. Decide what the calling layer owes the people using it every day, then own those integrations yourself instead of sitting in someone's roadmap queue.