PBX Integration API headline

This is what makes VoicerCRM special: it's wired directly into the PBX. When a call happens, the CRM and the phone system talk to each other so the right customer record is always in front of the right person — and every call ends up in the customer's history without anyone typing it in.

What happens on a call

  1. A customer calls. VoicerOnePBX asks the CRM "who is this number?" — the CRM resolves it to a Party and returns a screen-pop card.
  2. The agent sees context. The card shows the caller's name, status, recent calls, open tickets, commitments and a billing snapshot — on their screen and handset — before they answer.
  3. They talk. The agent can add notes against the live call.
  4. The call ends. It's logged automatically to the customer's timeline, with the recording and notes, tagged with the PBX call id so the two systems stay tied together.

Caller lookup & screen-pop

The PBX calls these when a call arrives:

EndpointReturns
GET /api/pbx/lookup/caller/:phoneNumberThe matching customer (basic).
GET /api/pbx/lookup/enhanced/:phoneNumberCustomer plus recent activity and context.
GET /api/pbx/screen-pop/:phoneNumberThe full screen-pop card the agent sees.

Click-to-dial & call lifecycle

The CRM can place and follow calls through the PBX:

EndpointPurpose
POST /api/pbx/calls/start · /start/crmPlace an outbound (click-to-dial) call.
PATCH /api/pbx/calls/:callId/answer · /endTrack answer and hang-up.
POST /api/pbx/calls/logWrite the completed call to the customer timeline.
POST /api/pbx/calls/:callId/notesAttach notes to a call.
GET /api/pbx/calls/active · /calls/historyLive and past calls.

Customer sync

Customers and caller-ID names are kept in step between the two systems:

EndpointPurpose
POST /api/pbx/sync/fullFull customer sync.
POST /api/pbx/customers/:id/syncSync one customer.
POST /api/pbx/import/pbx-exportImport a PBX customer export.
GET /api/pbx/sync/statusSync health.
GET /api/pbx/users/extension/:extensionMap a phone extension to a CRM user.
Turn it on, and watch it

The integration has simple enable/disable toggles (/api/pbx/integration/enable · /disable) and its own analytics/uptime view (/api/pbx/analytics/integration), so you can confirm the CRM and PBX are talking.

Same signing as the PBX

Requests between the systems are HMAC-signed (header X-Voicer-Signature) — the same scheme VoicerOnePBX uses for its own webhooks, so verifying them is identical on both sides.

If the CRM is offline

The integration is designed to fail gracefully — if the CRM can't be reached, the PBX falls back to its own local caller directory so calls are never blocked. When the CRM comes back, sync catches everything up.