Webhook Action
The Webhook action sends an HTTP POST request to your endpoint whenever an intent fires. Use it to integrate with any external system — CRMs, Zapier, Make, Slack, or your own backend. To learn how to set up webhook actions on your intents, see the Intent Detection guide.
Request Format
POST <your-url>
Content-Type: application/json
User-Agent: rag-go-intent-webhook/1.0
Authorization: Bearer <token> (only when token is configured)
Payload
The request body contains the extracted entities as a flat JSON object:
json{ "customer_name": "John Doe", "appointment_date": "2026-03-15", "phone": "+84901234567" }
The keys correspond to the slot names defined in your intent configuration.
Authorization
Set an optional token in the webhook action config to secure your endpoint. The server automatically sends it as Authorization: Bearer <token>.
You only need to enter the raw token value (e.g. abc123) — the Bearer prefix is added automatically.
Verifying in Node.js
jsapp.post("/webhook", express.json(), (req, res) => { const auth = req.headers["authorization"] if (auth !== `Bearer ${process.env.WEBHOOK_TOKEN}`) { return res.status(401).send("Unauthorized") } console.log("Intent fired:", req.body) res.sendStatus(200) })
Verifying in Python
pythonimport os from flask import Flask, request @app.route("/webhook", methods=["POST"]) def webhook(): auth = request.headers.get("Authorization") if auth != f"Bearer {os.environ['WEBHOOK_TOKEN']}": return "Unauthorized", 401 data = request.get_json() print("Intent fired:", data) return "OK", 200
Response & Timeout
- Return any 2xx status to acknowledge the request. Any other status is treated as a failure.
- The webhook call has a 10-second timeout. Return
200immediately and process asynchronously if your handler is slow.
Webhook Logging
Every webhook call is logged with full request and response details. You can view these logs in the Intent History page — click the webhook status badge to see:
- Request: URL, method, headers, and body sent
- Response: HTTP status code and response body
Retry Policy
Webhooks are currently fire-and-forget — if your endpoint is unavailable, the event is not retried. For reliability, point the webhook at a queue-backed endpoint (e.g. a Zapier catch hook, Make scenario, or your own message queue).