Keep application data synchronized
Synchronize a local user or organization record when Kinde emits a corresponding event.
Kinde · Const
Kinde webhooks notify your application when configured account events occur. Kinde sends event data in a JWT to your registered endpoint, which should verify, process, and acknowledge the request with HTTP 200.
A Kinde webhook connects an event trigger to an HTTPS endpoint you control. When the event occurs, Kinde sends an application/jwt request containing a JWT with event data and webhook details; your application should verify its authenticity, decode it, process the event, and return HTTP 200 to mark delivery successful.
POST <registered-endpoint> with Content-Type: application/jwtThe endpoint should return HTTP 200 to acknowledge successful delivery; otherwise Kinde may retry using its back-off policy.
import express from "express";
import jwt from "jsonwebtoken";
const app = express();
app.use(express.text({ type: "application/jwt" }));
app.post("/webhooks/kinde", (req, res) => {
const token = req.body;
const payload = jwt.decode(token);
console.log(payload);
res.sendStatus(200);
});
app.listen(3000);This endpoint accepts Kinde's JWT content type, decodes the event token, and returns HTTP 200 after handling it.
Synchronize a local user or organization record when Kinde emits a corresponding event.
Start application workflows when events such as user.created occur.
Store incoming event data for auditing or downstream processing.
A webhook registers an endpoint and associates it with a Kinde event. When the event occurs, Kinde calls the endpoint with a JWT containing event data and webhook details; a successful HTTP 200 completes delivery.
Follow-up: What should happen when delivery fails? Kinde retries when it fails to receive a response, using a back-off policy.
The request uses the application/jwt content type. The receiver should verify the request's authenticity, decode the JWT, and then use its event data to trigger application logic.
Follow-up: Why is decoding alone insufficient? Decoding reveals claims but does not establish that the request came from Kinde; authenticity verification must happen first.
Webhooks can be managed through the Kinde interface or API. The documented management endpoints include GET /api/v1/webhooks for listing, POST for creation, PATCH for updates, and DELETE for removal.
Follow-up: How can available event definitions be discovered? Use GET /api/v1/event_types to list available event types and their schemas.
Webhooks flowWebhook request content-typeWebhooks securityWebhooks responses and retry policyGET /api/v1/webhooksGET /api/v1/event_types