Peak Supply Chain Solutions← Design library

Decision record · decided

Teams Phone. Here’s what we bought.

~1,000 seats, departments, inbound-heavy, basic auto-attendant only, leaving RingCentral. Leadership selected Microsoft Teams Phone. Everything below is fetched from the vendor’s own pages Aug 10, 2026 or marked quote-gated. A second decision — dispatch messaging — is settled too, and closes this document.

At a glance

Decision one — the phone
Microsoft Teams Phone for ~1,000 seats. Budget $17 a seat, not the advertised $10.
Decision two — dispatch
Peak builds its own platform. $40,000 to build, $6,000 a month to run.

Both are closed. Everything below is the evidence, the real costs, and what still has to be settled before signing.

Contents

  1. 01The decision
  2. 02What we're buying
  3. 03Before signing
  4. 04What it beat
  5. 05Why Teams won
  6. 06And for Peak
  7. 07Sign-off
  8. 08Dispatch: we build
  9. 09What the build costs
  10. 10Build or assemble?
  11. 11What happens next

Teams Phone is the cheapest platform on the board. The $10 is not the price.

The decision

Teams Phone, ~1,000 seats. Up to ~$180k/yr under RingCentral's list — the largest saving of any option, and one less platform to run.

The real number

$10 buys a PBX with no dial tone. $17 adds the number and 3,000 pooled outbound minutes, taxes included. Inbound minutes are unlimited and free.

What sits outside it

Teams Premium at $10/seat for supervisors, toll-free inbound billed per minute, and ~1,000 desk phones that must be signed in by hand.

What we’re actually buying

Microsoft prices the phone in pieces. This is every piece, at list, from Microsoft’s own pages.

Line itemPublished priceWho needs itWhat it actually is
Teams Phone Standard$10.00 /user/moEvery seatPBX only — no dial tone. Attendants, queues, voicemail, call park included.
Teams Phone with Calling Plan$17.00 /user/moEvery seat placing outbound callsAdds a number + 3,000 pooled outbound domestic minutes. Taxes and fees included. Inbound minutes unlimited.
Microsoft 365 E5 seatsalready includedAnyone on E5 ($60)E5 carries Teams Phone Standard — those seats buy PSTN only. E3 ($39) does not.
Teams Phone Resource Account$0.00One per attendant + per queueFree, but must still be bought. Microsoft advises acquiring at least five up front.
Teams Premium$10.00 /user/moSupervisors + department leadsRequired for the Queues app, real-time queue metrics, historical reporting, monitor/whisper/barge, and most queue delegation.
Toll-free inboundper minute · not publishedThe published main numberBilled against Communication Credits. If the balance reaches zero, toll-free stops working.
Operator Connect / Direct Routingno Microsoft priceAlternative to Calling PlanCarrier quote. The only lever that can beat $17 — Microsoft never quotes it.
Existing desk phones$0 extra licenceKept handsetsSIP Gateway supports Poly, Yealink, Cisco MPP, AudioCodes. No presence routing, no firmware management, per-desk manual sign-in.

List prices, annual commitment, before EA or CSP discount — 1,000 seats negotiates down. Outbound minutes pool tenant-wide: 1,000 identical US plans share 3,000,000 minutes a month.

Five things to settle before signing

  1. 01

    Price Operator Connect against $17

    Microsoft publishes a price for exactly one of the three PSTN paths. Operator Connect and Direct Routing are carrier-quoted, and they are the only lever left on the per-seat number.

  2. 02

    Count the supervisors

    Teams Premium at $10/seat is the one thing RingCentral bundled that Teams does not. Every lead who needs a live queue wallboard, historical reporting, or monitor/whisper/barge needs it. Size the headcount now, not after cutover.

  3. 03

    Pull 12 months of toll-free inbound minutes

    Toll-free is metered and sits outside every per-seat price. Multiply real RingCentral volume by Microsoft's rate, and confirm the billing account type — MCA tenants cannot buy Communication Credits at all.

  4. 04

    Inventory the desk fleet

    SIP Gateway keeps Poly, Yealink, Cisco MPP and AudioCodes handsets at no extra licence — but each personal phone needs a physical, per-desk sign-in, and kept phones publish no presence and get no firmware management.

  5. 05

    File the port and the emergency addresses early

    Over 1,000 numbers bypasses the admin-center wizard and goes to Microsoft's TNS Service Desk manually. RingCentral owns the date, not Microsoft; orders on one account run strictly in series; and emergency addresses must be built before the port lands. Do not disconnect early — both bills run through the cutover.

