> For the complete documentation index, see [llms.txt](https://docs.ragnasync.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ragnasync.com/features/webhooks.md).

# Webhooks

How RagnaSync delivers messages to Discord — and what to do if one breaks

RagnaSync delivers messages to your Discord channels using **webhooks**. The good news: you almost never have to think about them. RagnaSync creates and manages them for you. This page explains what's happening behind the scenes, for the rare moment a channel stops receiving messages.

***

## How delivery works

When you bridge a Discord channel (by setting its `discord_channel_id` in [`channels.conf`](/getting-started/channels-conf.md) or your [message routes](/ragnascript/message-routing.md)), RagnaSync automatically creates a webhook on that channel the first time it needs to post there.

From then on, every message destined for that channel — chat, announcements, drop logs, WoE events — is delivered through its webhook. This is what lets messages appear with custom names and avatars (like a player's character) rather than as the bot.

{% hint style="info" %}
You don't create webhooks by hand. Bridging a channel is all you do — RagnaSync handles the webhook itself.
{% endhint %}

***

## Self-healing

Webhooks can break if someone deletes one in Discord, or if a channel is removed and recreated. RagnaSync is built to recover on its own:

* If a webhook goes missing or stops working, RagnaSync **recreates it automatically** and resends the messages that were waiting.
* Messages are **buffered, not dropped**, while a webhook is being recreated — so a brief hiccup doesn't lose announcements.

In practice this means a deleted webhook fixes itself within moments, with no action from you.

***

## If a channel stops receiving messages

If one channel has gone quiet while others work, run through these:

1. **Check the channel is still bridged** — confirm its `discord_channel_id` is correct in your config or [message routes](/ragnascript/message-routing.md).
2. **Check the bot's permissions** — the RagnaSync bot needs **Manage Webhooks** on that channel to create and use webhooks.
3. **Confirm the channel still exists** — if it was deleted and recreated, make sure the new channel's ID is the one in your config.
4. **Check your usage** — if you've hit your monthly [event limit](/account/usage-and-billing.md), counted messages pause until you add credits, upgrade, or the month resets.

{% hint style="warning" %}
The most common cause is a missing **Manage Webhooks** permission. If RagnaSync can't manage a webhook on the channel, it can't deliver there — fix the permission and delivery resumes on its own.
{% endhint %}

***

Still stuck? Head to [Troubleshooting](/getting-started/troubleshooting.md) or reach us on Discord.
