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
- A customer calls. VoicerOnePBX asks the CRM "who is this number?" — the CRM resolves it to a Party and returns a screen-pop card.
- 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.
- They talk. The agent can add notes against the live call.
- 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:
| Endpoint | Returns |
|---|---|
GET /api/pbx/lookup/caller/:phoneNumber | The matching customer (basic). |
GET /api/pbx/lookup/enhanced/:phoneNumber | Customer plus recent activity and context. |
GET /api/pbx/screen-pop/:phoneNumber | The full screen-pop card the agent sees. |
Click-to-dial & call lifecycle
The CRM can place and follow calls through the PBX:
| Endpoint | Purpose |
|---|---|
POST /api/pbx/calls/start · /start/crm | Place an outbound (click-to-dial) call. |
PATCH /api/pbx/calls/:callId/answer · /end | Track answer and hang-up. |
POST /api/pbx/calls/log | Write the completed call to the customer timeline. |
POST /api/pbx/calls/:callId/notes | Attach notes to a call. |
GET /api/pbx/calls/active · /calls/history | Live and past calls. |
Customer sync
Customers and caller-ID names are kept in step between the two systems:
| Endpoint | Purpose |
|---|---|
POST /api/pbx/sync/full | Full customer sync. |
POST /api/pbx/customers/:id/sync | Sync one customer. |
POST /api/pbx/import/pbx-export | Import a PBX customer export. |
GET /api/pbx/sync/status | Sync health. |
GET /api/pbx/users/extension/:extension | Map a phone extension to a CRM user. |
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.
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.