The record — what Teams beat

Cost

Teams PhoneDecidedRedmond WA · USDZoom PhoneSan Jose CA · USDRingCentralincumbent · USDCloudTalkSlovakia · EURNextivaScottsdale AZ · USD8x8Campbell CA · USD
List $/seat/mo$10–17$16$25 †€49 top tiercapped ≤100 emp.unpublished
Annual · 1,000 seats$120–204k$192k$ quote$ quote$ quote$ quote
Savings vs. incumbent list †up to ~$180k/yr~$108k/yr$ quote$ quote$ quote

Fit — our six requirements, nothing more

Teams PhoneDecidedRedmond WA · USDZoom PhoneSan Jose CA · USDRingCentralincumbent · USDCloudTalkSlovakia · EURNextivaScottsdale AZ · USD8x8Campbell CA · USD
Carries 1,000 seats long-term
Departments · delegated admin◐ + Premium◐ upper tier
Inbound: queues + reporting◐ + Premium◐ upper tier◐ add-on
Basic attendant · AI optional
Desk phones + SSO◐ keep, unmanaged
A price you can see today
Pay only for what we need◐ $17 is the real base✓ flat, all-in◐ tier upsell◐ CC extras$ unknown

✓ included · ◐ partial / upper tier / verify · ✗ gap · $ quote-gated. Teams’ ◐ marks are deliberate: queue reporting and departmental queue admin both require Teams Premium. † RingCentral publishes $25 only for ≤100 users and hides all pricing at 100+ — savings are measured against that printed list, the only number they ever showed. List prices are ceilings; 1,000-seat deals negotiate down.

Why Teams won — and what saying no to Zoom costs

Teams Phone — decided

The lowest published cost of anything that can carry 1,000 seats, and on E5 seats the platform is already owned — only PSTN is incremental. Attendants and queues are in the base licence, their resource accounts cost nothing, and the AI answering product stays opt-in. One identity, one admin plane, one vendor.

Zoom Phone — the runner-up

$16 flat, all-in, no add-on to reach supervisor reporting or queue admin — the two places Teams charges Premium. It was the simpler buy and the more predictable bill; it was not the cheaper one, and it would have meant running a second platform beside Microsoft 365.

The rest of the field, one line each: RingCentral hides its price at the office’s size — that is the incumbent. Cisco Webex publishes $17, but call queues and recording sit in its quote-only Enterprise tier. Google Voice publishes $20 with no seat cap, but the Google Workspace layer it requires is contact-sales at 1,000 seats. Vonage’s published prices legally cap at 99 lines; Nextiva’s at 100-employee companies. CloudTalk is a call-center desk tool (top published tier €49, largest named customer 200 agents, argues against desk phones). GoTo and 8x8 publish no prices at all.

And for Peak itself

Nine stations becoming sixteen — the same decision scales down cleanly.

Teams Phone costs the same $10 per seat at twenty seats as at a thousand, so the stations standardize on one platform instead of two. The Premium question mostly disappears at this size — a handful of dispatch supervisors, not hundreds. The one thing worth keeping on the table is a dedicated dispatch desk (CloudTalk Essential €29 vs. Nextiva Engage ~$25 at 8–20 seats, fetched Aug 6); anything else, run it on Teams.

Sign-off

Teams Phone. The savings are real — the $10 isn’t.

Budget $17 a seat, add Teams Premium for the supervisor bench, and treat toll-free minutes and the desk-phone cutover as the two numbers nobody has quoted yet. Get real volume pricing, the Operator Connect comparison, and a firm port date in writing before signature. Everything above is verified on the linked vendor pages; everything a sales call still has to answer is marked.

Fetched Aug 10, 2026 · microsoft.com · learn.microsoft.com · zoom.com · ringcentral.com · cloudtalk.io · nextiva.com · 8x8.com · webex.com · workspace.google.com · vonage.com · goto.com · Path B fetched Aug 6, 2026

Decision two · decided

Dispatch messaging: we’re building it.

The phone is settled. So is this: Peak builds its own dispatch platform — a free app any permitted driver, owner-operator or carrier can install on any phone, the way Telegram already works for them, with every message filed under the load it belongs to.

Why not put drivers in Teams

Every owner-operator would need a Microsoft identity — licences to buy or reimburse, expenses to track, guest accounts that take up to 12 hours and cannot be phoned, and a training programme to move people off the group chats they already use. Permanent administrative drag, and no asset at the end of it.

What we're building

