The Softphone

Last updated 26 May 2026

The Flexie softphone panel docked at the bottom-right, showing a connected status dot, a keypad, and an in-call view with quick actions for the matched customer

The softphone is the in-browser dialer, a small panel docked at the bottom of every Flexie page. The softphone is visible to any user whose account has a phone channel configured (a Twilio number assigned, or a PBX extension set up, see Channels). Users with neither don't see it.

What the panel looks like

The panel is always docked. You can collapse it to a small bubble when not in use, but it never closes. The ringer, the keypad tones, and the call audio are all wired into this panel.

The status dot

The coloured dot in the header shows the connection state:

Colour Means
Green Connected and ready. You can call and receive.
Yellow Connecting. Wait.
Red Disconnected. Something's wrong, check the in-page warnings below.

Hover for the last status message.

The microphone prompt

The first time a user loads Flexie after the softphone is enabled, the browser asks permission to use the microphone. Granting it is mandatory, without it, calls can't carry audio.

If the user blocks the prompt:

No microphone access. Click the camera icon in your browser's address bar to allow microphone, then refresh the page.

The dialer shows this banner until the permission is granted.

Making a call

There are three ways to start an outbound call.

1. Click-to-call from a record

Open any contact, lead, account, deal, or case. Every phone field (Phone, Mobile, Fax, WhatsApp, the field types listed in Custom records & fields) shows a phone icon next to it. Click it and the softphone dials.

The dialer panel automatically picks up the record's context (caller name, primary identity, quick links to the customer's open tasks, cases, deals, and notes) and shows them inside the in-call panel.

2. Manual dial

Click the keypad button in the softphone header. Type the number (numpad keys also work). When you've entered it, press Enter or click Call.

Manual dial is gated by a permission: users without it see no keypad button and can only click-to-call from records. Manage it through the standard Roles model.

3. From a workflow

Workflows cannot place a call to a customer on their own. Phone is not a marketing or broadcast channel, an agent has to be on the line. Workflows can record a "please call back" intent on the customer's record, but the dialling stays in human hands.

In-call panel

When a call is active, the dialer panel switches to its in-call view. It shows:

Controls (every channel)

Transfer

The Transfer button opens a small popover listing available agents (the Flexie users who are right now logged in and idle). Click one and the call is transferred to them; you drop out.

Available on Twilio out of the box. On a self-hosted PBX, transfer depends on what your PBX supports; usually it just works.

Quick actions during a call

Below the in-call header you'll see contextual buttons for the matched customer:

If no customer matched the number, you get:

Incoming calls

When a call rings your extension, the dialer panel jumps to the incoming view. It shows the matched customer (if any), the caller's number, and a list of related records (open deals, cases, tasks) so you know who's calling before you pick up.

Click Answer to take the call; Decline to send it to voicemail (Twilio) or to free up the line (PBX).

How the customer is matched

Flexie searches every phone field across leads, contacts, accounts, deals, cases, and users for the incoming number, first making sure it's in international format. Anything that matches is offered as a quick link.

If nothing matches, the incoming view shows just the caller's number and the Create lead / Create contact buttons.

After the call: the note modal

When you hang up, a small modal opens with two things:

Field What it does
Notes Free text, the body of the note added to the customer's timeline.
Status If the customer's record type has a configured status field (e.g. lead status, deal status, case status), you can update it right here. The choices come from that field's options.

Saving creates a note linked to the call's customer and the call record. The note becomes a row on the customer's timeline alongside the call, so when you come back tomorrow, both are visible together.

If you click Skip, the call is still logged; you just don't add a note.

The post-call modal opens by default. It's how teams turn calls into CRM updates rather than letting calls evaporate. If a user really doesn't want it, there's an account-level switch in their preferences.

Keypad tones during the call

The keypad button in the in-call panel sends tones, necessary for the "Press 1 for sales, 2 for support" moment. The panel plays the local tone (so you hear what you pressed) and signals the remote side.

Keyboard shortcuts work too:

Limits and gotchas

Next