CTI Integration


Hey guys! I am a bit lost.
I can see in "market" many integrations which enables CTI call.

That is actually what I want to accomplish.

The integration need to display iframe, click to dial, report that call ended, update record, redirect to contact or ticket.

My main question is how I suppose to write any of those. I can see that other integrations are showing something like extra window.
In documentation there are almost nothing about how to build/write/developer integrations.

Any hint will be usefull


Hi @michal.witkowski,

I can give you some documentation on the APIs you'll need to interact with in order to create an integration like this, but if you need a more dedicated consultation regarding architectural questions, you might want to consider purchasing a block of Technical Consulting (see here).

To build an integration like you're describing, you'll want to become familiar with the following APIs:

  • Contacts API: This is the most commonly used API, and it's indispensable for reading/creating/updating contact records.
  • Engagements API: This API allows your integration to interact with HubSpot engagements, which includes calls. This is useful if you're going to use the existing 'call' engagement object to track the calls made by your software.
  • Timeline API: This API allows you to define custom timeline event templates and trigger these events for your objects. The objects are fully customizable/extensible, and can be used in list segmentation and/or workflows.
  • CRM Extensions API: This API allows you to create a custom 'card' that surfaces information from your app in the HubSpot UI


Hello Michal,

I'm working on Integrations at Aircall which is integrated with Hubspot. Our integration, mainly, creates contacts / engagements when a call is received or made via Aircall.

Also we are developing a CTI framework that could be used by any developer, as it's open sourced, that allows Aircall CTI integration in any "custom" integration. Feel free to contact us, contribute, ...
Here is the repository on GitHub: https://github.com/aircall/aircall-everywhere

Have a great day


Thanks guys! Appreciate :slight_smile:




Ok, as I can see I can achieve everything I need from REST API and hosting my app elsewhere. Just redirect when I want to open a ticket or contact.

Have some more question.
Imagine my user is opening my hubspot integration on my own product site.

I want to lead this user into first auth experience. I am using link


How should I provide client_id when the user is outside of the hubspot, and I can't know it yet. I need to ask user for a client_id or just can provide different linkt so the user can put login/password and when get necessary information.

Second - even when I provide client_id to the link.. I am getting

This hub doesn't have access to some HubSpot features that are required by this integration. Please contact the integrator.

What is solution for that?

Do you have any github example application that I can look at to see how you doing logining outside of hubspot.



Hi @michal.witkowski,

Couple different things here, I'll try to address them individually:

  1. The client_id field should always be the client id of your app; this doesn't change based on the user doing the install.
  2. If you're seeing a "This hub doesn't have access to some HubSpot features that are required by this integration." error, it means that your app is requesting scopes that the portal in question doesn't have access to. For example, you'd expect to see this error if you were a Marketing/CRM Free portal installing an app that required the hubdb scope.
  3. We don't have any example code on the OAuth/install flow, but you can check out some of our reference info below: