Zammad phone integration: how caller details reach agents
Support agents want the caller's customer record and recent call history on screen when a call arrives, so they can greet the customer by name and pick up the previous ticket without searching. In Zammad, that behavior depends on the telephone system sending the right data to Zammad at the moment the call starts. The documented telephony paths are the generic CTI webhook interface and the Placetel integration. Both work the same way at the core: the phone system tells Zammad that a call has started, and Zammad uses the caller's number to find or create the matching customer and show the call in the agent's view.
Zammad's generic CTI integration requires a telephone system that sends outbound webhooks carrying a unique call ID, both phone numbers and the call direction. Without the call ID, Zammad cannot tell a repeated notification for one call from a new call. Without both numbers, it cannot tell which side is the customer. Without the direction, it cannot tell an inbound call from an outbound one. The Zammad instance must also be reachable from the phone system over the network, so the firewall, reverse proxy and any DNS entries need to be checked before any configuration starts. Confirm these fields with your phone system vendor before you design anything around them.
The Placetel integration is a separate, vendor-specific path. According to the Zammad admin documentation, it needs an administrative Placetel account and the legacy Placetel Pro product, not Webex for Placetel. Confirm with Placetel which product your account is on, because a mismatch will block the integration before any testing starts. Your decision here is largely commercial and administrative: whether your current Placetel contract and account roles match what the integration requires.
The supplied documentation covers the generic CTI path and the Placetel integration. It does not establish sipgate support in Zammad. Before you scope any work for sipgate, check the current Zammad documentation and release notes for a sipgate integration or a supported generic path, and ask DeployOpen to confirm that finding against the Zammad version you plan to run. If sipgate is not supported natively, the generic webhook path may still work, but only if sipgate can send the call ID, both numbers and direction in the form Zammad expects. Verify that with a test call on your own account first.
Ask for the following in writing before you agree on a scope: the phone system and product tier, the exact fields it can send, the Zammad version, the network path between the two systems, and the process for mapping extensions to agents. Caller ID formats and extension mapping are separate decisions that affect how reliably customers are matched. Plan a test with real inbound and outbound calls before rollout, and record which call scenarios fail.
What your phone system and Zammad must provide before setup
Each card covers one prerequisite that must be in place before you configure the CTI connection. Check the generic webhook requirements first, then the Placetel-specific items, and confirm the sipgate path separately because its requirements differ.
Outbound call webhooks
The generic Zammad CTI integration depends on a telephone system that sends outbound webhooks when call events occur. Zammad receives these events and uses them to show caller information to agents. Ask your phone system vendor which call events trigger a webhook, whether those events fire for both inbound and outbound calls, and whether the webhook payload can be sent to an endpoint you control. Test with a single call before you configure any agent workstation.
Unique call ID per call
Each webhook must carry a unique call ID so Zammad can tie the event to the right call record and avoid merging separate calls into one. Without a stable identifier, call logs can show duplicate entries or attach a call to the wrong ticket. Confirm that the ID stays the same across the ringing, connected and ended events for one call, and that it does not repeat across calls over time. Check the format in a test payload before you build any mapping.
Both phone numbers and call direction
The webhook must include both phone numbers involved in the call and the direction of the call. Zammad uses the caller number to look up a matching customer, and it uses the direction to decide whether the event describes an incoming or outgoing call. Missing or malformed numbers, such as a number without a country code, will reduce lookup accuracy. Compare sample payloads with the numbers your agents see on handsets before you agree on caller ID rules.
Zammad reachable from the phone system
Your phone system must be able to open a network connection to the Zammad endpoint that receives the webhooks. Confirm the hostname, the port, the TLS certificate chain and any firewall or proxy rules between the phone system and Zammad, and make sure the name resolves from the phone system's network segment. Also confirm which side initiates the connection. If the phone system sits in a segment that cannot reach the Zammad host, plan the route with your network team before setup.
Placetel administrative account and Pro product
The Placetel integration requires an administrative Placetel account that can create and change the webhook settings. It also requires the legacy Placetel Pro product, which the Zammad admin documentation names as the supported product. Webex for Placetel does not meet this requirement. Confirm the product on the account, and confirm with an administrator that they can change webhook settings, before you schedule the configuration window.
Confirm the sipgate path
This page does not assume a specific sipgate setup, so confirm the sipgate path with sipgate and with the Zammad admin documentation before you plan the build. Ask sipgate which call events and data fields its service exposes, how those events are delivered, and who can change the settings. Then check the Zammad documentation for the sipgate integration to compare the required fields with what sipgate provides. Record any gap as an open decision.
Choosing the Zammad phone integration method for your PBX
The choice between the generic CTI webhook and the Placetel integration depends on two things: what your telephone system can send, and which Placetel product line your organization licenses. Settle both before anyone configures Zammad, because the answer decides who builds the connection, what the administrators must hold, and what has to be maintained after go-live.
The generic path asks more of the telephone system than of Zammad. Zammad expects the PBX to send outbound webhooks that carry a unique call ID, both phone numbers and the call direction. If the PBX cannot emit those fields in a consistent form, something else has to translate its events before Zammad can use them. The Zammad instance must also be reachable from the phone system, so confirm the network path, DNS name, TLS setup and firewall rules between the two. Ask the PBX vendor whether the call ID stays the same across the call lifecycle and whether direction is included on every event.
The Placetel integration asks something different of the account. Zammad's documentation requires an administrative Placetel account, so the person who sets up the connection must hold admin rights, not only a user login. It also requires the legacy Placetel Pro product. Check the product line on your contract before planning. If your numbers sit on Webex for Placetel, the documented Placetel integration does not apply to that line, so confirm the route with Placetel and with Zammad's admin documentation before committing to a timeline.
For sipgate, the team must check whether a native integration or a generic webhook route is documented for the specific sipgate product in use before choosing. Do not assume the Placetel answer carries over. The choice also decides who builds and maintains the middle layer. A native integration keeps that layer with the vendor's supported configuration. A generic webhook route makes your team or an implementation partner responsible for the translation service, including its uptime, logs, certificates and upgrades.
Before the build starts, record the PBX model and firmware, the exact product line or sipgate product, the name of the administrative account holder, whether the required webhook fields are available, and who will own the middle layer after handover. Illustratively, if the PBX cannot emit a unique call ID, the generic route stops being viable until the vendor or a translation service fills that gap, and that finding should change the plan before any Zammad configuration begins.
Zammad phone integration setup sequence
The sequence connects a phone system to Zammad in an order that proves each link before the next one is built, so the first live call shows the right caller record and call log entry. Each step closes with a check the team can repeat.
Confirm reachability and the integration method
Choose the generic CTI webhook interface, the Placetel integration or a sipgate setup, and record the choice. Have the network team confirm that the phone system's network segment can reach the Zammad endpoint over the path you plan to use, including DNS and TLS. For the generic interface, the phone system must send outbound webhooks with a unique call ID, both phone numbers and the call direction. For Placetel, confirm an administrative account on the legacy Placetel Pro product, as the Zammad documentation requires. Done when a test request from that segment receives a response from Zammad.
Enable and configure the CTI integration in Zammad
An administrator enables CTI in the Zammad admin settings and sets the integration for the chosen method, including any access restrictions you want on the endpoint. Keep the settings in your change record so they can be rebuilt on a restored or upgraded instance. Check the Zammad admin documentation for the exact options in your release, because labels can change between versions. Done when the integration shows as active and a test request from an approved client produces no errors in the server logs you collect for Zammad.
Configure the phone system to send call events
The telephony administrator configures the phone system or Placetel account to send an event for each call state the integration needs, with the unique call ID, both numbers and the direction in every event. Confirm with the vendor which events are sent and which fields the payload carries, since these details come from the vendor's documentation and your account settings. Capture the first payload with a request inspection tool on a single test line before pointing events at Zammad. Done when the captured payload contains a call ID, both numbers and a direction value that match a test call you placed.
Normalize caller numbers and match customer records
Agree on one number format for storage and lookup, such as international format, and apply the same rule to customer records and incoming payloads. Check how the phone system presents withheld, anonymous or internal numbers, and decide what Zammad should display for each case. Enter a small set of test customers with numbers in the agreed format. Done when calls from those test numbers match the correct customer record, and calls from unknown or withheld numbers behave the way you documented.
Map extensions to Zammad agents
Build a table that links each extension or line identifier from the phone system to the Zammad agent account that should receive its calls. Review the table with team leads, because a wrong mapping sends customer calls to the wrong agent without raising an error. Enter the mapping in the integration settings and confirm that every active agent has either a mapping or a documented decision to have none. Done when a test event for each mapped extension opens the expected agent's view in Zammad.
Run one end-to-end test call
Place a single inbound call from a known customer number to a mapped extension, and handle it as your process requires. Check each stage in order: the event reaches Zammad, the caller matches the customer record, the call appears for the correct agent, and the call log entry is written with the direction once the call ends. Record anything missing, then trace the gap back to the step that produced it before repeating the call. Done when one call passes every stage without manual intervention.
How extensions, caller IDs and call direction map to Zammad
This table follows each piece of data the phone system sends through to Zammad's caller lookup, agent assignment and call log. Read each row as a question to answer in your own environment before go-live. Where the documentation does not settle a rule, the last column names what your team must confirm with the vendor or in a test setup.
| Phone data | What the phone system sends | What Zammad does with it | What to confirm |
|---|---|---|---|
| Call ID | A unique ID per call, included in each outbound webhook event for the generic CTI interface | Ties the events for one call together so the call can be logged as one record | Confirm the field name and that the same ID appears on every event for the call |
| Source and destination numbers | Both phone numbers, with the call direction, in the webhook payload | Drives the caller lookup and fills the call log with both numbers | Confirm which field holds the customer number for inbound and outbound calls |
| Number format normalization | Numbers may arrive in local, national or international notation depending on the PBX or carrier | Lookup finds a customer only when the stored and incoming formats match | Confirm the country prefix and format the webhook uses, and store customer numbers in one agreed format |
| Internal extensions | A short extension or user identifier for the internal party | Used to assign the call to the matching agent, if the mapping exists | Confirm which identifier the PBX sends, who maintains the extension-to-agent mapping and how changes are handled |
| Unknown callers | A number that matches no customer record in Zammad | The call is still logged with the raw number and no customer is linked | Confirm what the agent sees and whether Zammad creates a customer record from the number |
| Outbound calls | Direction set to outbound, with the agent's line or extension as the source | Logged as outbound, with the caller lookup applied to the destination number | Confirm the direction values the system sends and test one outbound call end to end |
| Duplicate events for one call ID | Several webhook events for a single call, such as ringing, answered and ended | Should update one call record and not create a new entry for each event | Confirm the event types sent and test whether repeated events with the same ID create duplicate entries |
| Placetel account and product | Webhook events from a Placetel account with administrative rights on the legacy Placetel Pro product | Connects the Placetel integration to Zammad using that account's configuration | Confirm the product is legacy Placetel Pro, not Webex for Placetel, before planning the integration |
How caller ID matching and call logs behave in practice
Whether Zammad finds a caller depends less on the integration than on whether the phone system and Zammad agree on how a number is written. A customer stored as +49 30 1234567 in Zammad will not match an inbound webhook that delivers 030 1234567 or 0049301234567, so the first practical step is to decide one canonical format for stored customer numbers and to make sure the phone system sends numbers in that same form. Customer records that were imported from an old helpdesk, a CRM or a spreadsheet often mix local and international notation, so plan a cleanup pass before go-live rather than assuming the integration will normalize them. The generic CTI interface expects the telephone system to send a unique call ID, both phone numbers and the call direction with each event. Zammad uses that information to look up the customer, show the caller in the agent view and create or update a call log entry. The exact normalization and lookup rules are the part to confirm against the current Zammad CTI documentation for your version, because they decide which formats match. Do not reconstruct them from memory or from a forum post, and do not assume the Placetel or sipgate integration applies the same rules as the generic interface. Unknown numbers need an explicit policy. When no customer matches, you need to decide whether the call still produces a log entry, whether an agent is prompted to create a customer and who is allowed to do so. Ask your team which of these outcomes they expect and check what the chosen integration actually does with an unmatched number in a test instance. Also confirm what a call log entry contains in your version: typically the direction, both numbers, timestamps and the linked customer or ticket where one exists, but the set of fields and their labels should be checked rather than assumed. The call ID is what makes event handling safe. Phone systems may retry webhooks or send separate events for ringing, answering and ending the same call, so Zammad needs a stable identifier to recognize that several events describe one call. If the ID is missing, changes between events or is not unique across the phone system, you can get duplicate log entries or a call split into several records. Ask your telephony provider how it generates call IDs and whether they are unique over time. Test with real numbers from your own customer base, not with a few invented examples. Export a sample of customer numbers, include mobile, landline, international and older formats, place test calls in both directions and record what each agent sees. This test will show mismatches that no documentation summary can predict, and it gives you a baseline to repeat after any change to the phone system, the Zammad version or the number format.
Securing the CTI endpoint and Placetel credentials
The phone system pushes call data into Zammad, and in the Placetel case an administrative account controls how calls are routed and logged. Protecting both the webhook path and the account that configures the phone system is what keeps caller information from being exposed or altered. The cards below cover the endpoint, the administrative account, and the personal data that call logs create.
TLS and reachability of the webhook endpoint
The generic CTI integration expects the phone system to send outbound webhooks to a Zammad instance it can reach, so the endpoint is exposed to a network path that carries caller numbers and call IDs. Serve the endpoint only over TLS through your reverse proxy, and confirm the certificate chain is trusted by the phone system's webhook client. Restrict source addresses at the firewall or proxy to the phone platform's documented egress ranges, and confirm those ranges with the vendor before you rely on them. Test that plain HTTP requests are refused.
Shared secret and credential scoping for webhooks
Decide how the phone system proves to Zammad that a request is genuine, and whether the mechanism is a shared token, a signature, or an IP restriction alone. Store any token outside the ticket configuration in a secrets store you control, limit it to the single CTI integration, and document who can read it. Plan a rotation step that updates Zammad and the phone system together, so a rotation does not silently stop call pop-ups for agents. Confirm which options your phone system version supports before designing around one.
Placetel administrative account ownership
The Placetel integration requires an administrative Placetel account, which can change numbers, routing and user assignments in addition to reading call data. Name one or two accountable owners for it, record where the credentials are kept, and avoid sharing a single login among support staff. Confirm with Placetel how administrative roles can be split, and whether a narrower role is enough for the Zammad connection. Keep the Placetel product in mind: the integration documentation names the legacy Placetel Pro product, so confirm your subscription matches before you configure anything.
Removing access when staff leave
An administrative account that outlives its owner is one of the most likely routes to changed call routing or exported call history. Build the offboarding checklist so that the Placetel login, any personal API or integration credential, and the Zammad agent account are reviewed in the same step. Where Placetel users are tied to a single person, plan to transfer ownership before the departure date. Record who performed each removal and when, so the review is verifiable later.
Logging configuration changes in the phone system
Changes to extension mapping, webhook targets, routing rules or administrative users can alter which caller data reaches which agent, sometimes without any change to Zammad. Confirm what audit log Placetel keeps for configuration changes, how long it is retained, and who can read it. In Zammad, review changes to the CTI settings and keep the record alongside your change tickets. Agree in advance who checks these logs and how often.
Personal data in call logs and retention
Call logs typically hold caller and called numbers, direction, timing and, depending on the phone system, recordings or notes. Once they are linked to Zammad tickets, they become personal data about customers and staff in your helpdesk. Decide what fields the integration stores, how long call records and linked tickets are kept, and whether recordings are stored at all. Those decisions belong to your organization and its data protection adviser, and the answers should be written down before go-live.
Testing the phone integration before agents rely on it
The phone integration is only ready for agents when a documented test plan has run against the same phone configuration and Zammad version that production will use. Testing against a lab PBX or an older Zammad build can pass every case and still fail on the live system, because the webhook payload, extension mapping and caller ID normalization all depend on details that change between environments. Agree on this rule before the first test call is placed, and record the exact Zammad version, the Placetel or sipgate account settings, and the PBX or webhook sender configuration in the test record.
Each test case needs a defined expected result and a fixed set of fields the tester records. For every call, record the call ID as it arrives, the direction, both numbers as received and as displayed, the extension that rang, the agent who answered, whether the caller card opened, which customer or ticket was linked, and whether a call log entry was created. Cover these cases: an inbound call from a known customer, an outbound call started from a Zammad link, an internal extension-to-extension call, a call from an unknown number, and a known customer whose number is stored in a non-standard format such as a national prefix or missing country code. Include two agents receiving calls on different extensions at the same time, so that the extension mapping is tested rather than assumed.
Add one case that fails on purpose. Drop the webhook connection or interrupt the call mid-way, then confirm what Zammad does with the partial call: whether a log entry is written, whether an incomplete record is flagged, and whether the next call still routes correctly. Note which failures the phone system itself reports and which must be caught from Zammad's side, since this determines what agents and administrators should watch for after go-live.
Assign roles before testing starts. A test lead runs the cases in order, a second tester places or receives the calls from the other end, and an administrator checks the Zammad logs for each case. Sign-off should come from the operations owner who will support the integration, and from the telephony owner for the PBX or provider account, not only from the person who built the connection. Store the signed test record with the change ticket so the same cases can be rerun after a Zammad upgrade or a change to extensions, trunks or caller ID rules.
Ask your telephony provider and the Zammad documentation for any setting that changes call data before it reaches Zammad, and confirm it in writing. Ask whether the test plan should be repeated for each Zammad release that touches the telephony code, and who pays for retesting if a fix from a vendor is needed. The result should be a short list of open issues, each with an owner, that is closed before agents start depending on caller information in their daily work.
Why caller pop-ups and call logs fail, and how to fix them
This table lists the failures teams most often hit when connecting a phone system to Zammad, with the likely cause, how to confirm it and the general fix. Read each row in order, since reachability and event data problems usually hide behind mapping errors. Exact settings change between releases, so use the Zammad admin documentation for the final values.
| Failure | Likely cause | How to confirm it | General fix |
|---|---|---|---|
| Zammad is not reachable from the phone system | The Zammad instance sits behind a firewall, reverse proxy or private network that blocks the phone platform's webhook requests | Send a test request from the phone platform side and check the Zammad reverse proxy and application logs for the incoming call | Open a path from the phone system or its cloud service to the Zammad HTTPS endpoint, and confirm the proxy forwards the CTI route |
| No call ID or direction sent | The phone system or plan does not include a unique call identifier or call direction in its outbound webhook | Capture one webhook payload and check for a unique call ID, both numbers and an inbound or outbound flag | Confirm with the phone vendor that these fields are sent on your product, then enable them or choose a supported plan |
| Numbers arrive in a different format | Caller numbers are sent in local, international or prefixed form, while stored customer numbers use another format | Compare a captured number with the customer record for the same caller and note the differences | Agree one number format across the phone system and Zammad, and normalize stored customer numbers to match before go-live |
| Placetel account or product mismatch | The account is not administrative, or the Placetel product in use is Webex for Placetel instead of the legacy Placetel Pro product | Check the account role in Placetel and confirm which product the subscription includes | Use an administrative Placetel account on the supported product, or plan a different integration path if the product does not match |
| Duplicate or missing events | Retries after timeouts, several webhook subscriptions for the same line, or events dropped during network interruptions | Count events per call in the Zammad log and compare them with the call records in the phone system | Keep one active webhook subscription per integration, check endpoint response times, and agree how retries and missed events are handled |
| Agents mapped to the wrong extension | Extensions were copied incorrectly, users were assigned to another agent's line, or the mapping was not updated after staff changes | Place a test call to each agent's extension and check which Zammad user receives the pop-up | Review the extension to user mapping for every agent, correct entries, and add a step to update it when staff join, move or leave |
Zammad phone integration cost, effort and what you need to provide
Does self-hosted Zammad have a license fee for phone integration?
Self-hosted Zammad has no license fee, so the platform itself costs nothing to license. Zammad sells optional self-hosted support subscriptions: Business at 2,999 EUR per year with a 6-hour response time, Enterprise at 5,999 EUR per year with a 4-hour response time, and Corporation at 9,999 EUR per year with a 2-hour response time, according to Zammad's pricing page. The phone integration effort is separate from these fees and is scoped in writing before work starts. Decide on a support subscription as its own question, and compare the quote for the integration with the response times you need for your phone operations.
What drives the effort of a Zammad phone integration project?
The main drivers are the number of phone systems, the number of extensions that must map to agents, and the number of phone number formats your organization uses. The next driver is whether your PBX can emit the webhook fields Zammad needs: a unique call ID, both phone numbers and the call direction. Sipgate verification and the scope of testing also add work, especially when inbound calls, outbound calls, transfers and several sites all need checks. Ask for each driver to appear as a separate line in the written scope, so you can see which choices change the total.
Can our own team build the Zammad phone integration without a partner?
A capable internal team can build it, provided it has administrative access to Zammad, the phone system and the carrier account. The team also needs people who understand webhooks, reverse proxy reachability and phone number normalization. Most of the work is configuration and testing, but caller ID matching problems often appear only on live calls, so plan for several test cycles. Consider whether the people who support the integration after go-live are the same people who built it. Partner help is most useful when the team lacks time, when several phone systems are involved, or when the change window is tight.
How long does a Zammad phone integration take to complete?
No single duration applies to every environment, and the timeline depends mostly on your change windows and on how quickly outside parties respond. Your PBX vendor, Placetel or sipgate may need to enable features, confirm settings or verify numbers, and each request waits in their queue. Production changes usually need approved change windows, so a test plan that fits those windows keeps the schedule predictable. Ask for a timeline in the written scope that lists each dependency, the vendor action it requires and the dates your change board has approved.
What do we need to provide for a Zammad phone integration?
You need to provide administrative access to Zammad, which is used to create the CTI configuration and any user mappings. You also supply access to phone configuration, meaning the PBX or Placetel administration where call events and webhooks are set up, plus the carrier details needed for sipgate. Test numbers are essential, covering inbound calls, outbound calls, internal calls and at least one external mobile line for each site. Finally, name a business owner who signs off on the test results and on go-live. Confirm these access paths before you accept the quote, because missing access can delay the work.
Can the generic CTI webhook work with any phone system?
It works only if the phone system can send outbound webhooks that carry a unique call ID, both phone numbers and the call direction, and only if Zammad is reachable from the phone system. Products often differ in payload shape, so check the payload of a test call before you commit to a design. Confirm whether your Zammad instance sits behind a firewall or reverse proxy that the phone system can reach, and whether the system sends events for both inbound and outbound calls. Ask the vendor for sample payloads and written confirmation of each required field.
Does Placetel integration require the legacy Placetel Pro product?
Yes, the Placetel integration requires an administrative Placetel account and the legacy Placetel Pro product. Webex for Placetel is a separate product, so confirm which product your account runs before the scope is written. If your account is on the other product, the integration plan changes and the quote should say so. Check the account roles early, because the person who configures the link needs the correct administrative rights in Placetel. Ask whether any product change is a separate project and whether it sits in your scope or in the integration scope.
How DeployOpen scopes and delivers Zammad phone integration
DeployOpen plans and builds Zammad phone integration inside infrastructure you control, starting from your telephone system and how your agents handle calls today. Each engagement is fixed-scope, with the phone system, PBX requirements and caller ID rules agreed in writing before build starts. Ongoing support is available as a retainer after handover.
How we scope
- The written scope names your telephone system, PBX details and the chosen route: generic webhook, Placetel or sipgate.
- Scope covers extension mapping, caller ID normalization rules and which agents and queues see caller information and call logs.
- Fixed-scope engagements are agreed in writing before build starts, and ongoing support is available as a retainer.
How we build
- Confirm the PBX sends webhooks with a unique call ID, both phone numbers and call direction before build starts.
- Build the generic webhook path or the Placetel integration, which needs an administrative account and the legacy Placetel Pro product.
- Test with live call traffic in a staging Zammad instance reachable from the phone system, then document mappings.
How we hand over
- Handover includes the configuration record, extension and caller ID mapping tables, and the webhook or Placetel settings used.
- Runbook covering call-ID matching issues, PBX webhook changes and extension updates after staff moves.
- Knowledge transfer to your administrators on Zammad CTI settings, with the written scope kept as the reference.
How we support
- Ongoing support, upgrades and testing are available as retainers after handover, scoped to your Zammad version.
- Re-verify CTI routing after Zammad upgrades, PBX firmware changes or new extensions are added to the phone system.
- Confirm with Zammad which self-hosted support tier covers your environment before relying on vendor help.

