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:

  1. Apple sends an event to Yeethook
  2. Yeethook formats the notification
  3. 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:

  1. In Discord, open the channel's settings (gear icon next to the channel name)
  2. Go to Integrations > Webhooks
  3. 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.