We created a smart API that lets VoIP services connect to noCRM easily, eliminating the need for complex CRM logic. Our primary goal is simplicity.
This document embodies our philosophy and serves as your comprehensive resource. It equips product owners with all the necessary information to establish a seamless connection between their VoIP service and noCRM. It also provides developers with the full documentation required to build the integration.
Connecting two apps is never easy, even if both sides have powerful and well-documented APIs. It often takes a significant amount of time and effort to create a seamless user experience through integration.
But, what if we told you that you don’t need to understand how noCRM works? Simply send us your data and we’ll take care of the rest.
How? We created smart endpoints that eliminate the need for you to handle the CRM's logic.
A call happened? Just send it to us!
Our users are salespeople who rely heavily on phone calls. They want to initiate calls directly from noCRM and have them automatically logged, with easy access to recordings.
We will talk about the following in the meeting together:
⚠️ It might sound weird to read that but don’t visit our API documentation.
Everything you need is in this document. If you have any questions or if any information is missing, feel free to reach out to us at voip@youdontneedacrm.com; we are highly responsive
X-API-PARTNER-KEY
.
Inside your app, you will provide a form that prompts users to enter two pieces of information:
When submitting this form, you will activate the connection by using our POST /api/v2/partners/activate
endpoint
Request Try it on Postman
curl -X POST \ -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/partners/activate"
Expected JSON response
{ "valid_api_key":true
, "valid_partner_key":true
, "activated":true
}
Once the connection has been made, you will provide a button to revoke it. When the user revokes the connection, you will use our POST /api/v2/partners/revoke
endpoint.
Request Try it on Postman
curl -X POST \ -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/partners/revoke"
Expected JSON response
{ "valid_api_key":true
, "valid_partner_key":true
, "activated":false
}
We created a smart endpoint that will handle all the logic. You don’t have to worry about which deal, contact or client to attach the call to. Just send it to us. If you are writing code that does anything other than send the call to noCRM, you’re doing it wrong!
Send the call using our POST /api/v2/calls
endpoint.
Request Try it on Postman
curl -X POST \ -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/calls"
Parameter | Info | Description |
called_number | required * | The phone number called. Required for outbound calls.
Use international format only. Ex: +33123456789 or 0033123456789 . |
from_number | required * | The phone number who initiated the call. Required for inbound calls.
Use international format only. Ex: +33123456789 or 0033123456789 . |
direction | required | Must be inbound or outbound |
user_id | required | User’s email address or id to whom the call should belong. |
missed_call | required | Can be set to true or false . Set it to true when the call was not answered. The appropriate activity will be selected (answered/unanswered). If the call is an inbound call, it can be discarded or a notification can be created (please check your phone settings : https://ACCOUNT_SUBDOMAIN.nocrm.io/admin/account/voip_setup) |
voicemail | optional | Can be set to true or false when a voicemail is reached. It should match the missed_call parameter |
started_at | optional | Date and time of the start of the call. Use UTC with this specific format: YYYY-MM-DDTHH:MM:SS.sssZ. Warning : started_at < ended_at |
ended_at | optional | Date and time of the end of the call. Use UTC with this specific format: YYYY-MM-DDTHH:MM:SS.sssZ. Warning : ended_at > started_at |
record_link | optional | Link to the record |
ext_call_key | optional | The call's ID on your system |
comment | optional | A text that the customer could fill up to have feedback on the call and might add insight regarding the call |
item_id | optional | noCRM’s id of the item to attach the call to (must come with item_type) |
item_type | optional | noCRM’s type of the item to attach the call to (must come with item_id), possible values : Lead or Prospect |
Expected JSON response
{ "id":3547599
, "ext_call_key":"YOUR_CALL_ID"
, "ext_text_key":, "provider":
null
, "direction":
"VoIP Partner Name"
"outbound"
, "called_number":"245-765-3498"
, "to_number":"245-765-3498"
, "from_number":"333 444 5555"
, "record_link":"https://voip-call.com/record-link/235532344423"
, "started_at":"2023-11-13T09:12:00.000Z"
, "ended_at":"2023-11-13T09:34:12.000Z"
, "sent_at":null
, "duration":1332
, "created_at":"2023-11-13T22:11:04.000Z"
, "kind":"call"
, "is_voicemail":false
, "user": { "id":217658
, "lastname":"noCRM"
, "firstname":"User"
, "email":"user-nocrm@example.com"
, "phone":""
, "mobile_phone":""
}, "called_item": { "item":"Lead"
, "id":26325240
}, "texted_item":null
, "comment": { "id":81842072
, "content":"The call was really interesting with a lot of good questions. Need to send more information about the project."
, "activity_id":88877
, "is_pinned":false
}, "text_content":null
}
Similar to what we've implemented for calls, we created a smart endpoint that will handle all the logic. You don’t have to worry about which deal, contact or client to attach the message to. Just send it to us. If you are writing code that does anything other than send the text to noCRM, you’re doing it wrong!
Send the text using our POST /api/v2/texts
endpoint.
Request Try it on Postman
curl -X POST \ -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/texts"
Parameter | Info | Description |
to_number | required | The phone number texted. This parameter is required in case of text sent.
Use international format only. Ex: +33123456789 or 0033123456789 . |
from_number | required | The phone number who initiated the text. This parameter is required in case of text message received.
Use international format only. Ex: +33123456789 or 0033123456789 . |
direction | required | Must be inbound or outbound |
user_id | required | User’s email address or id to whom the text should belong. |
sent_at | optional | Date and time of the text message (sent or received). Use UTC with this specific format: YYYY-MM-DDTHH:MM:SS.sssZ. |
ext_text_key | optional | The text's ID on your system |
content | optional | The content of the text message |
item_id | optional | noCRM’s id of the item to attach the call to (must come with item_type) |
item_type | optional | noCRM’s type of the item to attach the call to (must come with item_id), possible values : Lead or Prospect |
Expected JSON response
{ "id":3547601
, "ext_call_key":"YOUR_TEXT_ID"
, "ext_text_key":"YOUR_TEXT_ID"
, "provider":"VoIP Partner Name"
, "direction":"outbound"
, "called_number":"245-765-3498"
, "to_number":"245-765-3498"
, "from_number":"333 444 5555"
, "record_link":null
, "started_at":null
, "ended_at":null
, "sent_at":"2023-11-13T09:12:00.000Z"
, "duration":0
, "created_at":"2023-11-13T22:17:06.000Z"
, "kind":"text"
, "is_voicemail":false
, "user": { "id":217658
, "lastname":"noCRM"
, "firstname":"User"
, "email":"user-nocrm@example.com"
, "phone":""
, "mobile_phone":""
}, "called_item": { "item":"Lead"
, "id":26325240
}, "texted_item": { "item":"Lead"
, "id":26325240
}, "comment": { "id":81842295
, "content":null
, "activity_id":534647
, "is_pinned":false
}, "text_content":"Hey, I just sent you back the invoice. Please review it."
}
When a user makes or receives a call, you can request contact information from noCRM. This information can be useful for:
In noCRM you can find contact information on prospects and/or leads. Once again, to simplify your work, we’ve created a single endpoint for you to get the most relevant data.
Get contact information using our GET /api/v2/calls/get_contact
endpoint.
Request Try it on Postman
curl -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/calls/get_contact?user_id=user-nocrm@example.com
&phone=245-765-3498
"
Parameter | Info | Description |
phone | required | The phone number of caller for an inbound call, or the callee for a outbound call.
Use the international format only. Ex: +33123456789 or 0033123456789 .
And ensure that special characters are properly encoded. Ex: "+" by "%2B" ). |
user_id | required | The email address or the user ID of the user getting or passing the phone call. |
Expected JSON response
{ "id":26325240
, "title":"VoIP Doc Lead"
, "contact_type":"Lead"
, "status":"todo"
, "permalink":"https://ACCOUNT_SUBDOMAIN.nocrm.io/leads/26325243"
, "fields": [ { "name":"First name"
, "type":"first_name"
, "value":"Jane"
}, { "name":"Last name"
, "type":"last_name"
, "value":"Doe"
}, { "name":"Phone"
, "type":"mobile"
, "value":"245-765-3498"
}, { "name":"Email"
, "type":"email"
, "value":"jdoe.voip@example.com"
} ] }
EXT_CALL_KEY
in Logging calls.
It's common to see a note or comment feature in VoIP systems. But the user does not always use it during the call.
If the user submits a comment after the call has been sent to noCRM, you can easily add it to the call using our PUT /api/v2/calls/{EXT_CALL_KEY}/update_comment
endpoint.
Request Try it on Postman
curl -X PUT \ -H "X-API-KEY:API_KEY_PROVIDED_BY_THE_USER
" \ -H "X-API-PARTNER-KEY:PARTNER_KEY_PROVIDED_BY_NOCRM
" \ -H "Content-Type: application/json" \ "https://ACCOUNT_SUBDOMAIN
.nocrm.io/api/v2/calls/EXT_CALL_KEY
/update_comment"
Parameter | Info | Description |
ext_call_key | required | The identifier of the your call object. |
content | required | The new comment to set (note that any existing content will be replaced by this value). |
Expected JSON response
{ "id":81842010
, "content":"My updated comment"
, "commented_item": { "item":"Lead"
, "id":26325240
}, "created_at":"2023-11-13T22:09:37.000Z"
, "attachments":[]
, "activity_id":88877
, "is_pinned":false
, "raw_content":"My updated comment"
, "extended_info": { "provider":"VoIP Partner Name"
, "direction":"outbound"
, "record_link":"https://voip-call.com/record-link/235532344423"
, "duration":1332.0
}, "reactions":[]
, "user": { "id":217658
, "lastname":"noCRM"
, "firstname":"User"
, "email":"user-nocrm@example.com"
, "phone":""
, "mobile_phone":""
}, "activity": { "id":88877
, "name":"Answered"
, "kind":"call"
, "duration":null
, "icon":"phone"
, "color":"#28a745"
, "created_at":"2017-12-20T10:01:08.000Z"
, "is_outcome":true
}, "action_item": { "type":"call"
, "call": { "id":3547597
, "ext_call_key":"YOUR_CALL_ID"
, "ext_text_key":null
, "provider":"VoIP Partner Name"
, "direction":"outbound"
, "called_number":"245-765-3498"
, "to_number":"245-765-3498"
, "from_number":"333 444 5555"
, "record_link":"https://voip-call.com/record-link/235532344423"
, "started_at":"2023-11-13T09:12:00.000Z"
, "ended_at":"2023-11-13T09:34:12.000Z"
, "sent_at":null
, "duration":1332.0
, "created_at":"2023-11-13T22:09:37.000Z"
, "kind":"call"
, "is_voicemail":false
, "user": { "id":217658
, "lastname":"noCRM"
, "firstname":"User"
, "email":"user-nocrm@example.com"
, "phone":""
, "mobile_phone":""
}, "called_item": { "item":"Lead"
, "id":26325240
}, "texted_item":null
, "comment": { "id":81842010
, "content":"My updated comment"
, "activity_id":88877
, "is_pinned":false
}, "text_content":null
} } }
(mandatory)
(mandatory)
Quick test!
When the call is over, check that the call is properly attached to the noCRM lead or prospect
The call should appear as shown below:
(optional)
Each time a SMS is sent or received, the message must be sent to noCRM through the POST /api/v2/texts
endpoint.
There should be no CRM logic on your side, we’ll manage the text.
A text message should appear as shown below:
(optional)
When your user receives a call, you can ask noCRM for information related to the phone number of your caller, to display it in your app or dialer.
A simple request to GET /api/v2/calls/get_contact
will get you the information.
(highly recommended)
Allowing noCRM users to start a call directly from noCRM is key for a smooth user experience. If you provide a link to start a call or pre-fill your app’s dialer with a phone number, we will integrate it to noCRM and the click-to-call feature will automatically be set up when the user connects their noCRM account to your VoIP app.