1stream Webhooks

This article will provide a walkthrough on setting up a webhook in 1stream.

Updated at February 12th, 2025

1stream Core Required

1stream Core Required

This feature is available for only 1stream Core licensed users and higher plans. If you don't have this and would like this feature to be available, please reach out to your Sales Representative to upgrade user licensing.

 

Webhook Functionality

There are 4 available EventTypes you can setup webhook triggers for. You can expand the accordions below to see more details along with a commented body of what a response would look like.

If a POST fails it will be retried up to 4 times before exiting.

CallConnected - When a call is Answered

When a call gets fully connected, either answered or picked up by an automatic machine like a voicemail, this webhook will trigger with a body like below

Inbound Call

{
  "EventType": "CallConnected",
  "ExtensionNumber": "100", # The extension involved in the process
  "CallID": "287", # Call ID in flight, used to monitor through CallEnd, but the final CallID seen in GetCallLogs differs.
  "FromPhone": "+15551234567", # The number who is calling
  "FromCallerID": null, # Caller ID, if found
  "ToPhone": "Wexternalline.70: 10003 on Wprovider.3: gw.siptrunk.com:0 - siptrunk.com (-5)", # Trunk detail on how the call flowed
  "ToCallerID": "", # Empty in this case
  "DateTimeStamp": "2/12/2025 7:16:27 PM", # The time the call was answered, in UTC
  "Queue": "Queue Name", # If this call came in through a queue, this will be populated with the queue name.
  "Transcription": "" # This will always be blank in this event.
}

Outbound Call

{
  "EventType": "CallConnected",
  "ExtensionNumber": "100", # The extension involved in the process
  "CallID": "295", # Call ID in flight, used to monitor through CallEnd, but the final CallID seen in GetCallLogs differs.
  "FromPhone": "Wexternalline.70: 10003 on Wprovider.3: gw.siptrunk.com:0 - siptrunk.com (-5)", # Trunk detail on how the call flowed
  "FromCallerID": null, # Empty in this case
  "ToPhone": "5551234567", # The number that was dialed
  "ToCallerID": "",  # Caller ID, if found
  "DateTimeStamp": "2/12/2025 7:20:07 PM", # The time the call was answered, in UTC
  "Queue": "", # Always empty for outbound calls
  "Transcription": "" # This will always be blank in this event.
}
 
 

CallRinging - When an Inbound call rings

This event will trigger whenever an internal user extension is rung for an inbound call.

For a call that comes in via a queue, you will receive an event for every single poll attempt against an agent.

This does NOT track outbound calls, use CallConnected for that.

{
  "EventType": "CallRinging",
  "ExtensionNumber": "100", # The extension getting rung
  "CallID": "287", # Call ID in flight, used to monitor through CallEnd, but the final CallID seen in GetCallLogs differs.
  "FromPhone": "+15551234567", # The number who is calling
  "FromCallerID": null, # Caller ID, if found
  "ToPhone": "Wexternalline.70: 10003 on Wprovider.3: gw.siptrunk.com:0 - siptrunk.com (-5)", # Trunk detail on how the call flowed
  "ToCallerID": "", # Empty in this case
  "DateTimeStamp": "2/12/2025 7:16:06 PM", # The time the ring started, in UTC
  "Queue": "Queue Name", # If this call came in through a queue, this will be populated with the queue name.
  "Transcription": ""
}
 
 

CallEnd - When a call completes

This event triggers anytime a call ends between two active parties, just not when it hangs up in ringing.

Inbound Call

{
  "EventType": "CallEnd",
  "ExtensionNumber": "100", # The extension getting rung
  "CallID": "286", # Call ID in flight, used to monitor through CallEnd, but the final CallID seen in GetCallLogs differs.
  "FromPhone": "+15551234567", # The number who is calling
  "FromCallerID": null, # Caller ID, if found
  "ToPhone": "Wexternalline.70: 10003 on Wprovider.3: gw.siptrunk.com:0 - siptrunk.com (-5)", # Trunk detail on how the call flowed
  "ToCallerID": "", # Empty in this case
  "DateTimeStamp": "2/12/2025 7:29:01 PM", # The time the call ended, in UTC
  "Queue": "Queue Name", # Empty in this case
  "Transcription": "" # Empty in this case
}

Outbound Call

{
  "EventType": "CallEnd",
  "ExtensionNumber": "100", # The extension getting rung
  "CallID": "297", # Call ID in flight, used to monitor through CallEnd, but the final CallID seen in GetCallLogs differs.
  "FromPhone": "Wexternalline.70: 10003 on Wprovider.3: gw.siptrunk.com:0 - siptrunk.com (-5)", # Trunk detail on how the call flowed
  "FromCallerID": null, # Empty in this case
  "ToPhone": "5551234567", # The number that was dialed
  "ToCallerID": "", # Caller ID, if found
  "DateTimeStamp": "2/12/2025 7:26:56 PM", # The time the call ended, in UTC
  "Queue": "", # Empty in this case
  "Transcription": "" # Empty in this case
}
 
 

TranscriptionReady - When call transcription completes

This fires only if the Call Transcription Integration is configured, once the transcription has been processed and downloaded.

The CallID for this hook differs from the previous ones, as this is the permanent Call ID used in the database. You can look this ID up using the GetCallLogs API endpoint for additional information. 

{
  "EventType": "TranscriptionReady",
  "ExtensionNumber": "na", # Empty in this case
  "CallID": "220273",
  "FromPhone": "", # Empty in this case
  "FromCallerID": null, # Empty in this case
  "ToPhone": "", # Empty in this case
  "ToCallerID": "", # Empty in this case
  "DateTimeStamp": "2/12/2025 7:13:17 PM", # The time the transcription was received, in UTC
  "Queue": "na", # Empty in this case
  "Transcription": " Doing full testing. Testing 1-2 three. One 2-3 testing. Testing. Testing 1-2 Three. Testing 1-2 three. Testing 1-2 three. Wait a minute. Not yet. And finish." # The transcription as processed by the provider.
}
 
 

How to Setup Webhook

  1. Log into the 1stream Admin Portal.
  2. Go to the Administration > Manage Organization menu in the top right. 
  3. Scroll down to the WebHook Registrations section.
    webhooks1
  4. Click the green circled + button. The Add New WebHook Registration pop-up will appear.webhooks2
  5. In the EventType field, pick your desired event to monitor.
  6. In the Receiver URL field, input the url that data will be sent via HTTPS POST after a call ends.
  7. Click on the Save button.