Requex.me Logo
Requex.me

How to Test Discord Webhooks: Complete Guide

Everything you need to know about Discord webhooks. Learn to create channel webhooks, send rich embed messages, test bot integrations, and debug delivery issues.

Last updated: February 2026 • 11 min read

What are Discord Webhooks?

Discord webhooks allow external applications to send messages directly into Discord channels without requiring a bot user. They're one of the simplest ways to integrate external services with Discord — perfect for build notifications, monitoring alerts, social media feeds, and automated announcements.

Unlike Slack or GitHub webhooks where an external service sends events TO your server, Discord webhooks work the other way: you send messages TO Discord. You POST a JSON payload to a Discord-provided URL, and the message appears in the configured channel with a custom username and avatar.

Discord webhooks support plain text, rich embeds (with colors, fields, images, and footers), file uploads, and even thread messages. This guide covers how to create, test, and debug all of these features.

Creating a Discord Webhook

  1. Open Discord and navigate to the server and channel where you want webhook messages.
  2. Click the gear icon next to the channel name → IntegrationsWebhooks.
  3. Click New Webhook. Give it a name and optionally set a custom avatar.
  4. Click Copy Webhook URL. The URL looks like:
    https://discord.com/api/webhooks/1234567890/abcdefghijk...

⚠️ Keep this URL secret! Anyone with the webhook URL can send messages to your channel. Never commit it to version control or share it publicly.

Testing Discord Webhooks with cURL

Simple Text Message

curl -X POST "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Hello from my webhook test! 🚀"}'

Rich Embed Message

curl -X POST "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "Deploy Bot",
    "avatar_url": "https://i.imgur.com/xxx.png",
    "embeds": [{
      "title": "🚀 New Deployment",
      "description": "Branch **main** deployed to production",
      "color": 3066993,
      "fields": [
        {"name": "Commit", "value": "abc1234", "inline": true},
        {"name": "Author", "value": "@developer", "inline": true},
        {"name": "Status", "value": "✅ Success", "inline": true}
      ],
      "timestamp": "2026-02-28T12:00:00.000Z",
      "footer": {"text": "Powered by Requex.me"}
    }]
  }'

Custom Username and Avatar

You can override the webhook's default name and avatar per-message by including username and avatar_url fields. This is great for creating distinct notification types (e.g., "Build Bot", "Alert System", "Changelog").

Testing Outgoing Discord Events with Requex.me

While Discord channel webhooks are for sending TO Discord, Discord also sends outgoing events when you configure Interactions or Event Subscriptions for your bot. In these cases, Discord sends HTTP POST requests to YOUR endpoint.

Use Requex.me to capture these outgoing events and inspect their payloads. This is essential for debugging slash commands, button interactions, and modal submissions.

  1. Visit requex.me and copy your unique URL.
  2. Go to the Discord Developer Portal → Your Application → General Information.
  3. Set the "Interactions Endpoint URL" to your Requex URL.
  4. Trigger interactions in your server to see the payloads.

Discord Webhook Rate Limits

Discord enforces strict rate limits on webhook requests. Understanding these limits is crucial to avoid your messages being silently dropped:

  • Per webhook: 30 requests per 60 seconds per channel webhook
  • Per channel: 10 unique webhooks can post to the same channel
  • Global: 50 requests per second across all webhooks
  • Retry-After: Discord returns a Retry-After header when rate limited. Always respect this value.

Common Discord Webhook Troubleshooting

Message not appearing

Check that the channel still exists and the webhook hasn't been deleted. Discord returns a 404 for deleted webhooks and a 10015: Unknown Webhook error code.

Embed not rendering

Ensure the embeds field is an array, not an object. Each embed must have at least one visible field (title, description, or fields). The color must be a decimal integer, not a hex string.

Rate limited (429 error)

Implement exponential backoff and respect the Retry-After header in Discord's response. Queue messages and send them with delays if you're posting at high volume.

Start Testing Webhooks Now

Generate your unique URL and test webhooks instantly. Free, no signup.

Open Webhook Tester →