Discord API · error code

Discord error 30007: Maximum number of webhooks reached (15)

Permanent - do not retryHTTP 400Maximum reached (30xxx)

Last verified against Discord Developer Docs - Opcodes and status codes

What Discord returns
Maximum number of webhooks reached (15)

What error 30007 means

The channel already has 15 webhooks and Create Webhook was refused. Fifteen sounds like a lot until you realize how many tools create their own: GitHub, CI systems, status pages, ticket bots, and any bot that uses webhooks to post with a custom name and avatar (a common trick for "impersonation" style features such as Tupperbox-like proxies or cross-server relays).

The bot most likely to hit this is one that creates a webhook every time it needs one instead of reusing the webhook it created last time. A restart, a cache flush, or a multi-instance deployment can each spawn a fresh webhook, and after a handful of deploys the channel is full.

What it looks like

{
  "message": "Maximum number of webhooks reached (15)",
  "code": 30007
}

Why it happens

  • Bot creates a new webhook on each run instead of reusing its own
  • Channel already used by many third-party integrations
  • Several instances of the same bot each creating their own webhook
  • Leftover webhooks from uninstalled integrations that were never deleted

How to fix Discord error 30007

  1. 1GET /channels/{channel.id}/webhooks and find one whose application_id or user.id matches your bot; reuse it
  2. 2Delete webhooks your bot created previously and no longer uses (DELETE /webhooks/{webhook.id})
  3. 3Store the webhook ID and token you created in your database keyed by channel ID
  4. 4If the channel belongs to the server owner's tooling, ask them to prune unused webhooks in Integrations > Webhooks

How to stop it recurring

Adopt a find-or-create pattern for webhooks: look for an existing webhook owned by your application in the channel before creating one, and persist the result. Name your webhooks consistently so they can be identified and cleaned up.

Log every webhook creation with the channel and reason so a sudden spike is visible in your metrics before the cap is reached.

Webhook sprawl is also a security smell: fifteen webhooks in one channel means fifteen URLs that can leak. Audit them the same way you audit tokens. The per-channel cap is on the Discord limits page, and the webhook debugging guide covers verifying which of the fifteen actually still work.

Official reference: Discord Developer Docs - Opcodes and status codes. See all Discord error codes or the Discord limits and quotas.

Related codes

Error 30007 - quick answers

What does Discord error 30007 mean?

The channel already has 15 webhooks and Create Webhook was refused. Fifteen sounds like a lot until you realize how many tools create their own: GitHub, CI systems, status pages, ticket bots, and any bot that uses webhooks to post with a custom name and avatar (a common trick for "impersonation" style features such as Tupperbox-like proxies or cross-server relays).

How do I fix Discord error 30007?

1. GET /channels/{channel.id}/webhooks and find one whose application_id or user.id matches your bot; reuse it 2. Delete webhooks your bot created previously and no longer uses (DELETE /webhooks/{webhook.id}) 3. Store the webhook ID and token you created in your database keyed by channel ID 4. If the channel belongs to the server owner's tooling, ask them to prune unused webhooks in Integrations > Webhooks

Should I retry after error 30007?

No. Retrying the same request produces the same error; the condition has to be fixed first. Treat it as a permanent failure for that message and surface it, rather than looping.

Stop debugging Discord by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.