Webhook Payload Reference
All template variables available in webhook payloads, organized by trigger event.
Use {{fieldName}} syntax in your payload template to inject real call data.
Available fields are not added to every request automatically; select them in the provider endpoint mapping to include them in that endpoint's payload.
Formats: a webhook can be sent as JSON or XML, by POST or GET (with GET the fields go in the query string).
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.
| Field Name | Description | Example Value | Available In | |
|---|---|---|---|---|
{{digit}} | Completed DTMF digit; on CDR this is the latest accumulated main-IVR selection | 5 | Cdr, DTMF | |
{{dtmf_application}} | Dialplan application active when the digit was received · not on every call | Read | DTMF | |
{{dtmf_context}} | Dialplan context active when the digit was received · not on every call | client.voip-ivr-171 | DTMF | |
{{dtmf_scope}} | Purpose classification for this digit · not on every call | ivr_menu | DTMF | |
{{input_compNum}} | What the caller typed, collected as compNum · not on every call | 3500 | Cdr, Hangup, IVRInput | |
{{ivr_input_1}} | First input collected on the call · not on every call | 3500 | Cdr, Hangup, IVRInput | |
{{ivr_input_1_name}} | Name of the first collected input · not on every call | compNum | Cdr, Hangup, IVRInput | |
{{ivr_input_2}} | Second input collected on the call · not on every call | 43434547 | Cdr, Hangup, IVRInput | |
{{ivr_input_2_name}} | Name of the second collected input · not on every call | empNum | Cdr, 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 call | 2 | Cdr, Hangup, IVRInput | |
{{ivr_input_last}} | Most recent collected input on the call · not on every call | 43434547 | Cdr, Hangup, IVRInput | |
{{ivr_input_last_name}} | Name of the most recent collected input · not on every call | empNum | Cdr, Hangup, IVRInput | |
{{ivr_input_name}} | Input variable used by Read(), when applicable · not on every call · also: dtmf_input_variable | phone_num | IVRInput | |
{{ivr_input_value}} | Value the caller finished typing at a Read() prompt · not on every call | 43434547 | IVRInput | |
{{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 call | compNum=3500;empNum=43434547 | Cdr, Hangup, IVRInput | |
{{call_id}} | Same id on every leg of the call. Use it to match ring, answer and end of call | 1763328773.117048 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{channel}} | AMI channel name | SIP/201_globalex.co.il-0000d856 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{destinationchannel}} | Channel of the answering party · not on every call | SIP/201_globalex.co.il | Cdr | |
{{root_uniqueid}} | Same value as call_id | — | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{uniqueid}} | Unique call ID | 1763328773.117048 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{caller_number}} | Caller phone number · also: calleridnum, src, source | 0521234567 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{callerid1}} | Caller id of the first bridged channel · not on every call | 0521234567 | Answer | |
{{callerid2}} | Caller id of the second bridged channel · not on every call | 201 | Answer | |
{{calleridname}} | Caller name (if sent by trunk) · not on every call | John Doe | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF | |
{{connectedlinename}} | Connected party name · not on every call | Extension 201 | Begin, Ring, Ringing, Answer, Hangup | |
{{connectedlinenum}} | Connected party number · not on every call | 201 | Newchannel, Begin, Ring, Ringing, Answer, Hangup | |
{{destination}} | Destination number (CDR field) · also: dst, dest_number | SIP/201_globalex.co.il | Cdr, 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 path | from-internal | Cdr | |
{{extension}} | Extension (raw from AMI) · not on every call · also: exten | 036760602 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{did_number}} | DID number (inbound) · not on every call · also: did, DID_number | 031234567 | Cdr, 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 call | 1 | Cdr | |
{{cause}} | Hangup cause code (AMI numeric) | 16 | Hangup | |
{{cause_text}} | Hangup cause description · not on every call | Normal Clearing | Hangup | |
{{cause-txt}} | Hangup cause in words | Normal Clearing | Hangup | |
{{dialstatus}} | ANSWER, NOANSWER, BUSY or CONGESTION · not on every call | — | Begin | |
{{direction}} | Call direction · also: call_direction | inbound | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF | |
{{disposition}} | Call result | ANSWERED/NO ANSWER/BUSY/FAILED | Cdr | |
{{fromout}} | Inbound from outside (1=yes) · not on every call | 1 = מחוץ, ריק = פנימי | Cdr | |
{{toout}} | Outbound to outside (1=yes) · not on every call | 1 = לחוץ, ריק = פנימי | Cdr | |
{{answertime}} | Answer time, local time (Israel), YYYY-MM-DD HH:MM:SS; empty when not answered · not on every call · also: answer_time | 2025-11-19 08:52:40 | Cdr, Answer | |
{{begin}} | Start of the digit press | Yes | DTMF | |
{{duration}} | Total call duration (seconds) | 201 | Cdr | |
{{end}} | End of the digit press | No | DTMF | |
{{endtime}} | Call end time, UTC, ISO 8601 (YYYY-MM-DDTHH:MM:SS.sssZ) · also: end_time | 2025-11-16T21:36:14.000Z | Cdr | |
{{starttime}} | Call start time, local time (Israel), YYYY-MM-DD HH:MM:SS · also: start_time | 2025-11-16 23:32:53 | Cdr | |
{{starttime_unix}} | Call start time (Unix timestamp) · not on every call | 1747058343 | Cdr | |
{{talk_time}} | Billable seconds (after answer) · also: billableseconds, billsec | 201 | Cdr | |
{{timestamp}} | When the event reached our server, local time (Israel), YYYY-MM-DD HH:MM:SS | 2025-11-19 08:52:34 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{announcementName}} | Auto-announcement name · not on every call | Welcome Announcement | Cdr, Hangup, IVRInput | |
{{applicationNumber}} | Application / queue number · not on every call | 801 | Cdr, Ring, Answer | |
{{applicationType}} | Application type (Queue / RingGroup / IVR / Voicemail) · not on every call | Queue | Cdr | |
{{ivrName}} | IVR name · not on every call | Main IVR | Cdr, IVRInput | |
{{ivrNumber}} | IVR number · not on every call | 600 | Cdr | |
{{queueName}} | Queue name · not on every call · also: queue, Queue | 801 | Cdr, Begin, Ring, Ringing, Answer, Hangup, DTMF | |
{{ringGroupName}} | Ring group name · not on every call · also: ringgroup, RingGroup | 701 | Cdr, Begin, Ring, Ringing, Answer, Hangup | |
{{scenario}} | Routing scenario (Dial / Queue / RingGroup / IVR) · not on every call | Queue | Cdr | |
{{voicemailBox}} | Voicemail box · not on every call | 201 | Cdr | |
{{callback_caller_number}} | Original caller number that requested the callback · not on every call | 0541234567 | Cdr | |
{{callback_number}} | Requested callback destination number · not on every call · also: callback_requested_number | 0551234567 | Cdr | |
{{callback_queue}} | Callback queue captured from the dialplan, when available · not on every call | 710 | Cdr | |
{{callback_requested}} | Whether the completed call entered the callback-request flow · not on every call | true | Cdr | |
{{recording_available}} | Recording available (true / false) · not on every call | true | Cdr | |
{{recording_download_url}} | Recording download URL · not on every call | https://voip1.globalex.co.il/API/download-file.php?fileid=... | Cdr | |
{{recording_filename}} | Recording filename · not on every call | IN201-20251119-085234-1763328773.117048.wav | Cdr | |
{{recording_play_url}} | Recording URL (stream/playback) · not on every call · also: recording_url | https://voip1.globalex.co.il/API/play.php?fileid=... | Cdr | |
{{userfield}} | CDR user field — raw recording path · not on every call | IN201-20251119-085234-1763328773.117048 | Cdr | |
{{callerid}} | Displayed Caller ID for outbound calls | "Company" <0501234567> | Cdr | |
{{outbound_callerid}} | Outbound Caller ID (from Hangup / NewCallerid event) · not on every call | 0501234567 | Cdr | |
{{outboundCallerId}} | Caller id shown on the outbound leg · not on every call | 0501234567 | Answer | |
{{client_id}} | Client ID (numeric) | 5 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{ipaddr}} | IP the call came from, when the PBX reports it · not on every call | 46.31.97.50 | Cdr | |
{{org_name}} | Organization domain name · also: organization, domain | globalex.co.il | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{server_address}} | Server hostname · also: ServerAddress, ServerAdress | voip1.globalex.co.il | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{server_id}} | Server ID (1–12) · also: serverId | 2 | Cdr, Newchannel, Begin, Ring, Ringing, Answer, Hangup, DTMF, IVRInput | |
{{trunk_name}} | Trunk the call came in on or went out through · not on every call | GLX1 | Newchannel, Ring, Answer, Hangup, DTMF, IVRInput | |
{{accountcode}} | Account code · not on every call | — | Cdr, Newchannel, Hangup | |
{{amaflags}} | Asterisk billing flag | DOCUMENTATION | Cdr | |
{{answeringExtension}} | Extension that actually answered the call · not on every call · also: answered_extension, answering_extension | 201 | Cdr, Answer, Hangup | |
{{bridgestate}} | Link or Unlink · not on every call | Link | Answer | |
{{bridgetype}} | Bridge type · not on every call | core | Answer | |
{{callType}} | inbound, outbound, internal, inbound-sim or outbound-sim · not on every call | inbound-trunk | Newchannel | |
{{channel1}} | First channel of the bridge · not on every call | SIP/019land-2-0000d856 | Answer | |
{{channel2}} | Second channel of the bridge · not on every call | SIP/201_globalex.co.il-0000d857 | Answer | |
{{channelstate}} | Asterisk numeric channel state | 4 | Newchannel, Ring, Ringing, Answer | |
{{channelstatedesc}} | Channel state in words: Ring, Ringing, Up | Ring | Newchannel, Ring, Ringing, Answer | |
{{class}} | Music on hold class · not on every call | default | DTMF | |
{{context}} | Asterisk context | from-internal | Cdr, Newchannel, Begin, Ring, Answer, Hangup, DTMF | |
{{dcontext}} | Destination context (CDR destinationcontext) · not on every call | globalex.co.il-ext-queues | Cdr | |
{{destuniqueid}} | Uniqueid of the leg being dialled · not on every call | 1763328773.117049 | Begin | |
{{dialstring}} | What Asterisk dialled · not on every call | SIP/201_globalex.co.il | Begin, 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 call | Dial | Cdr | |
{{lastapplication}} | Last application (CDR direct field) | Dial | Cdr | |
{{lastdata}} | Last application data / arguments | SIP/201_globalex.co.il,300, | Cdr | |
{{subevent}} | Begin or End | Begin | Begin | |
{{transfertype}} | Blind or attended · not on every call | Blind | DTMF | |
{{uniqueid1}} | Uniqueid of the first bridged channel · not on every call | 1763328773.117048 | Answer | |
{{uniqueid2}} | Uniqueid of the second bridged channel · not on every call | 1763328773.117049 | Answer | |
{{call_leg_type}} | Leg type (sip / local_1 / local_2) · not on every call | sip | Cdr, Hangup | |
{{call_origin}} | Call origin (webcall / callback / direct) · not on every call | webcall | Cdr, Hangup | |
{{is_webcall}} | WebCall flag (1=yes, 0=no) · not on every call | 0 | Cdr, Hangup | |
{{webcall_user}} | WebCall username (from accountcode) · not on every call | webdial1 | Cdr |
Sample Payload — All Triggers
Add a fixed field:
Changelog
What changed in the call events Globalex sends to your systems. Field names and the shape of existing payloads did not change; new options are off until an endpoint turns them on.
| Date | Area | Change |
|---|---|---|
| 2026-10-31 | Integrations | New 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-31 | Delivery | Per 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-31 | Integrations | Calls 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-31 | Integrations | Fireberry: 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-31 | Integrations | Monday.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-31 | Integrations | Monday.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-31 | Delivery | Per 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-31 | Setup | A "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-30 | Integrations | Airtable 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-30 | Integrations | Pipedrive, 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-30 | Integrations | Zoho 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-30 | Setup | New 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-30 | Body | New 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-30 | Setup | OAuth 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-30 | Time | New 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-30 | Body | New 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-30 | URL | An endpoint URL may start with a client parameter ({client.api_domain}/…), for vendors whose address depends on the client's region |
| 2026-10-30 | Setup | One-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-30 | Test mode | A 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-30 | Fields | pbx_extension restored on end-of-call events: the extension that answered (inbound) or dialled (outbound); for a SIM line, its full number |
| 2026-10-30 | Fields | did / did_number recovered from the original call on queue, IVR and forwarded legs, so ring events carry the dialled number more often |
| 2026-10-30 | Fields | DTMF events keep the call's direction (inbound / outbound); the raw Asterisk value moves to dtmf_direction |
| 2026-10-30 | Delivery | The same payload for the same call within 5 s is sent once (all events except end of call) |
| 2026-10-30 | Delivery | A 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-30 | Delivery | Inactive endpoints and deleted providers send nothing |
| 2026-10-30 | Delivery | Connections try IPv4 first |
| 2026-10-30 | Delivery | Optional 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-30 | Body | Raw JSON templates escape every value, so a quote or backslash in a caller name no longer breaks the body |
| 2026-10-30 | Body | Nested keys in the body table (records[0].fields.Caller) and a "JSON string" transform per field |
| 2026-10-30 | Body | Optional per endpoint: leave out empty fields (a row can override). Off by default |
| 2026-10-30 | Body | A scenario's fixed parameters are sent again; on GET endpoints they go in the query string |
| 2026-10-30 | Time | Optional 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-30 | Auth | API-key auth accepts every shape the builder saves (header name, default X-API-Key; header or query placement; per-client value) |
| 2026-10-30 | URL | A provider can hold a base URL; its endpoints may use a relative path |
| 2026-10-30 | Security | Keys, tokens and passwords are masked in the send log; a short excerpt of each response is stored |
| 2026-10-29 | Fields | timestamp is filled on every trigger (the call's start time) |
| 2026-10-29 | Fields | start_time / answer_time / end_time accepted as aliases of starttime / answertime / endtime |