What you need before you add a webhook to a Discord channel
This page is for a form on your own website. A Google Form is a different product and needs Apps Script. Formgong does not connect to Google Forms.
You need two things:
- A Formgong form. Start from the HTML form docs or the HTML contact form page. The browser posts to Formgong. You do not host a relay. The form without a backend guide covers that idea.
- Permission to create a webhook in the Discord server. Discord calls this Manage Webhooks. Open Server Settings, then Integrations, and click Create Webhook. Pick a text channel in the menu, name the webhook, and click Copy Webhook URL.
That is how to get a Discord webhook URL, how to make a Discord webhook, and how to create a Discord webhook URL. The URL looks like https://discord.com/api/webhooks/000/PLACEHOLDER. Keep it private. Anyone with it can post to that channel.
Use a text channel. Forum channels and media channels need a thread name on every message. Formgong does not send thread_name, so those channels will not accept the post. Discord documents this on the webhook resource. The Intro to Webhooks article shows the same Server Settings path.
Paste the URL Discord copies. Do not add /slack or /github at the end. A /slack ending is sent as a Slack-style message. A /github ending gets the raw JSON, not an embed. Hosts discord.com and discordapp.com both work, including ptb. and canary..
Send the form to Discord, step by step
Detection is automatic. There is no Discord toggle and no bot to invite. A forms to Discord webhook is just that URL in the form settings.
- In Discord, open Server Settings, then Integrations, and click Create Webhook. Pick a text channel, then click Copy Webhook URL.
- In Formgong, open My forms, then the form, then Form settings. If the Webhook tab is hidden, click Open expert mode. Open Webhook, paste the URL, and click Add webhook.
- Click Send test on that webhook and check the Discord channel for the test embed.
- Submit the real form on your website and confirm the channel shows each field.
- Optional: connect Telegram on the same form for an instant phone alert. Telegram is also instant on Free.
The Webhook tab is hidden in Standard mode. The button label is Open expert mode. The URL field is labeled URL. The button that saves it is Add webhook, not a separate Save.
Send test posts an event named webhook.test. The only field is message, with the text Formgong test. In Discord the title starts with Test message from Formgong, then the form name. There is no page line on a test, because the test has no page.
Step 5 is optional. Telegram is also instant on Free, and it does not use the webhook slot. Email on Free is a next-morning daily digest at 08:00 in the owner timezone. Telegram, Slack and Discord are instant on Free.
A visitor submit is the real check. The honeypot field is always checked. You can also turn on Cloudflare Turnstile. Spam is stored in the inbox and is not posted to Discord. The spam without a CAPTCHA article explains the honeypot.
Discord webhook embed example
This is the Discord webhook format Formgong sends. It is one embed, not a custom template. You cannot edit the layout. The sample uses a form named Contact, placeholder field values, and example.com.
{
"username": "Formgong",
"allowed_mentions": { "parse": [] },
"embeds": [
{
"title": "Contact",
"url": "https://example.com/dashboard/forms/PLACEHOLDER/submissions/PLACEHOLDER",
"description": "Page: https://example.com/contact",
"fields": [
{ "name": "name", "value": "PLACEHOLDER", "inline": false },
{ "name": "email", "value": "PLACEHOLDER", "inline": false },
{ "name": "message", "value": "PLACEHOLDER", "inline": false },
{ "name": "Files", "value": "PLACEHOLDER.pdf", "inline": false }
],
"footer": { "text": "Formgong · 06.10.2026, 09:15 (+00:00)" },
"timestamp": "2026-10-06T09:15:00.000Z"
}
]
}That JSON is the discord webhook example for a normal submission. The pieces are:
- Username: Formgong. Discord shows that name on the message.
- Title: the form name. It links to the submission in your dashboard. The title is cut at 256 characters.
- Description: the page URL. On Pro and Business, a traffic-source line can be added here. Free does not get that line. The description limit in our sender is 4,096 characters.
- Fields: one field per submitted answer, up to 25. Each value is cut at 1,000 characters. Discord allows 1,024. We cut earlier, then escape the text. A long form adds a note for the fields that did not fit. The whole embed stays within 6,000 characters.
- Files: names only, such as PLACEHOLDER.pdf. The file itself is not posted into Discord. Open it from the dashboard after you sign in.
- Footer and time: Formgong, then the time in the owner timezone, plus a timestamp.
- Mentions:
allowed_mentionshas an empty parse list.@everyone,@hereand@channelare also broken before send. A visitor cannot ping the channel. You cannot turn that ping on.
Links in visitor text are escaped, so a visitor cannot hide a link behind other words. If many fields do not fit, the message says how many more there are and points at the dashboard.
Limits for a form to Discord
A Discord URL is a webhook. It counts toward the webhook limit. On Free, one form gets Discord or Slack or one other webhook, plus Telegram. Pricing lists the plans.
| Limit | What applies |
|---|---|
| Embed fields | Up to 25, then a note for the rest |
| Each value | Cut at 1,000 characters |
| Title, description, total | 256, 4,096 and 6,000 characters |
| Files in the message | Names only. Up to 3 files, 5 MiB each, 10 MiB per submission |
| File storage | Free 100 MiB, Pro 1 GiB, Business 5 GiB. Uploads need Turnstile |
| Webhooks per form | Free 1. Pro and Business 5. 300, 5,000 and 25,000 submissions a month |
| Formgong rate | 30 submissions a minute per form, and 20 a minute per IP |
| Discord rate | Discord may answer 429. We do not read Retry-After |
| Retries | 5 attempts. Waits of 30 seconds, 2 minutes, 10 minutes and 30 minutes |
| URL | HTTPS, port 443, no password in the URL, public host, at most 2,048 characters |
Delivery is queued. Each attempt waits at most 10 seconds. Redirects are not followed. The last attempt is about 42 minutes after the first. The waits are fixed. Discord rate limits say a sender should wait for Retry-After. Formgong does not read that header.
If nothing arrives in Discord
Open Form settings, Webhook, then Recent deliveries. A failed row includes a short error from Discord. Start there.
- Wrong URL type: a Slack workflow link will not match. A Discord URL that ends in
/githubgets raw JSON. One that ends in/slackis sent in Slack format. Paste the normal channel URL. - Forum or media channel: Discord requires
thread_nameor a thread id. We do not send either. Create the webhook on a text channel. - 404 Unknown Webhook: the webhook was deleted. Remove that URL in Formgong. Discord asks senders not to keep calling a webhook that answers 404. Formgong still uses its normal 5 tries, then stops.
- 429: Discord is rate-limiting the webhook. The retries cover a short burst. They are not timed from the Retry-After header.
- Nothing in the log: the submission was spam or held. Check the inbox. Held and spam rows are not delivered.
- Alert email: after the fifth failure, the owner gets an email. That email is at most once a day per form and channel, on every plan including Free, and it is not the daily digest. The submission stays in the Formgong inbox.
The request still carries X-Formgong-Event and X-Signature. Discord ignores the signature. You do not need to check it for this setup. The webhook reference explains the signature for a JSON receiver.
Want the raw JSON instead?
Point the webhook at any other HTTPS URL and Formgong sends the signed JSON. Use that when you want your own Discord webhook JSON format, or a relay you already run.
- Webhook reference for the body, the headers and the signature check.
- Make, n8n and Zapier if the next step is a spreadsheet, a CRM or another app.
- Website form to Slack if the team reads Slack instead. Same paste-a-URL setup, different message shape.
One URL is one channel. You cannot pick a Discord channel per submission. Field rules can choose an email recipient or a Telegram chat. They do not choose a chat webhook. On Pro and Business you can add up to 5 webhook URLs, each for its own channel.
Questions
Is a form to Discord free?
Yes. The Free plan includes it. A Free form has one webhook, so you pick Discord, Slack, or one other webhook. Telegram is extra and instant. Email on Free is a next-morning daily digest at 08:00 in your timezone.
Do I need a Discord form submission bot?
No. You do not install a bot, and you do not write a submit form Discord script. Paste the channel webhook URL. Formgong posts the embed.
Can I send one form to several Discord channels?
Not on Free. Free has one webhook per form. Pro and Business allow 5 webhook URLs per form. Each URL is one channel. Add a second URL for a second channel.
Are files uploaded to Discord?
No. The embed lists file names only. The files stay in Formgong. Open them from the dashboard after you sign in. A generic JSON webhook can carry owner-only links. The Discord message does not.
Can a visitor ping @everyone from the form?
No. @everyone, @here and @channel are defused, and Discord is told not to parse mentions. A visitor cannot ping the channel. You cannot switch that on.
What if Discord is down?
Formgong tries 5 times over about 42 minutes. Each try is listed under Recent deliveries, with Discord error text when there is some. If the last try fails, you get an alert email. That email is at most once a day per form and channel, on every plan including Free, and it is not the daily digest. The submission stays in your inbox.
Does this work with Google Forms?
No. This page is for a form on your own website. Google Forms needs Apps Script. Formgong does not connect to Google Forms.
Sources
Checked on 06.10.2026 against these public pages: Discord: Webhook resource, Discord Support: Intro to Webhooks, Discord: Rate limits, Formgong webhook reference, Formgong pricing.