IVR API and webhooks for your CRM
Know who is calling before your agent says hello. MsgClub sends every keypress, completed call and missed call to your CRM as it happens, and lets your app connect agents to customers with one API request.
ivr.input,call.completed,call.missed- Recording links in every event
- Call patching by API
- Works with any CRM

What is an IVR API?
An IVR API lets your own software work with a cloud phone system. Webhooks push call events, such as a keypress, a completed call or a missed call, to your CRM in real time, and API requests let your app start actions, such as connecting an agent and a customer on one call, without anyone using the web panel.
- Style
- REST over HTTPS with JSON
- Auth
- API key, kept on your server
- Webhook events
ivr.input,call.completed,call.missed- Actions
- Connect two parties (call patching)
- Same key
- Also sends SMS, WhatsApp and other channels
- Docs
- Shared when you get API access
Updated
Which call events does MsgClub send?
Each event is an HTTPS POST to the URL you register, with a JSON body and a unique event ID.
| Event | When it fires | Typical use | Key fields |
|---|---|---|---|
ivr.input | The caller presses a key in a menu | Screen-pop the lead, tag the enquiry type | call ID, caller, number dialled, menu, digits, routed to |
call.completed | A call ends, answered or not | Log the call, attach the recording, update the stage | call ID, caller, agent, status, duration, recording link |
call.missed | Nobody answers, or the caller hangs up in the menu or queue | Create a callback task, send an SMS or WhatsApp | call ID, caller, number dialled, last option, time |
What does a call webhook look like?
Your endpoint receives a JSON body like this for each event. Match the caller number to a record, save what you need, and reply with a 2xx status straight away.
- Use
event_idto ignore duplicates - Use
call_idto tieivr.inputandcall.completedtogether - Store the recording link, not the audio file
POST https://your-crm.example.com/msgclub/calls
Content-Type: application/json
{
"event": "call.completed",
"event_id": "evt_7d31a9",
"call_id": "c_20931",
"from": "+9198XXXXX210",
"to": "1800120XXXX",
"menu_path": ["main:1"],
"agent": "rahul.201",
"status": "answered",
"duration_sec": 192,
"recording_url": "https://...",
"timestamp": 1763100920
}{
"event": "ivr.input",
"event_id": "evt_5c1e70",
"call_id": "c_20931",
"from": "+9198XXXXX210",
"to": "1800120XXXX",
"menu": "main",
"digits": "1",
"routed_to": "sales",
"timestamp": 1763100728
}{
"event": "call.missed",
"event_id": "evt_a90b14",
"call_id": "c_20944",
"from": "+9191XXXXX032",
"to": "1800120XXXX",
"last_menu_input": "9",
"reason": "no_answer",
"timestamp": 1763104411
}Illustrative example. Exact endpoints and field names are in the API docs, shared when you get API access.
How does a CRM screen-pop work?
The caller's record opens on the agent's screen while the phone is still ringing, so nobody has to ask "may I have your number?"
Can I connect an agent and a customer from my app?
Yes, with call patching. Your CRM sends one request with the agent's number and the customer's number. MsgClub calls both numbers and joins them on a single call. The customer sees your business number, the call can be recorded, and a call.completed event comes back when it ends.
Use it for a "Call now" button on a lead, for calling a new web enquiry within minutes, or for connecting customers with riders through call masking.
POST {API_BASE_URL}/calls/connect
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"agent": "+9198XXXXX201",
"customer": "+9198XXXXX210",
"caller_id": "1800120XXXX",
"record": true,
"ref": "lead_4471",
"webhook_url": "https://your-crm.example.com/msgclub/calls"
}Illustrative example. Exact endpoints and field names are in the API docs, shared when you get API access.
How do you connect MsgClub IVR to your CRM?
- Get API accessWe share your API key and the IVR API docs for your account.
- Create an endpointAn HTTPS URL in your CRM or middleware that accepts JSON POSTs.
- Register eventsChoose
ivr.input,call.completedandcall.missed. - Match callersLook up the number; create a lead if it is new.
- Save outcomesOption, agent, duration and recording link; reply 2xx fast.
- Test and go livePlace test calls and check each event arrives once.
No developer? Pass call events to Google Sheets or your CRM through Zapier, or download reports from the panel. The same API key also sends SMS and WhatsApp follow-ups. For every channel and event in one place, see API and webhooks and the developer docs. Plans are explained on the pricing page; for help, contact us. Back to IVR or see call recording.
Frequently asked questions
Which IVR events can I receive by webhook?
The main events are ivr.input when a caller presses a key, call.completed when a call ends, with duration, agent and recording link, and call.missed when a call is not answered. Exact field names are in the API documentation shared when you get API access.
Can my CRM show who is calling before the agent answers?
Yes. Use the ivr.input event, which arrives as soon as the caller picks an option. Your CRM looks up the caller number and opens the matching lead or ticket on the agent's screen, so the agent knows who is calling and why.
Can I start a call from my CRM?
Yes. With call patching, your system sends an API request with the agent's and the customer's numbers. MsgClub calls both and connects them, so your team can click to call without dialling manually, and the call is logged and can be recorded.
Which CRMs does the IVR API work with?
Any CRM or app that can receive an HTTPS webhook or call a REST API, including in-house systems. Teams also connect tools such as Salesforce, Zoho CRM, HubSpot or LeadSquared through their own webhook features, middleware or Zapier, rather than a native plug-in.
Do I need a developer to use IVR webhooks?
A developer or a no-code tool is needed to receive webhooks. If you do not have one, use Zapier to pass call events into Google Sheets or your CRM, or download call reports from the panel instead.
How do I avoid duplicate records from webhooks?
Webhooks can be retried if your endpoint does not respond in time, so the same event may arrive twice. Store the event ID from each payload and skip any event you have already processed, and reply with a 2xx status quickly.
Related products
Use them together from the same MsgClub account, with one API and shared reports.
Start sending in minutes
Create a free account to test the panel and API, or talk to our team about volumes, DLT setup and CRM integration.