The in-app phone

Place and answer real calls inside the platform, with the customer's record on screen and the call recorded against them.

What it is

One phone device for the whole browser session, shared by every surface that can start or receive a call — a contact row, a pipeline card, the conversation composer, the call queue. It rings for inbound calls to your line, dials out on the business caller ID, and degrades honestly when the browser blocks the microphone or the account has no telephony.

Also called: softphone · call from my computer · browser calling · dialer · make calls in the CRM

See it, piece by piece
01

Calls placed and answered inside the product, logged against the customer

The phone is part of the software instead of a handset the business cannot see. Every call becomes a record — who, when, how long, whether it was recorded, and why it was missed — and the customer's history is on screen at the moment they pick up. A call taken on a personal cell leaves the business nothing but somebody's memory of it.

Phone — Recents
Phone
RecentsContactsKeypadVoicemailQueue3
Search calls by name or number
AllInboundOutbound
Marlin Zook
↗ outbound· Aug 24 · 6:38
Call
0:00 / 6:38Recording
Curtis Hoover
↙ incoming· Aug 24· left a voicemail
Call
(717) 555-0166
↙ incoming· 9:41 AM · 2:07
Call
Rosalyn Petersheim
↗ outbound· Aug 23· no answer
Call
Recents: a direction arrow on every call, the reason a missed one was missed, and the recording playing on the call's own row. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
02

Mute reads its state back off the live call, and Hang up always ends it

Mute does not trust what the screen thinks — it asks the connection whether you are actually muted and shows that answer. Hang up disconnects the call and the device and cannot throw an error, and a short ‘ended’ state makes it visible when the other end drops. Believing you were muted when you were not is the kind of thing you only need to happen once.

Phone — on a call
Marlin Zook · 4:12
MutedHang up
The compact on-call bar: name, running timer, the red Muted state, and Hang up. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
03

A ringing call can be answered from any screen, and Silence is not hanging up on them

The incoming call arrives on its own layer above everything else, naming the caller when we know them, whatever you had open and wherever the phone was parked. Silence stops the ringing on your screen while the caller rings on through to voicemail — because Decline sends a rejection down the line, and plenty of people can tell they were cut off by a builder they were trying to give money to.

Incoming call
Incoming call
Curtis Hoover
(717) 555-0132
AnswerSilenceDecline
Silence stops the ringing for you — they keep ringing through to voicemail.
Answer, Silence and Decline, with the line underneath saying exactly what Silence does. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
04

Press 2 for the parts department without reaching for your own phone

The keypad dials any number, and while you are on a call the same keys send touch tones, so supplier menus and inspection lines work from inside the product. Type a number that belongs to somebody saved and their name appears under it. The caller ID the customer will see is printed at the foot, so there is no guessing which number is presenting.

Phone — Keypad
Phone
RecentsContactsKeypadVoicemailQueue3
7175550118
Marlin Zook
123456789*0#
Call

They’ll see (717) 555-0100

The matched contact name under the typed number, and ‘They’ll see (717) 555-0100’ at the foot. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
05

The phone sits over your work rather than being a page you go to

Drag it anywhere and it stays where you put it; it shrinks to a bar while a call is live and to a single puck when it is not, and it can be dropped into the sidebar to become an ordinary menu row instead. On a phone screen there is no puck at all — the header icon is the whole thing. A full-page dialer makes you leave the estimate the call is about.

06

Or have it ring your own handset and bridge the customer to you

An outbound call can ring your cell first and connect the customer when you answer — your phone's audio, Bluetooth through the truck, and it still works on bad service at a site. There is no press-1 screening, because a keypress is four interactions with a glove on. The customer still sees the business number rather than your personal one, and the call is still recorded against them, so a return call comes back where the team can see it.

How it works
  1. 1A short-lived Twilio access token is minted per user from /api/comms/voice-token, org-scoped as org__user
  2. 2The token refreshes before it expires so a long shift never drops the phone
  3. 3The device registers once; inbound calls raise an interrupt banner, outbound calls run through the TwiML app
  4. 4If the token endpoint is unconfigured or the mic is blocked, ready stays false and error explains why
  5. 5Accounts whose texting runs through GoHighLevel get no device at all
Why we built it

When the call happens inside somebody else's dialer, the customer's file is not on screen at the moment they pick up, the outcome gets typed in later if at all, and the recording lives somewhere the builder cannot reach. The bar was set by what builders actually complain about in other dialers: no mute or speaker until the other person answers, no sound when they hang up, a mute button that does not mute, and calls that cannot be ended because of an error. Calls are placed and answered inside the platform, with the customer's record on screen and the call written to their history.

The problem
  • Calls invisible to the business because they happened on a personal handset
  • Dialer bugs that lose calls or lie about mute state
  • No customer context at the moment of connection
Sound familiar?
What you get
Every call is logged, attributable and optionally recorded
Customer history on screen while you talk
Mute available the instant a call object exists, and hangup that always works
What's inside
A phone that floats over whatever you're doing
A draggable phone in three sizes that remembers where you put it and can be parked in the sidebar or the top-right corner.
A ringing phone you can always answer
An interrupt banner at the top of the screen naming the caller, with Answer, Silence and Decline — independent of where the dock is or whether it's open.
Mute and hang up that actually work
Mute state is read back from the live connection rather than tracked in the interface, and hanging up is idempotent and never throws.
Keypad, with tones during a call
A dial pad that calls a typed number, and sends touch tones instead when you're already on a call.
Recent calls, searchable, with the reason each one was missed
The call log inside the dock — filterable by direction, searchable by name or number, with a plain-English miss reason on every missed call.
Voicemail inbox
A Voicemail tab listing only calls nobody picked up that left audio, with transcript and player, scoped to everyone or just you.
Save a number you just called
Dialling or receiving a number nobody has saved offers to make it a contact with just a name.
Told when the browser can't place the call
If the in-app phone isn't registered, the dock says so and offers to hand the call to this computer instead of doing it silently.
Your calls ring on your browser, never a stranger's
Browser calling identities are scoped to the account and minted on the account that owns the line, with a one-hour token.
Ring my cell first, then connect the customer
An outbound call option that rings the builder's own handset first and then bridges the customer, showing the business number as caller ID.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →