Use cases

Successful cases

We encourage integrating VoIP services with Kommo and are ready to provide consulting. Here are some existing VoIP integration:

  • Twilio: is a cloud communications platform that provides voice call services, letting you connect with customers across the world.
  • RingCentral: a global enterprise cloud calling solution.
  • Nvoip: allows Kommo users to manage all voice communication directly within their CRM. Features like click-to-call, automatic logging, and call reminders make it easy to engage leads efficiently.
  • GoTo Connect: a unified communications platform combining business phone systems with meeting and collaboration tools.
  • API4Com : a Brazilian telephony platform providing a complete business voice‑over‑IP (VoIP) system.

And many more!

Understand the task

Your integration plays a key role in connecting Kommo with a VoIP service. It is responsible for synchronizing data such as integration settings, users, their permissions, and extensions. Optionally, your integration can also enable users to make and receive calls directly within Kommo.

While the actual call handling is performed by the VoIP service, your integration is involved at the start and end of each call. This includes actions such as initiating or answering a call, logging call data, and displaying the call result window. You can also periodically import call information if needed.

The integration must be authorized both in Kommo and in the VoIP service, and it should process all data securely.

For better performance and consistent data handling, consider the number of integration users and use queues and workers for them if necessary.

If your integration includes a UI/UX component, make sure it is intuitive and easy to use. Finally, if you plan to publish your integration in the Kommo Marketplace, review and follow the Marketplace Integration Requirements.

Use cases

Here are a set of requirements should be considered:

Your integration must use OAuth 2.0 to authorize with Kommo. You can choose any secure method for exchanging keys with the VoIP service. All generated tokens and related data must be securely stored. Additionally, the integration should provide an interface for the account administrator to configure and manage the integration settings.

Your integration should register calls between contacts and managers, and link each call to the appropriate entity (Contact, Company, or Lead) according to the call logging guidelines.

When a call is completed inside Kommo, a modal window can appear to allow the manager to record the call result or outcome.

When saving a call, your integration might also attach the call recording and other data to the call note. Kommo will then display a player, allowing users to listen to the recording directly in the interface alongside with the call details.

If an incoming call is received from an unknown number, your integration can allow the manager to save the number as a new contact. An incoming lead may also be created automatically. Once the manager saves the number, they can accept the lead, add a note, or create a to-do task.

Incoming lead 'Call'. Can be accepted, rejected or linked to an existing entity

When a call occurs in a user’s account, your integration can display the caller’s name along with a link to the associated entity (e.g., Contact or Lead) to provide context and improve communication efficiency.

You can provide the ability to assign every manager (user in the Kommo account) a phone extension number of the VoIP account.

Each contact in Kommo has a responsible manager assigned. When an incoming call is received, your integration can identify the related contact, determine the responsible manager, and automatically forward the call to them.

Kommo allows managers to make calls from any contact, company, or lead card by simply clicking on the phone number in the card.

In order to simplify managers’ work inside Kommo, we suggest providing the ability to perform calls inside the Kommo account by showing a keypad with buttons to manage calls and windows to display them. A notification about a call could also be provided.

There is a possibility to create notifications about incoming calls, ended calls or displaying errors occured during the calling session.

Incoming call

Error event

The events cards allows you to open the active entity card (according to the specified rules) connected to the contact when answering a call.

Kommo SDK allows you to add additional functionality for your system lists (leads, contacts, companies) selected items which can be used for creating a Call list modal window implementing the skip, pause and time interval features.

Beginning the development

Before anything else, we highly recommend that you split the UI/UX from the integration, and we will describe our vision of how to organize the delayed asynchronous tasks so you can have more understanding for what’s coming next.

UI/UX

The UI/UX is a widget which contains an archive of files that is loaded during the creation of the integration. The widget has the integration settings which contain: description, icons, subscription to events, determination of the required scopes, integration id and integration secret. This is a general structure of a typical widget that you must stick to:

  • i18n files
  • images
  • template files
  • script.js
  • manifest.json
  • scripts placed in separate modules, but used inside script.js

One of the basic files is script.js. It has standard methods for working with widgets, but the most important thing is that you can expand it as you need with additional functions which will expand the system functionality once the widget is installed.

The entire widget is represented as an object, which has callback functions called under certain conditions.

During development, you can use any tools and libraries. The main thing to remember is that the result of the work should be a JS code executed inside script.js.

Integration

We encourage working on a MVC development environment. We usually use PHP MVC frameworks like Laminas Mezzio, Laravel, and will describe everything in PHP terms. You can use any language you want, and read our documentation to get the ideas we present.

Your integration can have models where it implements the database tables and a module to deal with Kommo and generated keys. Since the UI/UX is a widget, you should also provide a connection to receive/send information to the frontend.

It's important for your integration to process high load and work with a lot of leads, and for this we recommend using queues. The queuing system is a principle, not a specific technology. Queues ensure scalability, allowing the application speed to increase.

The queue server keeps a list of tasks that the main application sends to it, and this is its only job. A task is simply information about what needs to be done and how. It is not necessary to use an external solution to implement a queuing system. However, simplicity and the availability of ready-made solutions will make it faster, for example Beanstalkd, Apache Kafka or RabbitMQ.

For each use case, a task is created to implement the use case in a worker and submitted to the queue. A worker is a separate script that constantly checks the server for new tasks. A worker grabs a task from the queue and executes the logic associated with it.


What’s Next

Let’s now discuss every use case in depth, and start with installing and configuring the integration.