VoIP Monitor Webhook API

Public Reference

Primary Syntax

{ "caller": "{{calleridnum}}", "extension": "{{extension}}", "direction": "{{direction}}", "duration": "{{duration}}" }

Alternative Syntax

{ "callId": "{call.uniqueid}", "phone": "{call.calleridnum}", "apiKey": "{client.apiKey}", "org": "{call.org_name}" }

CDR Full Example

{ "event": "call_ended", "caller": "{{calleridnum}}", "endtime": "{{endtime}}", "result": "{{disposition}}", "ivr_selection": "{{ivr_digit}}", "callback_caller": "{{callback_caller_number}}", "callback_number": "{{callback_number}}", "recording": "{{recording_url}}" }

XML Example

<call> <caller>{{caller_number}}</caller> <dialed>{{did_number}}</dialed> <extension>{{answeringExtension}}</extension> <queue>{{queueName}}</queue> <status>{{disposition}}</status> <recording>{{recording_play_url}}</recording> </call>
Pick a trigger event from the sidebar to start building its payload — the fields available differ per event.
Showing all 63 fields
0 fields selected
Field Name Description Example Value Available In
{{digit}}
Completed DTMF digit; on CDR this is the latest accumulated main-IVR selection5Cdr, DTMF
{{dtmf_application}}
Dialplan application active when the digit was received · not on every callReadDTMF
{{dtmf_context}}
Dialplan context active when the digit was received · not on every callclient.voip-ivr-171DTMF
{{dtmf_scope}}
Purpose classification for this digit · not on every callivr_menuDTMF
{{input_compNum}}
What the caller typed, collected as compNum · not on every call3500Cdr, Hangup, IVRInput
{{ivr_input_1}}
First input collected on the call · not on every call3500Cdr, Hangup, IVRInput
{{ivr_input_1_name}}
Name of the first collected input · not on every callcompNumCdr, Hangup, IVRInput
{{ivr_input_2}}
Second input collected on the call · not on every call43434547Cdr, Hangup, IVRInput
{{ivr_input_2_name}}
Name of the second collected input · not on every callempNumCdr, Hangup, IVRInput
{{ivr_input_3}}
Third input collected on the call · not on every call—Cdr, Hangup, IVRInput
{{ivr_input_count}}
How many inputs were collected on the call · not on every call2Cdr, Hangup, IVRInput
{{ivr_input_last}}
Most recent collected input on the call · not on every call43434547Cdr, Hangup, IVRInput
{{ivr_input_last_name}}
Name of the most recent collected input · not on every callempNumCdr, Hangup, IVRInput
{{ivr_input_name}}
Input variable used by Read(), when applicable · not on every call · also: dtmf_input_variablephone_numIVRInput
{{ivr_input_value}}
Value the caller finished typing at a Read() prompt · not on every call43434547IVRInput
{{ivr_inputs_json}}
All collected inputs as JSON · not on every call{"compNum":"3500","empNum":"43434547"}Cdr, Hangup, IVRInput
{{ivr_inputs_text}}
All collected inputs as text · not on every callcompNum=3500;empNum=43434547Cdr, Hangup, IVRInput
{{call_id}}
Same id on every leg of the call. Use it to match ring, answer and end of call1763328773.117048Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{channel}}
AMI channel nameSIP/201_globalex.co.il-0000d856Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{destinationchannel}}
Channel of the answering party · not on every callSIP/201_globalex.co.ilCdr
{{root_uniqueid}}
Same value as call_id—Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{uniqueid}}
Unique call ID1763328773.117048Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{caller_number}}
Caller phone number · also: calleridnum, src, source0521234567Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{callerid1}}
Caller id of the first bridged channel · not on every call0521234567Answer
{{callerid2}}
Caller id of the second bridged channel · not on every call201Answer
{{calleridname}}
Caller name (if sent by trunk) · not on every callJohn DoeCdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF
{{connectedlinename}}
Connected party name · not on every callExtension 201Begin, Ring, Ringing, Answer, Hangup
{{connectedlinenum}}
Connected party number · not on every call201Newchannel, Begin, Ring, Ringing, Answer, Hangup
{{destination}}
Destination number (CDR field) · also: dst, dest_numberSIP/201_globalex.co.ilCdr, Begin, Ring, Ringing, Answer, Hangup
{{destination_number}}
Number the call was sent to; may end in _<domain> · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{destination_number_clean}}
destination_number, digits only, without the _<domain> suffix · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{destination_number_full}}
destination_number, digits only, with a leading 0 · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{destination_number_stripped}}
destination_number, digits only, without the leading 0 · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{destinationcontext}}
Dialplan context the call ended in, so the routing pathfrom-internalCdr
{{extension}}
Extension (raw from AMI) · not on every call · also: exten036760602Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{did_number}}
DID number (inbound) · not on every call · also: did, DID_number031234567Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{did_number_stripped}}
did_number without the leading 0 · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{call_direction_numeric}}
Call direction numeric (1=inbound 2=outbound 3=internal) · not on every call1Cdr
{{cause}}
Hangup cause code (AMI numeric)16Hangup
{{cause_text}}
Hangup cause description · not on every callNormal ClearingHangup
{{cause-txt}}
Hangup cause in wordsNormal ClearingHangup
{{dialstatus}}
ANSWER, NOANSWER, BUSY or CONGESTION · not on every call—Begin
{{direction}}
Call direction · also: call_directioninboundCdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF
{{disposition}}
Call resultANSWERED/NO ANSWER/BUSY/FAILEDCdr
{{fromout}}
Inbound from outside (1=yes) · not on every call1 = מחוץ, ריק = פנימיCdr
{{toout}}
Outbound to outside (1=yes) · not on every call1 = לחוץ, ריק = פנימיCdr
{{answertime}}
Answer time, local time (Israel), YYYY-MM-DD HH:MM:SS; empty when not answered · not on every call · also: answer_time2025-11-19 08:52:40Cdr, Answer
{{begin}}
Start of the digit pressYesDTMF
{{duration}}
Total call duration (seconds)201Cdr
{{end}}
End of the digit pressNoDTMF
{{endtime}}
Call end time, UTC, ISO 8601 (YYYY-MM-DDTHH:MM:SS.sssZ) · also: end_time2025-11-16T21:36:14.000ZCdr
{{starttime}}
Call start time, local time (Israel), YYYY-MM-DD HH:MM:SS · also: start_time2025-11-16 23:32:53Cdr
{{starttime_unix}}
Call start time (Unix timestamp) · not on every call1747058343Cdr
{{talk_time}}
Billable seconds (after answer) · also: billableseconds, billsec201Cdr
{{timestamp}}
When the event reached our server, local time (Israel), YYYY-MM-DD HH:MM:SS2025-11-19 08:52:34Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{announcementName}}
Auto-announcement name · not on every callWelcome AnnouncementCdr, Hangup, IVRInput
{{applicationNumber}}
Application / queue number · not on every call801Cdr, Ring, Answer
{{applicationType}}
Application type (Queue / RingGroup / IVR / Voicemail) · not on every callQueueCdr
{{ivrName}}
IVR name · not on every callMain IVRCdr, IVRInput
{{ivrNumber}}
IVR number · not on every call600Cdr
{{queueName}}
Queue name · not on every call · also: queue, Queue801Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF
{{ringGroupName}}
Ring group name · not on every call · also: ringgroup, RingGroup701Cdr, Begin, Ring, Ringing, Answer, Hangup
{{scenario}}
Routing scenario (Dial / Queue / RingGroup / IVR) · not on every callQueueCdr
{{voicemailBox}}
Voicemail box · not on every call201Cdr
{{callback_caller_number}}
Original caller number that requested the callback · not on every call0541234567Cdr
{{callback_number}}
Requested callback destination number · not on every call · also: callback_requested_number0551234567Cdr
{{callback_queue}}
Callback queue captured from the dialplan, when available · not on every call710Cdr
{{callback_requested}}
Whether the completed call entered the callback-request flow · not on every calltrueCdr
{{recording_available}}
Recording available (true / false) · not on every calltrueCdr
{{recording_download_url}}
Recording download URL · not on every callhttps://voip1.globalex.co.il/API/download-file.php?fileid=...Cdr
{{recording_filename}}
Recording filename · not on every callIN201-20251119-085234-1763328773.117048.wavCdr
{{recording_play_url}}
Recording URL (stream/playback) · not on every call · also: recording_urlhttps://voip1.globalex.co.il/API/play.php?fileid=...Cdr
{{userfield}}
CDR user field — raw recording path · not on every callIN201-20251119-085234-1763328773.117048Cdr
{{callerid}}
Displayed Caller ID for outbound calls"Company" <0501234567>Cdr
{{outbound_callerid}}
Outbound Caller ID (from Hangup / NewCallerid event) · not on every call0501234567Cdr
{{outboundCallerId}}
Caller id shown on the outbound leg · not on every call0501234567Answer
{{client_id}}
Client ID (numeric)5Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{ipaddr}}
IP the call came from, when the PBX reports it · not on every call46.31.97.50Cdr
{{org_name}}
Organization domain name · also: organization, domainglobalex.co.ilCdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{server_address}}
Server hostname · also: ServerAddress, ServerAdressvoip1.globalex.co.ilCdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{server_id}}
Server ID (1–12) · also: serverId2Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{trunk_name}}
Trunk the call came in on or went out through · not on every callGLX1Newchannel, Ring, Answer, Hangup, DTMF, IVRInput
{{accountcode}}
Account code · not on every call—Cdr, Newchannel, Hangup
{{amaflags}}
Asterisk billing flagDOCUMENTATIONCdr
{{answeringExtension}}
Extension that actually answered the call · not on every call · also: answered_extension, answering_extension201Cdr, Answer, Hangup
{{bridgestate}}
Link or Unlink · not on every callLinkAnswer
{{bridgetype}}
Bridge type · not on every callcoreAnswer
{{callType}}
inbound, outbound, internal, inbound-sim or outbound-sim · not on every callinbound-trunkNewchannel
{{channel1}}
First channel of the bridge · not on every callSIP/019land-2-0000d856Answer
{{channel2}}
Second channel of the bridge · not on every callSIP/201_globalex.co.il-0000d857Answer
{{channelstate}}
Asterisk numeric channel state4Newchannel, Ring, Ringing, Answer
{{channelstatedesc}}
Channel state in words: Ring, Ringing, UpRingNewchannel, Ring, Ringing, Answer
{{class}}
Music on hold class · not on every calldefaultDTMF
{{context}}
Asterisk contextfrom-internalCdr, Newchannel, Begin, Ring, Answer, Hangup, DTMF
{{dcontext}}
Destination context (CDR destinationcontext) · not on every callglobalex.co.il-ext-queuesCdr
{{destuniqueid}}
Uniqueid of the leg being dialled · not on every call1763328773.117049Begin
{{dialstring}}
What Asterisk dialled · not on every callSIP/201_globalex.co.ilBegin, Ring, Ringing
{{extension_stripped}}
extension without the leading 0 (phone-number extensions only) · not on every call—Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput
{{lastapp}}
Last Asterisk application · not on every callDialCdr
{{lastapplication}}
Last application (CDR direct field)DialCdr
{{lastdata}}
Last application data / argumentsSIP/201_globalex.co.il,300,Cdr
{{subevent}}
Begin or EndBeginBegin
{{transfertype}}
Blind or attended · not on every callBlindDTMF
{{uniqueid1}}
Uniqueid of the first bridged channel · not on every call1763328773.117048Answer
{{uniqueid2}}
Uniqueid of the second bridged channel · not on every call1763328773.117049Answer
{{call_leg_type}}
Leg type (sip / local_1 / local_2) · not on every callsipCdr, Hangup
{{call_origin}}
Call origin (webcall / callback / direct) · not on every callwebcallCdr, Hangup
{{is_webcall}}
WebCall flag (1=yes, 0=no) · not on every call0Cdr, Hangup
{{webcall_user}}
WebCall username (from accountcode) · not on every callwebdial1Cdr
Sample Payload — All Triggers
Add a fixed field:
DateAreaChange
2026-10-31IntegrationsNew ready-made integrations: Origami (call log and customer card pop-up through Origami's PBX app), HubSpot (calls attached to the contact, owner per extension), Microsoft Dynamics 365 (phone call activities attached to the contact), Kommo (calls on the contact card and an incoming-call notification to the agent), ClickUp (a task per call) and Notion (a row per call in a chosen database)
2026-10-31DeliveryPer endpoint, optional "lookup before send": before each send the service is searched by the other party's phone number (tried as dialled, 0…, +972… and 972…) and what it returns can be placed in the request as {lookup.name}. Nothing is stored; a search that finds nothing or fails does not stop the send, unless the endpoint asks for that. Off unless an endpoint turns it on
2026-10-31IntegrationsCalls are attached to the matching contact: Pipedrive (person and organization), Zendesk (ticket requester), Zoho CRM (contact; the one-time code needs ZohoCRM.modules.contacts.READ and ZohoSearch.securesearch.READ) and Salesforce (contact or lead, and the account)
2026-10-31IntegrationsFireberry: a second end-of-call endpoint through the REST API that attaches the call to the customer found by phone number (needs the user's TokenID). The PBX call log (cdr_log) is unchanged
2026-10-31IntegrationsMonday.com: one-time setup now covers the whole board — choose the board, optionally a group, then either create the call columns in one click or match existing Text / Numbers columns. New columns: called number and recording link. Columns left unmatched are simply not filled.
2026-10-31IntegrationsMonday.com: board items for a ringing call, an answered call and a missed call, in addition to the item at the end of every call
2026-10-31DeliveryPer endpoint, answer fields that mean failure: some services answer 200 even when the request was refused (for example GraphQL APIs). When one of those fields is present, the send is logged as failed with the service's message.
2026-10-31SetupA "create" setup step can create several items in one request and keep each one's id; whatever was created is kept even if part of the request failed. Setup errors now show the service's own message.
2026-10-30IntegrationsAirtable and Monday.com endpoints rebuilt: Airtable writes rows through the records API (Calls table + Call Events table); Monday.com creates one board item per finished call with column_values sent as a JSON string
2026-10-30IntegrationsPipedrive, Zendesk, Zoho CRM and Salesforce endpoints rebuilt: Pipedrive logs incoming and outgoing calls as call logs; Zendesk opens a ticket with the call details as an internal note; Zoho CRM creates answered and missed Call records (API v8); Salesforce logs the call as a completed Task of type Call
2026-10-30IntegrationsZoho PhoneBridge prepared (not yet available, waiting for Zoho's partner approval): caller pop-up on ringing, the agent per extension, and the call logged by Zoho for incoming and outgoing calls
2026-10-30SetupNew setup step: match each of the client's extensions to an item from the vendor's list (for example a CRM user), with a suggestion when the names match
2026-10-30BodyNew field transforms: phone number in +country format (E.164), and a lookup in a table kept per client (for example extension → CRM user)
2026-10-30SetupOAuth setup step: a one-time authorization code can be exchanged for tokens (used once, then renewed from the refresh token); a token lifetime can be set for vendors that do not return one; extra values from the token answer (such as the API address) are saved as client parameters
2026-10-30TimeNew time format: ISO 8601 with the client's own offset (2026-10-30T14:05:09+02:00). The UTC time-zone option now also applies to the plain formats (2026-10-30 12:05:09), endtime included
2026-10-30BodyNew field transforms: seconds as mm:ss, and date only (YYYY-MM-DD). A yes/no field set to false, 0, no or off is now sent as false
2026-10-30URLAn endpoint URL may start with a client parameter ({client.api_domain}/…), for vendors whose address depends on the client's region
2026-10-30SetupOne-time setup per client and provider: pick from a list, save a value, create a table or column, map columns, or get an OAuth token. Results become ordinary client parameters ({client.x})
2026-10-30Test modeA test-mode scenario builds exactly the request a live send would carry and logs it as "TEST MODE - NOT SENT" (logged as success, no longer as failed)
2026-10-30Fieldspbx_extension restored on end-of-call events: the extension that answered (inbound) or dialled (outbound); for a SIM line, its full number
2026-10-30Fieldsdid / did_number recovered from the original call on queue, IVR and forwarded legs, so ring events carry the dialled number more often
2026-10-30FieldsDTMF events keep the call's direction (inbound / outbound); the raw Asterisk value moves to dtmf_direction
2026-10-30DeliveryThe same payload for the same call within 5 s is sent once (all events except end of call)
2026-10-30DeliveryA request whose URL path needs a value that is empty is not sent; the log says "Not sent: the URL path needs …" instead of a broken call
2026-10-30DeliveryInactive endpoints and deleted providers send nothing
2026-10-30DeliveryConnections try IPv4 first
2026-10-30DeliveryOptional retry per endpoint: on 429 or 5xx, up to 3 attempts in total, waiting 2 s then 8 s, or the receiver's Retry-After up to 60 s. Never on a timeout. Off by default
2026-10-30BodyRaw JSON templates escape every value, so a quote or backslash in a caller name no longer breaks the body
2026-10-30BodyNested keys in the body table (records[0].fields.Caller) and a "JSON string" transform per field
2026-10-30BodyOptional per endpoint: leave out empty fields (a row can override). Off by default
2026-10-30BodyA scenario's fixed parameters are sent again; on GET endpoints they go in the query string
2026-10-30TimeOptional per endpoint: the time zone the receiver expects for epoch and ISO 8601 values (as before / true UTC / client wall-clock). The client's time zone is set on the client card
2026-10-30AuthAPI-key auth accepts every shape the builder saves (header name, default X-API-Key; header or query placement; per-client value)
2026-10-30URLA provider can hold a base URL; its endpoints may use a relative path
2026-10-30SecurityKeys, tokens and passwords are masked in the send log; a short excerpt of each response is stored
2026-10-29Fieldstimestamp is filled on every trigger (the call's start time)
2026-10-29Fieldsstart_time / answer_time / end_time accepted as aliases of starttime / answertime / endtime