One app, free to install, iOS and Android and web. Peak controls who gets in and revokes it the day a carrier relationship ends. SMS stays as the fallback so nobody is ever unreachable, and internal conversation stays in Teams.

What it buys

Freedom to build exactly what dispatch needs instead of waiting on someone's roadmap, no per-seat toll for anyone outside the company, and a record Peak owns outright rather than rents.

To be clear about scope: this is not a Teams replacement. Internal conversation stays where it is. What Peak is building is the driver and carrier surface, plus the thing no vendor sells — every message, inbound and outbound, written to Peak’s own store against the shipment it belongs to. Load 4471 gets one complete, timestamped thread: the instruction, the driver’s reply, the photo of the broken pallet, the ETA change. Six months later a claim on 4471 is one thread, not an archaeology project. The app is how people talk. The index is why owning it pays.

peakscs.com/connect/pk-4471

All

512 groups

Load PK-4471

MEM → DFW · Acme

Exception

Pinned

Pallet damage 13:58 · OS&D filed 14:06

Tuesday 12 August

  • DR
    Dawn R. · dispatchTeams04:02✓✓

    4471 tendered. MEM ramp, 0600 pickup.

    indexed → tender · 04:02

  • MO
    M. Ortiz · driverSMS05:47

    Here. Dock 12, waiting on paperwork.

    indexed → arrived · 05:47

  • MO
    M. Ortiz · driverSMS07:15

    Rolling. DFW by 14:30.

    indexed → dwell 1h 28m · ETA 14:30

  • MO
    M. Ortiz · driverSMS13:58
    JPGpallet-4471.jpg1.2 MB

    Held at the dock. One pallet’s crushed.

    indexed → exception opened · 13:58

  • RD
    R. Dunn · opsTeams14:06✓✓

    Got it. Told Acme, OS&D filed.

    indexed → notified · 14:06

  • AC
    Acme · shipperEmail14:31

    Any update on 4471?

    indexed → they asked 25 min later

  • MO
    M. Ortiz · driverSMS15:41

    Delivered. Weeks signed for it.

    indexed → POD signed · 15:41

+
Peak Connect as drivers and dispatchers would meet it, and it runs. Pick a load and the thread, the pinned exception and the derived numbers follow it. Search a surname, an order number or one word from a message, and every result is a door: a person opens their chat, a photo or a POD opens the load it belongs to. Telegram can only organise by person, which is the whole argument.
44718 results

Loads

  • PK-4471MEM → DFW · Acme · exception open
  • PK-4468MEM → BNA · delivered 12 Aug

People

  • M. OrtizDriver · 3 open loads · last message 15:41
  • Dawn R.Dispatch, MEM · tendered 4471

Orders

  • SO-88214Acme · 2 pallets · riding on PK-4471

Messages

  • “Held at the dock. One pallet’s crushed.”M. Ortiz · 13:58 · PK-4471
The same box finds a shipment, the driver on it, the order riding on it, and the sentence that opened the exception. A chat app can search its own messages; only an index that knows what a load is can return the other three. This is the difference between a place people talk and a place the business can be asked questions.

What it was weighed against

Build our platformDecidedfree app · we own all of itAll-in on Teamsbuy · record stays in the tenantSlackbuy · record stays in the tenantStay on Telegramstatus quo
Cost to add one driver✓ $0, free download✗ licence or guest account✗ a paid seat✓ $0
Onboarding a driver✓ install and permission✗ identity, up to 12h, training◐ invite and account✓ instant
Where the record lives✓ our database✓ Microsoft tenant✓ Slack tenant✗ dispatcher's account
Export on demand, no permission✓ our database, $0✓ standing right, $0◐ Business+ $15/user, then apply✗ per-user only
Legal hold · eDiscovery✓ we set policy✓ included at E3◐ tier-gated✗ none
Tamper-proof record✓ server-side copy✗ delete-for-all, no trace
Freedom to build what dispatch needs✓ total✗ their roadmap✗ their roadmap✗ none
Exit window✓ n/a — already ours◐ 90 days + 90◐ 30 days✗ none
What Peak builds and runs◐ the app and the index✓ nothing✓ nothing✓ nothing

Ownership was never the deciding row — Microsoft and Slack both put the content in Peak’s name. Reach was. Every path that runs through a vendor charges, licenses or trains the one group Peak least controls: the drivers.

A thread attached to a shipment, not to a person.

That is what we’re building — and unlike everything it beat, we will actually own it.

What the build costs

Peak Connect, quoted by Hariom. Until this arrived the decision above argued for building without saying what building costs.

$40,000

One-time setup

Build and launch

