Is a Discord webhook safe to use?
What a Discord webhook can and cannot do, how Yeethook stores it, and how to revoke it.
Yeethook connects to Discord with a plain channel webhook. There is no bot user, no OAuth authorization, and nothing to install in your server. Here's what that means for your server's security.
What a webhook can do
A Discord webhook does one thing: post messages to the single channel it was created in. Yeethook uses it to deliver notification embeds for your App Store events.
What it cannot do
A webhook has no ability to:
- Read messages in any channel, DM, or thread, including the channel it posts to
- See members, roles, or user profiles
- List channels or access server settings
- Join voice channels, add reactions, or respond to commands
- Receive events from your Discord server
- Post to any other channel unless you create another webhook there
Because Yeethook never asks for a bot token or OAuth scopes, there is no persistent connection to your server and no permission to escalate.
No data flows from Discord to Yeethook
The integration is strictly one-way:
- Apple sends an event to Yeethook
- Yeethook formats the notification
- Yeethook posts it to your Discord channel via the webhook URL
Discord never sends message content back to Yeethook. The only other request Yeethook makes is a periodic health check: a GET on the webhook URL, which returns the webhook's own metadata and posts nothing to your channel.
How Yeethook stores the webhook URL
The webhook URL contains a secret token, so Yeethook treats it as a credential:
- Encrypted at rest with AES-256-GCM
- Never shown again after you save it. When editing a channel, you can replace the URL but not view the current one.
- Only decrypted server-side at the moment a notification is delivered or a health check runs
Mentions are always disabled
Notifications include text Yeethook does not control, such as TestFlight tester comments and app names. To keep that text from disrupting your server:
- Every message is sent with mentions disabled. Even if a tester writes
@everyone,@here, or a role or user mention in their feedback, nobody gets pinged. - Untrusted text is markdown-escaped, so it can't inject formatting, fake links, or break out of the embed layout.
Revoking access
You can cut off Yeethook's ability to post at any time, without involving Yeethook:
- In Discord, open the channel's settings (gear icon next to the channel name)
- Go to Integrations > Webhooks
- Select the webhook and click Delete Webhook
The URL stops working immediately. The next delivery attempt or health check receives a "not found" response, and Yeethook deactivates the channel. You can also delete the channel in Yeethook from the Channels page, which removes the encrypted URL from Yeethook.
If you think a webhook URL has leaked, delete the webhook in Discord, create a new one, and reactivate the channel in Yeethook with the new URL.