Robottino

Reports and integrations

Connect your phone system to your CRM with webhooks and an API

Webhooks tell your systems when something happens on the phones: a call in a queue, an answer, an outcome, an operator on a break. The API lets your software load leads, manage contacts and start calls.

POST https://crm.example.com/webhook
{  "id": "evt_7Hq2kLm9Xa",  "type": "queue.call_answered",  "createdAt": "2026-10-05T09:41:12.000Z",  "data": {    "call": { "from": "+14155550123", "waitSeconds": 42 },    "contact": { "name": "Mark Brown" },    "queue": { "id": 100000346, "name": "Customer care" },    "operator": { "extension": "202", "name": "Laura Green" }  }}

What it is for

A webhook is a request the phone system sends to an address of yours the moment something happens. With Robottino webhooks your CRM, back office or automation tool knows straight away that a call came in, an operator answered, a caller left a score or asked to be called back. Nobody has to check by hand.

You choose the events, from 27 in seven groups: calls, queues, operators, IVR answerer, feedback, callback and internal chat. You can narrow them to some queues, operators, numbers or IVR menus, and send either the full event or only the fields your system needs, named the way you want.

Every delivery is signed, so your system can check it really comes from the phone system. If your address does not answer, the delivery is retried several times; the Deliveries tab shows the request and response of every attempt, and one click resends an event.

The other way round there is the public API: with an API key your software reads and creates leads and lists, searches and updates phonebook contacts, starts or pauses campaigns, reads the call history and starts a click-to-call from an operator’s phone.

Use cases

Open the customer record in the CRM when the phone rings

With the "call ringing to the operator" event your CRM gets the caller number, the queue and the operator extension, and can open the right record before the operator picks up. Operator custom fields can carry the operator’s CRM ID too.

Log outcomes in your back office

When an operator saves or changes a call outcome, the event reaches your system with the outcome name, note and recall date. If you only care about sales, pick the conversion event: it fires only for outcomes marked as a conversion.

Alert the team about missed calls

The "missed call" or "abandoned in queue" event can post to Slack, open a ticket or create a callback task in your automation tool, with the number, the queue and the wait time.

Push website leads into campaigns

Your website form calls the API and adds the contact to a list, and the call campaign works it right away. The API also lets you read a lead’s status, update it or delete it.

A "Call" button in your back office

Your software calls the API with the operator and the number: the operator’s phone rings first, then the call to the customer goes out on the operator’s outbound line. The call history then tells you how it went.

Track operator attendance

Login, logout, break and back-to-available events, with the break duration, feed your timesheet or payroll system without manual exports.

How it works

  1. Create the webhook and enter the address

    In Webhooks press New webhook, give it a name and enter your system’s https URL. Pick the method (POST, PUT, PATCH or GET) and add headers such as an authorization key if needed.

  2. Choose events and filters

    On the Events tab tick when to send, searching by name or group. With "Only for…" you limit events to some queues, operators, numbers or IVR menus.

  3. Decide what to send

    On the Content tab choose Full event, with all the data ready, or Custom fields: write the field names and values using variables such as {{call.from}}. The preview shows the result with sample data.

  4. Test before going live

    Test sends a sample request right away, even before you save, and shows your system’s response, the headers and the equivalent cURL command.

  5. Check the deliveries

    The Deliveries tab lists every send of the last 30 days with result, time and attempts. Click a row to see request and response, and use Resend to queue an event again.

What you can set

Destination

Name
How you recognise the webhook in the list, for example "Company CRM".
Active
While paused, events are neither sent nor kept.
URL
Public https addresses only. Your system must answer with a 2xx code within 10 seconds, or the delivery is retried.
Method
POST, PUT, PATCH or GET. GET has no body: the values go in the URL.
Headers
Sent with every request, for example an API key. With the padlock the value becomes secret and is no longer shown after saving.
Signing secret
Every delivery carries a Robottino-Signature header with t=timestamp and v1=HMAC-SHA256 of "timestamp.body", so your system can verify it really comes from the phone system. You can reveal it or generate a new one.

Events: calls and queues

Inbound call
A call reaches one of your numbers, before any routing.
Call ended
A call closes: duration, wait and technical result.
Missed call
An inbound call closes without anyone answering.
Call limit reached
A call finds the number at its limit of simultaneous calls and is closed.
Queue entry
The call enters a queue.
Answered in queue
An operator of the queue answers, with the wait time.
Abandoned in queue
The caller hangs up while waiting.
Queue timeout
The maximum wait is exceeded or no operators are available, and the call goes to the fallback destination.
Queue full
The call finds the queue at its maximum of waiting callers.

