New — webhooks your AI agents can wait on. Hook & Sense opening to early access.

Discord Webhooks

How to Test Discord Webhooks & Interactions Locally (2026)

Discord sends HTTP interactions (slash commands, buttons, modals) and app webhook events to your endpoint. Unlike most providers, Discord signs each request with Ed25519 — an asymmetric scheme you verify with your application's public key, not a shared HMAC secret.

With HookSense, point Discord at a callback endpoint and let an AI agent await the result over MCP: create_callback_endpointwait_for_callbackverify_signature. Run npx @hooksense/mcp in Claude Desktop, Cursor, or any MCP client. No polling.

Signature Header

X-Signature-Ed25519

Algorithm

Ed25519 (asymmetric, verified with your app's public key — not HMAC)

Setup Guide

  1. 1Create a free HookSense endpoint and run the CLI: `npx hooksense listen -p 3000 --path /api/integrations/discord`
  2. 2In the Discord Developer Portal → your app → General Information
  3. 3Set the Interactions Endpoint URL to your local app (Discord requires a valid Ed25519-signed PONG to the PING, so it must reach code that signs the response)
  4. 4Use HookSense to inspect every interaction Discord forwards through it
  5. 5Trigger a slash command or button to see the request land

Common Discord Webhook Events

PING
APPLICATION_COMMAND
MESSAGE_COMPONENT
MODAL_SUBMIT
APPLICATION_COMMAND_AUTOCOMPLETE
ENTITLEMENT_CREATE
APPLICATION_AUTHORIZED

Forward to Localhost

Use HookSense CLI to forward Discord webhooks directly to your local development server:

npx hooksense listen -p 3000 --path /api/integrations/discord

No ngrok or tunnel setup required. Install with npm i -g hooksense or use npx.

Tips & Best Practices

  • Discord uses Ed25519, not shared-secret HMAC — verify with your application's public key from the Developer Portal
  • Discord validates the endpoint by sending a PING that needs a correctly signed PONG, so a bare 200 won't pass — forward to your app and inspect via HookSense
  • The two headers to capture are X-Signature-Ed25519 and X-Signature-Timestamp; the signed payload is timestamp + rawBody
  • Channel 'incoming webhooks' (posting messages to Discord) are outbound — you're the sender, so no inbound verification needed there

Related

Give your agent a Discord callback

Create a free callback endpoint and have an agent await its first verified Discord webhook over MCP. Paid plans are early-access.

Get Started Free