4560. You can reconfigure this depending on how your cluster is deployed. When a webhook is triggered, RisingWave processes and ingests the data in real-time.
This direct integration eliminates the need for an intermediary message broker like Kafka. Instead of setting up and maintaining an extra Kafka cluster, you can directly send data to RisingWave to process it in real-time, which enables efficient data ingestion and stream processing without extra infrastructure.
Looking for a standalone HTTP service to ingest app events (JSON/NDJSON) into RisingWave, or to execute SQL over HTTP? See Events API.
Creating a webhook table in RisingWave
To utilize webhook sources in RisingWave, you need to create a table configured to accept webhook requests. If you’re new to webhooks, start with the local smoke test below (no upstream SaaS required). Once your endpoint works end-to-end, pick one of the validation options (secret vs raw string) based on your subscription and security requirements.Webhook endpoint
Webhook requests should be sent to:http://<HOST>:4560/webhook/<database>/<schema>/<table>
The default listening port is 4560. Replace <schema> with public if you didn’t create the table under a custom schema.
Quick local smoke test (no upstream SaaS required)
If you can access RisingWave’s webhook listener and SQL endpoint (for example, via local deployment or port-forwarding), you can do a quick end-to-end test withcurl:
- Create a demo table that accepts requests with header
signature: 1(a minimal local-test validation; replace with real signature/HMAC validation for production).
- Send one event to RisingWave.
- Query the table to verify ingestion.
Request validation (optional but recommended)
RisingWave supports validating incoming webhook requests usingsecure_compare(...). You can either store your shared key as a RisingWave secret, or embed it directly as a SQL string literal.
Option A: use a RisingWave secret
Option B: use a SQL string literal (raw string)
In
headers->>'...', always use the lower-case header name (for example, authorization). If you use a different casing, validation may fail.secure_compare(...) is typically an expression that computes the expected signature from the secret/raw string and the request body (data). See the provider-specific guides below for copy/paste-ready examples.
Supported webhook sources and authentication methods
RisingWave has been verified to work with the following webhook sources and authentication methods:| webhook source | Authentication methods |
|---|---|
| GitHub | SHA-1 HMAC, SHA-256 HMAC |
| Segment | SHA-1 HMAC |
| HubSpot | API Key, Signature V2 |
| AWS EventBridge | Bearer Token |
| Rudderstack | Bearer Token |
- Ingest from Github webhook
- Ingest from Segment webhook
- Ingest from HubSpot webhook
- Ingest from Amazon EventBridge webhook
- Ingest from RudderStack webhook
While only the above sources have been thoroughly tested, RisingWave can support additional webhook sources and authentication methods. You can integrate other services using similar configurations.
Deploy RisingWave webhook listener
Learn how to deploy and test RisingWave’s webhook listener using open-source tools such as Kubernetes Operator and Helm Chart.Kubernetes operator
Make sure risingwave-operator ≥ v0.12.0.
-
Prepare a YAML manifest of RisingWave with the following field set:
You can try with the base YAML.
- Apply the YAML to create the RisingWave instance.
Helm Chart
Make sure Helm chart ≥ 0.2.38.
-
Prepare a YAML values of RisingWave with the following field set:
-
Install a Helm release with the values.
Example command
Test webhook locally using Helm
To test the webhook locally using Helm, first install a Helm release using the example command provided in Helm Chart. Once the Helm release is running, follow these steps:-
Forward ports of the RisingWave to local
-
Connect with
psqland create a demo table. -
Send sample data with
curl -
Query from the table and check the result.