{"name":"WebhookX: The Next-Generation Webhooks Gateway for Event Delivery","description":"WebhookX is an open-source, cloud-native webhook gateway designed for robust and scalable event processing. It efficiently handles receiving, validating, transforming, and delivering events, ensuring reliable communication across distributed systems. This project provides a comprehensive solution for managing webhooks with advanced features like automatic retries, fan-out capabilities, and extensive plugin support.","github":"https://github.com/webhookx-io/webhookx","url":"https://osrepos.com/repo/webhookx-io-webhookx","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/webhookx-io-webhookx","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/webhookx-io-webhookx.md","json":"https://osrepos.com/repo/webhookx-io-webhookx.json","topics":["cloud-native","event-gateway","webhooks","go","api gateway","event processing","microservices"],"keywords":["cloud-native","event-gateway","webhooks","go","api gateway","event processing","microservices"],"stars":null,"summary":"WebhookX is an open-source, cloud-native webhook gateway designed for robust and scalable event processing. It efficiently handles receiving, validating, transforming, and delivering events, ensuring reliable communication across distributed systems. This project provides a comprehensive solution for managing webhooks with advanced features like automatic retries, fan-out capabilities, and extensive plugin support.","content":"## Introduction\nWebhookX is an open-source, next-generation webhook gateway built in Go, designed to manage the complexities of receiving, validating, transforming, and delivering events at scale. It provides a robust and reliable solution for handling webhooks in cloud-native environments, ensuring your event-driven architectures run smoothly.\n\n## Installation\nThe WebhookX binary includes both server and CLI commands.\n\n**macOS**\nshell\nbrew tap webhookx-io/webhookx && brew install webhookx\n\n\n**Linux | Windows**\nDownload the binary distribution from the official [releases page](https://github.com/webhookx-io/webhookx/releases){:target=\"_blank\"}.\n\n## Examples\nThis quick start guide demonstrates how to get WebhookX running with Docker Compose and interact with it. For production deployments, refer to the official [documentation](https://docs.webhookx.io/docs/){:target=\"_blank\"}.\n\n**1. Start WebhookX using Docker Compose**\nThe `docker-compose.yml` provides a simple all-in-one (standalone) deployment for a quick start.\n\nbash\ncurl -O https://raw.githubusercontent.com/webhookx-io/webhookx/main/docker-compose.yml && docker compose -f docker-compose.yml up\n\n\nOnce it's running, verify with a simple curl command:\n\nbash\ncurl http://localhost:9601\n\n\nYou should see an HTTP 200 response similar to:\n\nhttp\nHTTP/1.1 200 OK\nContent-Type: application/json; charset=utf-8\nServer: WebhookX/{version}\n\n{\n    \"version\": \"{version}\",\n    \"message\": \"Welcome to WebhookX\",\n  \t\"configuration\": {}\n}\n\n\n**2. Configure entities**\nUse a sample declarative configuration `webhookx.sample.yml` for this quick start. You may need to install the `webhookx` CLI first.\n\nbash\nwebhookx admin sync webhookx.sample.yml\n\n\nThis command sends the configuration file to WebhookX via the Admin API.\n\n**3. Send events**\nThe Ingestion API is exposed on port `:9600`.\n\nbash\ncurl -X POST http://localhost:9600 \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"event_type\": \"charge.succeeded\",\n    \"data\": {\n        \"key\": \"value\"\n    }\n}'\n\n\nThis sends a `charge.succeeded` event, which WebhookX will route to endpoints defined in your configuration.\n\n**4. Inspect delivery results**\nAttempt objects represent delivery results and include inspection details. The Admin API is exposed on port `:9601`.\n\nRetrieve the attempt list:\n\nbash\ncurl http://localhost:9601/workspaces/default/attempts\n\n\nExample HTTP Response:\n\n{\n  \"total\": 1,\n  \"data\": [\n    {\n      \"id\": \"338lax8Xe774EhimzBukip37Zne\",\n      \"event_id\": \"338las8UmbKJZl3aikM44ZWh71P\",\n      \"endpoint_id\": \"338lQch7qdBqKvlVxXHcPTjLDTn\",\n      \"status\": \"SUCCESSFUL\",\n      \"attempt_number\": 1,\n      \"scheduled_at\": 1758706646768,\n      \"attempted_at\": 1758706646819,\n      \"trigger_mode\": \"INITIAL\",\n      \"exhausted\": false,\n      \"error_code\": null,\n      \"request\": {\n        \"method\": \"POST\",\n        \"url\": \"https://httpbin.org/anything\",\n        \"headers\": null,\n        \"body\": null\n      },\n      \"response\": {\n        \"status\": 200,\n        \"latency\": 2402,\n        \"headers\": null,\n        \"body\": null\n      },\n      \"created_at\": 1758706646769,\n      \"updated_at\": 1758706649223\n    }\n  ]\n}\n\n\nTo inspect `request.headers`, `request.body`, `response.headers`, and `response.body` for a specific attempt (e.g., `338lax8Xe774EhimzBukip37Zne`), use:\n\nbash\ncurl http://localhost:9601/workspaces/default/attempts/338lax8Xe774EhimzBukip37Zne\n\n\nExample HTTP Response:\n\n{\n  \"id\": \"338lax8Xe774EhimzBukip37Zne\",\n  \"event_id\": \"338las8UmbKJZl3aikM44ZWh71P\",\n  \"endpoint_id\": \"338lQch7qdBqKvlVxXHcPTjLDTn\",\n  \"status\": \"SUCCESSFUL\",\n  \"attempt_number\": 1,\n  \"scheduled_at\": 1758706646768,\n  \"attempted_at\": 1758706646819,\n  \"trigger_mode\": \"INITIAL\",\n  \"exhausted\": false,\n  \"error_code\": null,\n  \"request\": {\n    \"method\": \"POST\",\n    \"url\": \"https://httpbin.org/anything\",\n    \"headers\": {\n      \"Content-Type\": \"application/json; charset=utf-8\",\n      \"User-Agent\": \"WebhookX/{version}\",\n      \"Webhookx-Delivery-Id\": \"338lax8Xe774EhimzBukip37Zne\",\n      \"Webhookx-Event-Id\": \"338las8UmbKJZl3aikM44ZWh71P\",\n      \"Webhookx-Signature\": \"v1=37e25342d983c26d783eafe50fe170eaac731383439568e3354315c2e84c5173\",\n      \"Webhookx-Timestamp\": \"1758706646\",\n      \"X-Apikey\": \"secret\"\n    },\n    \"body\": \"{\\n        \\\"key\\\": \\\"value\\\"\\n    }\"\n  },\n  \"response\": {\n    \"status\": 200,\n    \"latency\": 2402,\n    \"headers\": {\n      \"Access-Control-Allow-Credentials\": \"true\",\n      \"Access-Control-Allow-Origin\": \"*\",\n      \"Content-Length\": \"778\",\n      \"Content-Type\": \"application/json\",\n      \"Date\": \"Wed, 24 Sep 2025 09:37:29 GMT\",\n      \"Server\": \"gunicorn/19.9.0\"\n    },\n    \"body\": \"{\\n  \\\"args\\\": {}, \\n  \\\"data\\\": \\\"{\\\\n        \\\\\\\"key\\\\\\\": \\\\\\\"value\\\\\\\"\\\\n    }\\\", \\n  \\\"files\\\": {}, \\n  \\\"form\\\": {}, \\n  \\\"headers\\\": {\\n    \\\"Accept-Encoding\\\": \\\"gzip\\\", \\n    \\\"Content-Length\\\": \\\"30\\\", \\n    \\\"Content-Type\\\": \\\"application/json; charset=utf-8\\\", \\n    \\\"Host\\\": \\\"httpbin.org\\\", \\n    \\\"User-Agent\\\": \\\"WebhookX/{version}\\\", \\n    \\\"Webhookx-Delivery-Id\\\": \\\"338lax8Xe774EhimzBukip37Zne\\\", \\n    \\\"Webhookx-Event-Id\\\": \\\"338las8UmbKJZl3aikM44ZWh71P\\\", \\n    \\\"Webhookx-Signature\\\": \\\"v1=37e25342d983c26d783eafe50fe170eaac731383439568e3354315c2e84c5173\\\", \\n    \\\"Webhookx-Timestamp\\\": \\\"1758706646\\\", \\n    \\\"X-Amzn-Trace-Id\\\": \\\"Root=1-68d3bbd7-195b190632c27c547358dbee\\\", \\n    \\\"X-Apikey\\\": \\\"secret\\\"\\n  }, \\n  \\\"json\\\": {\\n    \\\"key\\\": \\\"value\\\"\\n  }, \\n  \\\"method\\\": \\\"POST\\\", \\n  \\\"origin\\\": \\\"0.0.0.0\\\", \\n  \\\"url\\\": \\\"https://httpbin.org/anything\\\"\\n}\\n\"\n  },\n  \"created_at\": 1758706646769,\n  \"updated_at\": 1758706649223\n}\n\n\n## Why Use WebhookX?\nWebhookX offers a powerful set of features that make it an ideal choice for managing webhooks:\n\n*   **Reliable Delivery**: Ensures events are delivered with automatic retries and configurable delays, minimizing data loss.\n*   **Scalability and Fan-out**: Routes events to multiple endpoints based on event type, supporting complex event distribution patterns.\n*   **Rate Limiting**: Protects both ingestion and delivery mechanisms from overload, maintaining system stability.\n*   **Declarative Configuration**: Utilizes GitOps-friendly configuration files for easy management and version control.\n*   **Extensibility with Plugins**: Supports extensible inbound and outbound processing through a variety of built-in plugins (e.g., `webhookx-signature`, `wasm` for transformations, `function` for custom logic, `event-validation`, and security plugins).\n*   **Observability**: Integrates with OpenTelemetry for metrics and tracing, providing deep insights into event flow.\n*   **Secret Management**: Allows referencing secrets from external providers, enhancing security.\n*   **Multi-tenancy**: Provides workspace isolation for configuration entities, suitable for multi-tenant environments.\n\n## Links\n*   **GitHub Repository**: [https://github.com/webhookx-io/webhookx](https://github.com/webhookx-io/webhookx){:target=\"_blank\"}\n*   **Official Documentation**: [https://docs.webhookx.io](https://docs.webhookx.io){:target=\"_blank\"}\n*   **OpenAPI Specification**: [https://openapi.webhookx.io](https://openapi.webhookx.io){:target=\"_blank\"}","metrics":{"detailViews":0,"githubClicks":0},"dates":{"published":null,"modified":"2026-06-09T15:43:52.000Z"}}