$6,000

Per month

Hosting, support, updates

$72,000

Year two onward

The steady-state number

Included

  • Peak-branded web, desktop, iOS and Android apps
  • Channels, direct messages, files, images, reactions
  • Group voice, video and screen sharing
  • Private data, high availability, backups, monitoring
  • Up to 1,200 users · 12 TB pooled · 150 concurrent on a call
  • 24–48 hour support response

Scales by band, not by seat: 1,500 users at $7,000/mo, 2,000 at $8,500/mo. No second setup fee.

Annual cost at 1,200 users

PlatformYear 1Year 2+
Peak ConnectOwned, white-labelled$112,000$72,000
Slack Business+$15 /user/mo$216,000$216,000
Teams Enterprise$8.55 /user/mo †$123,120$123,120

† The Teams line assumes Peak buys Teams standalone. On Microsoft 365 it is already owned and the marginal cost is nearer zero — and it still cannot onboard a driver.

Two numbers have to be read together. Adding a driver costs nothing — that is a marginal cost, and it is genuinely $0. The platform underneath is a fixed cost of $6,000 a month whether twenty drivers use it or twelve hundred. Which is the whole case: per-seat platforms punish Peak for growing, and this one does not. At 1,200 users the steady-state works out near $5 a user a month, against $15 for Slack.

This is a real commitment and worth saying plainly: an app means clients, push notifications, uptime, support and release cycles, permanently. Three things keep it sane. Build on managed infrastructure rather than from scratch — Azure chat runs $0.0008 a message with no per-seat and no per-user fee, and toll-free SMS about a cent a segment. Scope the first release to one load thread, photos, proof of delivery and the index, and nothing else. And keep SMS underneath the whole time, so a driver who never installs anything is still reachable and still on the record.

Build it, or assemble it?

Before commissioning a build from scratch, the obvious question: can an existing white-label platform already do this? Three were checked against one hard requirement — a Peak-named, Peak-iconed app that a driver installs free from the App Store.

PlatformPeak-branded mobile appPrice at 1,200The catch
Mattermost✓ from the free tier$ quote — Pro caps at 250 usersFork it, and run your own push proxy
Rocket.Chat✓ MIT server and mobile$ quote — free caps at 50Same shape as Mattermost
Element✗ icon and name stay Element$ per seat, per monthPrices the drivers we want free

The surprise is that the rights are not the obstacle. Mattermost documents “Distribute a custom mobile app” as available even on its free tier, ships the mobile client under Apache 2.0, and says plainly that you may submit your build to the public app stores. Its trademark policy is the inverse of the usual trap: it does not forbid Peak’s branding, it requiresMattermost’s to be removed. Rocket.Chat reaches the same place by licence — server and mobile client both MIT.

Element fails the brief for the opposite reason. Its included branding is a server-pushed accent colour, and its own launch note concedes the app “remains Element Pro” on the home screen. It then bills per seat per active month — pricing precisely the driver population Peak wants to add for nothing.

What none of them publish is a price at 1,200 users. Mattermost caps its self-serve tier at 250 and sends everything above it to sales; Rocket.Chat’s free editions stop at 50. So “buy the engine” lands in the same quote-gated place as the phone field in part one. And the real cost was never the licence: both routes require forking the client, maintaining that fork against upstream, and running Peak’s own push notification service, because a custom-branded binary cannot use the vendor’s.

Which makes one question worth asking before the quote is signed: is the $40,000 a build from scratch, or a Mattermost or Rocket.Chat deployment with Peak’s branding on it? Both are legitimate and the second is often the better engineering answer — but they carry different risks, different maintenance obligations and different prices. The answer also decides who owns the fork in three years.

What happens next

  1. 01

    Scope release one

    One load thread, photo attachments, proof of delivery, and the load-keyed index behind it. Every other idea waits for release two.

  2. 02

    Set the permission model

    Who can invite a driver, what they can see, and how access is revoked the day a carrier relationship ends. Decide this before the first invite, not after.

  3. 03

    Pick the transport underneath

    Managed chat infrastructure plus SMS fallback, so adoption never blocks dispatch and nobody is unreachable on day one.

  4. 04

    Write the retention policy

    We set it ourselves now — how long threads live, what a legal hold looks like, who can export. The thing no vendor was going to hand us is also the thing we now have to author.

Fetched Aug 10, 2026 · learn.microsoft.com · azure.microsoft.com · core.telegram.org · slack.com · salesforce.com · contract language quoted from the Microsoft Products and Services DPA and the Salesforce Main Services Agreement