---
title: "The State of Webhooks — live webhook traffic data | WebhookRelay"
meta:
  "og:description": "A live, privacy-preserving view of real webhook traffic through Webhook Relay: the share of providers, HTTP clients, languages, countries, TLS adoption and methods — aggregate fingerprints only, no payloads or customer data."
  "og:title": "The State of Webhooks — live webhook traffic data"
  description: "A live, privacy-preserving view of real webhook traffic through Webhook Relay: the share of providers, HTTP clients, languages, countries, TLS adoption and methods — aggregate fingerprints only, no payloads or customer data."
---

# **The State of Webhooks **

A live, privacy-preserving look at real webhook traffic through Webhook Relay — which providers send them, the HTTP clients and languages behind them, and where they come from. Every figure is a ****share of traffic****; aggregate fingerprints only, no payloads, headers or customer data.

Platform + public bin, unioned

Providers

**42**

identified

HTTP clients

**16**

fingerprinted

Languages

**8**

detected

TLS 1.3

**81%**

of connections

POST

**97%**

of requests

### **Top webhook providers**

Share of traffic by sending service

- AWS EventBridge**26.7%**
- Juniper Mist**22.3%**
- Splunk**14.7%**
- Adyen**13.3%**
- GitHub**13.1%**
- SendGrid**3.5%**
- WAHA**2.4%**
- Vesta**1.3%**
- Atlassian**0.7%**
- Stripe**0.6%**
- Svix**0.3%**
- Bitbucket**0.2%**

Top 12 of 42 identified providers

### **HTTP clients**

Share of traffic by client library or runtime

- Java**52.8%**
- Go**34.8%**
- Axios**7.5%**
- OkHttp**1.6%**
- Node.js**1.2%**
- Requests**0.8%**
- Ruby**0.6%**
- cURL**0.3%**
- Python (urllib)**0.2%**
- Browser**<0.1%**
- PHP**<0.1%**
- Dotnet**<0.1%**

### **Provider share over time**

Top 10 providers + other — each row is one collection interval (adds to 100%)

- Adyen
- GitHub
- AWS EventBridge
- Juniper Mist
- Splunk
- SendGrid
- Stripe
- WAHA
- Atlassian
- Vesta
- Other

Jul 8 05h

Jul 8 12h

Jul 8 16h

Jul 9 00h

Jul 9 04h

Jul 9 08h

Jul 9 12h

Jul 9 16h

Jul 9 20h

Jul 10 00h

Jul 10 04h

Jul 10 08h

Jul 10 12h

Jul 10 16h

Jul 10 20h

Jul 11 00h

Jul 11 04h

Jul 11 08h

Jul 11 12h

Jul 11 16h

Jul 11 20h

Jul 12 00h

Jul 12 04h

Jul 12 08h

Jul 12 12h

Jul 12 16h

Jul 12 20h

Jul 13 00h

Jul 13 04h

Jul 13 08h

Jul 13 12h

Jul 13 16h

Jul 13 20h

Jul 14 00h

Jul 14 04h

Jul 14 08h

Jul 14 12h

37 collection intervals · 100% stacked share per window (not lifetime cumulative)

### **Languages**

Share of traffic by inferred language

- Java**53.6%**
- Go**35.8%**
- JavaScript**8.6%**
- Python**1.1%**
- Ruby**0.6%**
- C**0.3%**
- PHP**<0.1%**
- .NET**<0.1%**

### **How webhooks travel**

Transport security and HTTP method

**Transport security**

- TLS 1.3**80.6%**
- TLS 1.2**19.3%**
- Plaintext**0.1%**

**HTTP method**

- POST**96.6%**
- GET**3.4%**
- Other**0.0%**

### **Content types**

Share of traffic by Content-Type header

- application/json**98.2%**
- application/x-www-form-urlencoded**1.3%**
- application/xml**0.2%**
- text/plain**0.2%**
- multipart/form-data**<0.1%**
- application/octet-stream**<0.1%**
- application/webhook+json**<0.1%**
- text/xml**<0.1%**
- application/vnd.apache.thrift.json**<0.1%**
- application/x-ndjson**<0.1%**

### **Payload size**

Share of traffic by size (from the Content-Length header)

- empty**3.7%**
- <1 KB**69.9%**
- 1-10 KB**20.1%**
- 10-100 KB**6.2%**
- 100 KB-1 MB**<0.1%**
- 1-10 MB**<0.1%**
- >10 MB**<0.1%**

### **Where webhooks come from**

Share of traffic by sender country

- 🇺🇸 United States**66.1%**
- 🇮🇪 Ireland**14.9%**
- 🇳🇱 Netherlands**7.2%**
- 🇬🇧 United Kingdom**6.6%**
- 🇮🇩 Indonesia**2.6%**
- 🇮🇳 India**1.3%**
- 🇸🇬 Singapore**0.3%**
- 🇩🇪 Germany**0.2%**
- 🇦🇪 United Arab Emirates**0.2%**
- 🇧🇷 Brazil**0.1%**

Top 10 of 72 countries · drag to spin the globe

### **Where webhooks come from — over time**

Top 10 countries + other — each row is one collection interval (adds to 100%)

- 🇺🇸 United States
- 🇳🇱 Netherlands
- 🇮🇪 Ireland
- 🇬🇧 United Kingdom
- 🇮🇩 Indonesia
- 🇮🇳 India
- 🇩🇪 Germany
- 🇦🇪 United Arab Emirates
- 🇸🇬 Singapore
- 🇨🇭 Switzerland
- Other

Jul 8 05h

Jul 8 12h

Jul 8 16h

Jul 9 00h

Jul 9 04h

Jul 9 08h

Jul 9 12h

Jul 9 16h

Jul 9 20h

Jul 10 00h

Jul 10 04h

Jul 10 08h

Jul 10 12h

Jul 10 16h

Jul 10 20h

Jul 11 00h

Jul 11 04h

Jul 11 08h

Jul 11 12h

Jul 11 16h

Jul 11 20h

Jul 12 00h

Jul 12 04h

Jul 12 08h

Jul 12 12h

Jul 12 16h

Jul 12 20h

Jul 13 00h

Jul 13 04h

Jul 13 08h

Jul 13 12h

Jul 13 16h

Jul 13 20h

Jul 14 00h

Jul 14 04h

Jul 14 08h

Jul 14 12h

37 collection intervals · 100% stacked share per window (not lifetime cumulative)

### **About this data**

Figures come from two privacy-preserving sources you can switch between above: the [Webhook Relay platform](https://webhookrelay.com/state-of-webhooks/) (real customer webhook delivery) and the public, no-signup [webhook bin](https://webhookrelay.com/state-of-webhooks/webhook-bin/) (an open testing endpoint). Each request is fingerprinted into aggregate counters — provider, client family, language, country, TLS version, HTTP method — and nothing else is kept. ****No payloads, header values, IP addresses or customer identifiers are ever stored, and only shares are shown here.****

Snapshots are collected every few hours and this page rebuilds against the newest one, so it tracks live traffic over time. The over-time charts show one _100% share bar per collection interval_ (roughly every four hours): platform counters are differenced per replica, and bin rollups are differenced across consecutive windows — so a redeploy or window expansion doesn't freeze the mix at lifetime totals. Each row is the top 10 keys plus an _Other_ remainder so it always adds to 100%. The public bin also absorbs a lot of automated and abusive traffic, so its shares skew toward a handful of high-volume senders — switch to _Platform_ for the mix that reflects real customer delivery, and read the rankings as “what we see,” not a market survey.