> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raykoi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discord

> Post a formatted embed to a Discord channel on every submission.

<Info>
  Requires a plan with the `webhooks_enabled` feature. Configured per-form from that form's **Webhooks** settings.
</Info>

## Getting a webhook URL

<Steps>
  <Step title="Open channel settings">
    In Discord, go to the channel you want submissions posted to, then **Edit Channel** → **Integrations** → **Webhooks**.
  </Step>

  <Step title="Create a webhook">
    Click **New Webhook**, give it a name (shown as the message sender — e.g. "Raykoi"), and confirm the channel.
  </Step>

  <Step title="Copy the Webhook URL">
    Discord generates a URL shaped like `https://discord.com/api/webhooks/{id}/{token}` — that's the only credential this integration needs. The URL itself is the secret; anyone with it can post to that channel, so treat it accordingly.
  </Step>
</Steps>

## Connecting it to Raykoi

From the form's **Webhooks** settings, choose **Discord**, and paste in the webhook URL. Raykoi validates the shape of the URL (it has to actually look like a Discord webhook URL) before saving.

## What the message looks like

An embed with the form name as the title and up to 25 submitted fields (Discord's own embed field limit) shown inline, each truncated to fit Discord's field-length limits. Field values are escaped against Discord's markdown (`*_~\`|\`), so a submitted value can't inject bold/italic/spoiler formatting or masked-link-looking text into the embed.

## Testing, retries, and signing

Same delivery pipeline as every other integration — see [Webhook](/essentials/integrations/webhook#retries) for retry/auto-disable behavior and the test-send button. Discord doesn't need Raykoi's own HMAC signing on top — the webhook URL itself is already the credential that authenticates the request.