Events: operators

Login and logout
The operator opens the operator panel, or leaves or closes it.
Break and available
The operator goes on a break or is available again, with the break duration.
Ringing, answered and missed
A call rings to the operator (from a queue or direct), the operator answers, or does not.
Outbound call and answer
The operator calls an outside number, and that number answers.
Transfer
The operator transfers the call, with the destination.
Outcome and conversion
The operator saves or changes the outcome; the conversion event fires only for outcomes that count as a conversion.

Events: IVR, feedback, callback and chat

IVR entry
The call enters an IVR menu.
Key pressed
The caller presses a valid key, with the key and the destination.
No input
No key, or an invalid one, after every attempt.
Feedback completed
The caller answers the feedback survey, with the score.
Callback requested
The caller asks to be called back.
Message to Admin
An operator writes to "Admin" in the panel’s internal chat.

Filters "Only for…"

Queues
Events fire only for the chosen queues.
Operators
Only for the chosen operators.
Numbers
Only for calls on the chosen numbers.
IVR menus
Only for the chosen IVR menus. With a filter on, events without that data (for example a direct call with no queue) are not sent.

Content

Full event
All the event data as JSON: ID, type, date and the call, customer, agency, contact, queue, operator, outcome and other objects the event carries.
Custom fields
You choose field names and values, mixing text and variables.
Variables
Such as {{call.from}}, {{queue.name}}, {{operator.extension}}, {{outcome.name}}: search and insert them from the menu. A variable on its own keeps its type (number, true/false, empty).
Operator custom fields
On the operator’s page add up to 20 key-value pairs of your own (such as the CRM ID): webhooks send them inside the operator object.
Preview
The request body with the sample data of the chosen event.

Test, deliveries and automatic pause

Test
Sends a request with sample data for the chosen event and shows the response, request, headers, body and cURL command.
Deliveries
Every send of the last 30 days with date, event, result, time and attempts; tests are marked apart.
Delivery states
Queued, to retry (with the time of the next attempt), delivered, failed or blocked.
Retries
If your system does not answer 2xx, the phone system tries again after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours.
Resend
Queues an event that was already sent: it goes out again within seconds.
Paused for errors
If the address keeps failing for more than 3 days without a single successful delivery, the webhook is paused and you get an email. Fix it and turn it back on.
Duplicate and bulk actions
Duplicate a webhook (the copy starts paused) and pause, resume or delete several webhooks at once.

Public API

API keys
Create one key per application, see when it was created and last used, copy it from the list and revoke it when it is no longer needed.
Authentication
Every request carries an "Authorization: Bearer" header with the key. JSON in and out.
Campaigns
List and read campaigns, start and pause them.
Lists and leads
Create lists, add leads to a list, search, read, update and delete them.
Phonebook
List phonebooks; search, create, update and delete contacts.
Operators and calls
List operators, read the call history and a single call, and click-to-call: the operator’s phone rings, then the call goes out.
External softphone
For manual campaigns with an external softphone, your system sends the call result and the talk seconds.
Paging and limits
Lists are paged, up to 1000 items per page; at most 600 requests a minute per key.
Documentation
Branded OpenAPI documentation where you can try requests from the browser. The previous portal’s API keeps answering at the same addresses.

Frequently asked questions

What are phone system webhooks?

HTTPS requests the phone system sends to your system when an event happens, such as a call in a queue, an answer or an outcome. Your CRM gets them in real time instead of polling for data.

Which events can I receive?

27 events in seven groups: calls (inbound, ended, missed, limit reached), queues (entry, answered, abandoned, timeout, full), operators (login, logout, break, ringing, answer, outbound calls, transfer, outcome, conversion), IVR, feedback, callback and internal chat.

How do I check a webhook really comes from the phone system?

Each request has a Robottino-Signature header with a timestamp and an HMAC-SHA256 signature of "timestamp.body", made with the webhook’s signing secret. Your system computes the signature again and compares.

What happens if my server is down?

The delivery is retried after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours. If nothing gets through for more than 3 days, the webhook is paused and you get an email. You can resend events from the delivery log.

Does the phone system have a REST API?

Yes. With an API key you manage campaigns, lists, leads, the phonebook and operators, read the call history and start click-to-call calls. The OpenAPI documentation lets you try requests in the browser.

Can I connect it to Zapier, Make or n8n?

Yes, with a webhook pointing at the address your automation tool gives you (for example Zapier’s "Catch Hook" trigger). Pick the events and, if you like, custom fields.

Try it on your own phone lines

Sign up free and try this feature with your numbers, or message us on WhatsApp and we’ll show it to you.