Skip to content

Test webhooks

POST sample JSON to a saved endpoint, inspect the response, and activate pending webhooks.

4 min read

Open Webhooks → Test.

What this page is for

Webhook test sends sample JSON to a URL you saved on Webhooks → Webhook — not real customer traffic. Use it to confirm your server accepts Kirisan POSTs and returns 200 or 201 before going live.

Pending endpoints need one successful test here before Kirisan delivers live events.

Webhook test — endpoint picker, payload preview, and Send test

Sample data shown.

Page intro

The subtitle explains the contract:

  • Traffic is sample JSON, not live messages
  • Pending webhooks become Active after a 2xx response

No webhooks yet

When you have not saved an endpoint, the page prompts you to add one first.

No webhooks yet — open Webhooks to add an endpoint

Click Webhooks to open Webhooks → Webhook and create an endpoint.

After save — activation banner

When you click Save → test on Webhooks → Webhook, Kirisan opens this page and remembers the batch you just saved.

Activation banner — one successful test activates the whole batch

One successful test (2xx) activates every endpoint from your last save. Pick any row from that batch — you do not need to test each device separately.

Test form

ControlWhat it does
WebhookChoose which saved row to test — label shows name, device, event, URL, and pending when not active yet
Device summaryDisplay name and identifier for the selected row
Sample scenarioEvent type for this row (Incoming Message or Submission) — matches what you configured on Webhooks → Webhook
Payload previewRead-only JSON Kirisan will POST — shape follows the row’s channel (WhatsApp, Telegram, or WABA)
Send testPOST the sample to your URL and show the result

Test payloads include "production": false so your handler can ignore or route them separately from live traffic.

Sample scenario by channel

ChannelIncoming Message preview
WhatsAppNormalized envelope with sender, message, and metadata
TelegramSame top-level shape; sender.details includes chat_id and user_id
WABAFlat Cloud API subscriber body for that channel

Submission previews include submission, answers, started_at, and completed_at.

Send test and read results

Click Send test. Kirisan POSTs to your URL and shows a result card below the form.

Successful test — HTTP status, duration, request body, and response body

Sample data shown.

Result partMeaning
Success / FailedWhether your server returned 2xx
POST + URLMethod and destination that was called
HTTPStatus code from your server
DurationRound-trip time in milliseconds
Request body sentExact JSON Kirisan posted
Response bodyYour server’s reply (truncated when very large)

On success:

  • A toast confirms Webhook test succeeded (2xx)
  • Pending rows from the last save batch flip to Active on Webhooks → Webhook
  • The Webhook dropdown refreshes — pending suffix disappears

On failure:

  • The card turns red with Failed, HTTP status, and error details
  • Fix your server, then click Send test again
  • Check Webhooks → Logs for the same attempt

What your server should do

CheckWhy
Return 200 or 201 quicklyKirisan treats other codes as failure; slow handlers may time out
Accept POST with application/jsonMatches delivery on live webhooks
Read X-Kirisan-Event and X-Kirisan-Device headersRoute by event and device without parsing the body first
Compare X-Webhook-Secret when you set a signing secretReject requests that do not match your configured secret
Queue heavy work asynchronouslyRespond with 2xx first, then process in the background
Last updated: June 25, 2026
Was this page helpful?