Every call lands on the right record, before it rings.
Sub-100ms inbound routing under a 500ms budget. 9+ versioned ships in ~6 weeks against a live vendor integration. JWT cache cut auth-token mints by ~75%.
Most SMB phone systems live in a separate vendor portal, disconnected from the CRM where the work happens. Staff dial from memory; an inbound call rings with no context; missed calls vanish with no record they existed; and recordings sit in a PBX dashboard nobody opens. The phone is usually a company's highest-intent channel and its least-instrumented one.
From setup to second nature.
Dial from the record
Staff click a customer or lead inside the CRM. A local bridge places the call through the cloud-PBX and logs it against the right record — no handset, no copy-paste.
Route inbound by who knows the customer
When a customer rings, the PBX asks the CRM mid-ring “where do I send this?” The CRM answers in milliseconds with the best agent — last person who spoke to them, the owner, or a fallback — skipping anyone on leave.
Pop the caller, capture the call
An incoming call raises a screen-pop with the caller's name, status and last-contact freshness. On hangup, the PBX posts back duration, status, recording, keypresses and callback linkage.
Transcribe and file it
Answered recordings are transcribed through a shared, content-addressed pipeline and attached to the customer timeline alongside chats — searchable, with an AI call summary.
Inside Cloud Telephony / IVR.
Click-to-call (customers + leads)
Dial straight from any CRM profile; the call logs to the right record automatically. Server-side E.164 re-normalization means a messy number still dials correctly.
Smart inbound routing
A real-time API answers the PBX's mid-ring query: last agent → owner → default-DID agent → fallback, with self-call-loop protection and leave-aware exclusion.
Inbound screen-pop (CTI)
An incoming call raises a live toast with caller identity, status, last-contact freshness and a one-click link — pushed over WebSocket as the phone rings.
Missed-call → callback recovery
An unanswered call becomes a pending callback task. It returns to pending on a failed attempt so someone else can retry — it never silently disappears or gets stuck “resolved.”
Recording + transcription + DTMF
Answered calls are recorded, served through a Range-aware proxy, and transcribed; transcript and summary attach to the timeline. IVR keypresses are captured; every playback is audit-logged (a DPDP guardrail).
Call analytics & time-tracking
Per-staff and per-day KPIs in an admin dashboard, a self-service “My Calls” view, plus availability/punch endpoints. The phone line builds your reporting instead of hiding it.
Numbers from running it ourselves.
Every figure here is measured on our own business — customer zero. No external clients, no projected numbers.
- Live custom CRM telephony module: click-to-call, inbound CTI enrichment, recording proxy, KPI dashboard, “My Calls” and time-tracking — in our own CRM.
- Inbound routing typically sub-100ms, comfortably within a documented <500ms per-request budget.
- DTMF capture + callback-chain linkage proven end-to-end on a real inbound call.
- Inbound CDRs now feed transcription; transcripts land at ~0.95 confidence on Malayalam-English audio.
- A shared JWT cache cut auth-token mints by ~75%.
- 9+ versioned ships in ~6 weeks against a live vendor integration, including a 1-line dedupe-skip fix on 2026-05-08 after Bonvoice changed webhook semantics — caught and shipped same day.
Who actually uses this.
Sales teams that live on the phone
Dial from the lead record, see who's calling before you pick up, and let every call log itself — no manual after-call data entry.
Renewals & account teams
Sticky routing sends a returning customer to the person who already knows them; missed-call recovery means a renewal call never goes unanswered without a follow-up.
Support desks
Inbound screen-pop surfaces the customer's status instantly, recordings and transcripts attach to the timeline, and per-day KPIs show desk load at a glance.
The stack
- Your CRM. Click-to-call on customer and lead profiles, inbound enrichment, dashboard and “My Calls” — via a custom module. Built on Perfex at customer zero.
- Cloud PBX (provider-neutral). The CRM reads a generic call table and isolates provider code, so today's PBX can be swapped for Exotel/Knowlarity without a CRM rewrite.
- Shared transcription. One content-addressed (sha256) pipeline shared with WhatsApp voice notes — transcribed once, consumed by both.
Straight answers.
Do staff need a desk phone or app?+
No. Click-to-call works from inside the CRM; the platform bridges agent and customer over the cloud-PBX. Inbound rings their normal mobile/extension, with the screen-pop in the CRM.
Are we locked into one telephony vendor?+
No. The CRM reads a generic call table and keeps provider code isolated. We run Bonvoice today; moving to Exotel/Knowlarity later is a provider-layer swap, not a CRM rewrite.
What happens to a missed call?+
It becomes a pending callback task. If the attempt fails (no answer/busy), it returns to pending so another staffer can retry — it never gets stuck “resolved.”
Is call recording compliant?+
Recordings are served through an access-controlled proxy and every playback is audit-logged (a DPDP guardrail). On our own line we set a recorded-call announcement at call start — a PBX-level configuration we ran ourselves.
Where this honestly stands
In production on our own business — the most heavily built-out system in our set. Honest caveats: routing is typically sub-100ms (not “sub-50ms”); transcription ~0.95 confidence on Malayalam-English (not 0.98); live in-call status polling and a multi-call thread badge are in development; full inbound volume depends on carrier forwarding being switched on.
Works with the rest of the platform.
Scope a pilot of Cloud Telephony / IVR.
Tell us your workflow on a 30-minute call. We'll show you how this runs for us and how it would run for you.
30 minutes · no obligation · we reply within 1 business day