Discord · Webhooks

How to Send Google Forms Responses to Discord

Post every Google Forms submission to a Discord channel with a webhook, either as a plain message or a rich embed, without Zapier or code.

By · Makers of Slacify · · 2 min read

Community servers run on Discord, and a lot of them collect sign-ups, applications and feedback with Google Forms. Here’s how to post each response straight into a Discord channel.

Step 1: Create a Discord webhook

  1. In Discord, open Server Settings → Integrations → Webhooks (you need the Manage Webhooks permission).
  2. Click New Webhook, give it a name and avatar, and choose the channel.
  3. Click Copy Webhook URL. It looks like https://discord.com/api/webhooks/1234…/abcd….

Step 2: Choose a payload

Discord expects its own JSON format, so in Slacify switch the notification’s payload to Custom JSON (Standard and Business plans). The simplest body is a single message:

{
  "content": "📋 New application from **{{Name}}** ({{Discord username}})"
}

Discord uses real Markdown, so bold is **double asterisks**, unlike Slack. The content field holds up to 2,000 characters.

A rich embed

Embeds give you a coloured sidebar, a title and a longer description (up to 4,096 characters), which is ideal for {{All Answers}}:

{
  "username": "Form alerts",
  "embeds": [{
    "title": "New response to {{Form Name}}",
    "url": "{{Response Link}}",
    "color": 6364041,
    "description": "{{All Answers}}"
  }]
}

Free-plan shortcut: Discord’s Slack-compatible endpoint

Discord also accepts Slack-formatted messages if you add /slack to the end of the webhook URL. That means a regular Slack message notification works with Discord too: paste https://discord.com/api/webhooks/…/…/slack as the webhook URL and write the message as usual. Formatting follows Slack’s rules in that mode.

Mentioning people and roles

Discord mentions use IDs, not names. Turn on Developer Mode (User Settings → Advanced), then right-click a user or role and choose Copy ID.

  • A person: <@USER_ID>
  • A role, such as moderators: <@&ROLE_ID>
  • Everyone: @everyone. Only use this for truly urgent forms.

Webhooks can ping these by default. To stop a respondent’s answer from triggering a mention, add an allowed_mentions object that lists only the mentions you wrote yourself, for example "allowed_mentions": { "roles": ["ROLE_ID"] }.

Common Discord errors

  • 400 Bad Request: the JSON parsed but isn’t a valid Discord message. Common causes are a message with neither content nor embeds, or an embed field over its length limit.
  • 401 or 404 Unknown Webhook: the webhook was deleted or the URL was copied incompletely. Create a new one and paste the full URL.
  • 429 Too Many Requests: Discord rate-limits webhooks. A form receiving many responses per second can hit it; the delivery status in the sidebar shows when it happens.

Step 3: Test and save

Click Send test. If Discord replies with an error, the sidebar shows it; a 400 usually means the JSON is valid but not in the shape Discord expects. Once the test looks right, save. New responses post automatically. The rest of the setup is identical to our Slack guide.

Send Google Forms responses to Slack

Custom messages with the answers built in, posted seconds after someone hits Submit. Free 7-day trial.

You may also like

See all posts →