Integrations

Connecting Your CRM to Your Phone System: The Complete Playbook

· 8 min read

Computer telephony integration (CTI) is the connection between a phone system and a CRM that lets each one react to events in the other — a call ringing in triggers a record lookup, a call ending triggers an activity log, a click on a phone number triggers a dial. Done properly, agents stop switching between two systems and start working in one.

Done badly, it produces duplicate activity records, calls logged against the wrong account, and a sales team that quietly stops trusting the data and goes back to typing notes manually. The difference almost always comes down to a handful of setup decisions, not the integration itself.

What is screen-pop and how does it actually work?

Screen-pop is the automatic display of a customer’s CRM record on an agent’s screen the moment a call connects, matched against the incoming caller ID. The phone system passes the caller’s number to the CRM in real time; the CRM runs a lookup against stored contact numbers and, if it finds a match, opens that record before the agent says hello.

The speed matters commercially — an agent who opens a call already knowing the account’s history sounds informed in the first ten seconds, which is before most scripts even get to the second sentence. Salamtalk’s integrations connect natively to Salesforce, HubSpot and Zendesk for this exact flow.

What happens when caller ID doesn’t match any CRM record?

When no match is found, the system should fall back to a clearly-labelled “unknown caller” or “create new contact” screen, not a blank one. The failure mode to avoid is a silent non-match that leaves the agent staring at a generic dialler screen with no indication whether the lookup actually ran or simply found nothing.

Common reasons a real customer fails to match:

  • The number stored in the CRM is formatted differently from the number the carrier delivers (see E.164 below — this is the single biggest cause).
  • The customer is calling from a mobile number that was never added to their CRM record, only their landline.
  • The contact exists under a different company record than the one tied to that phone line.
  • The call is coming through a forwarded or masked number from a carrier-side service.

A good integration logs the non-match as its own event, so you can see how often it happens and fix the underlying data problem rather than treating each miss as a one-off.

What is automatic call logging and activity sync, and what should it capture?

Automatic call logging is the CRM creating an activity record for every call — without an agent manually typing it in — capturing who was on the call, when, how long it lasted, and its outcome. At minimum this should include call direction (inbound/outbound), duration, timestamp, the matched contact or account, and disposition if your phone system supports outcome tagging.

The sync should run in one direction only for authorship: calls logged by the phone system should be written once, with a stable unique ID, so a dropped connection or retry doesn’t create the same activity twice. Duplicate activity records are the single most common complaint from sales teams after a CTI rollout, and they’re almost always a sync-retry bug rather than a genuine double call.

What is click-to-dial and what does it require under the hood?

Click-to-dial lets a user click a phone number inside the CRM and have the call placed automatically through the connected phone system, without manually keying the number. Under the hood it requires the CRM to recognize phone number fields as dialable (usually via a browser extension or embedded softphone panel) and pass the number to the phone system’s API in a format it can dial without ambiguity — which is where formatting problems resurface.

Why does E.164 number formatting matter so much for CRM-phone integration?

E.164 is the international phone number format — a plus sign, country code, then the full number with no spaces, dashes, or parentheses (for example +442071234567, not 020 7123 4567 or (020) 7123-4567). It matters because caller ID matching, click-to-dial, and outbound dialling all compare strings, and “020 7123 4567” and “+442071234567” are the same phone number but different text — so a naive match fails even though the record is correct.

This is the single highest-leverage fix before any CTI rollout: normalize every phone number field in the CRM to E.164 before switching on live matching. Doing it after go-live means reconciling weeks of mismatched activity logs retroactively, which is far more painful than a one-time data cleanup.

Stored formatE.164 equivalentWill it match caller ID?
020 7123 4567+442071234567No, as stored
(415) 555-0199+14155550199No, as stored
00971 4 123 4567+97141234567No, as stored
+442071234567+442071234567Yes

Should you integrate via webhooks, a native integration, or a direct API?

Use the native integration if one exists for your CRM, a webhook-based setup if you need custom logic without writing a full application, and a direct API integration only if neither covers your requirement. A native integration (like Salamtalk’s for Salesforce, HubSpot or Zendesk) is maintained by the vendor, handles authentication and field mapping out of the box, and is the lowest-maintenance option for standard use cases.

ApproachBest forMaintenance burden
Native integrationStandard CRMs (Salesforce, HubSpot, Zendesk, Zoho)Low — vendor-maintained
WebhooksCustom routing logic, triggering other tools on call eventsMedium — you own the receiving logic
Direct APIBespoke CRMs or workflows no native/webhook option coversHigh — you own the whole integration

Salamtalk connects natively to the major CRMs and ships webhooks and an API for everything else, across 150+ supported apps.

What are the most common failure modes after a CRM-phone integration goes live?

The same handful of problems account for most post-rollout support tickets:

  1. Duplicate activity logs — usually a retry on a flaky connection creating two records for one call; fixed by deduplicating on a unique call ID rather than timestamp.
  2. Wrong record matched — a shared office number or a number reassigned to a different contact matches the wrong account; fixed by reviewing match priority rules (direct line before shared/main line).
  3. Numbers stored in inconsistent formats — the root cause of most silent match failures, fixed only by a one-time E.164 cleanup plus validation on new record entry going forward.
  4. Screen-pop firing late — often a network or CRM API latency issue rather than the phone system, worth isolating before assuming the integration is broken.
  5. Outbound calls not logging — frequently a permissions issue where click-to-dial works but the write-back to the CRM activity log lacks the right API scope.

What should you measure after rollout to confirm it’s actually working?

Track match rate (percentage of inbound calls resolving to a known CRM record), duplicate activity rate, and time-to-screen-pop as the three core health metrics for the first month. A match rate climbing steadily as you clean up number formatting is the clearest sign the integration is working as intended; a flat or falling match rate points straight back to data hygiene rather than the integration itself.


Next steps: see integrations for supported CRMs and apps, business VoIP for the core phone platform, or contact us to scope a CTI rollout.

← All articles