Integration Tutorial

How to Connect Discord Forms to Form2Lead

Step-by-step developer instructions for Discord applications.

Last updated:
Direct Answer

How do you send Discord form submissions to Form2Lead?

Enable your form’s HMAC-signed outbound webhook and post it to a Discord channel webhook, mapping the submission JSON to Discord’s embeds-compatible format via Zapier, Make, n8n, or a small worker. Form2Lead has no native Discord bot — the webhook bridge delivers each lead to the channel within seconds.

Verified product capabilityRead documentation →

Why use Form2Lead with Discord?

Form2Lead ships no Discord bot, so delivery runs through a Discord channel webhook: Form2Lead POSTs signed JSON per valid submission, and Zapier, Make, n8n, or a minimal worker reshapes it into Discord’s `{ content }` plus embeds structure. Discord webhook URLs act as bearer tokens, so verifying Form2Lead’s HMAC signature in the worker means only authenticated submissions from your endpoint reach the channel — layered on the honeypot, IP rate limiting, and Allowed Domains locking upstream.

Prerequisites

  • ✔A Discord server where you can create a channel webhook
  • ✔A Form2Lead form with webhooks enabled
  • ✔A Zapier / Make / n8n account or a small worker (for the transform step)

Step-by-Step Integration Guide

01. Create a Discord Channel Webhook

In your server, go to Channel Settings → Integrations → Webhooks → New Webhook, choose the target channel, and copy the URL. Treat it as a secret — anyone with the URL can post to that channel.

02. Point Your Form2Lead Webhook at the Bridge

In your form’s settings, add the webhook URL of your intermediary (the Zapier / Make / n8n catch hook, or your own worker that forwards to the Discord URL). Form2Lead signs every payload with HMAC and retries delivery automatically with backoff.

03. Map the Payload to Discord’s Format

No-code: use a webhook trigger and map the JSON fields into the message or embed content. Code-first: use this minimal worker — and verify the HMAC signature header before trusting the body.

export default {
  async fetch(request, env) {
    if (request.method !== 'POST') return new Response('ok');
    // Verify Form2Lead's HMAC signature header before trusting the body.
    const s = JSON.parse(await request.text());
    await fetch(env.DISCORD_WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        content: 'New lead from ' + (s.name || 'anonymous'),
        embeds: [{
          title: 'Form submission received',
          fields: [
            { name: 'Email', value: s.email || '—', inline: true },
            { name: 'Message', value: (s.message || '—').slice(0, 1000) },
          ],
        }],
      }),
    });
    return new Response('forwarded');
  },
};

04. Test and Lock Down the Pipeline

Submit a test lead and confirm the embed renders in the channel. Keep the Discord URL secret, verify the HMAC signature in the transform step, and add your site origin to the form’s Allowed Domains.

Discord Integration FAQ

Direct Answer

Does Form2Lead have a native Discord integration?

No. Form2Lead delivers HMAC-signed webhooks with automatic retries; bridge the payload to Discord’s webhook format with Zapier, Make, n8n, or a small worker.

Direct Answer

Can I post form submissions to Discord without writing code?

Yes. Use a webhook trigger in Zapier, Make, or n8n and map the JSON fields into the message or embed content — the post lands within seconds of each submission.

Direct Answer

How do I keep bots from spamming my Discord channel?

Verify the HMAC signature in your transform step and keep the Discord URL secret; upstream, the honeypot, IP rate limiting, and Allowed Domains locking block automated submissions before the webhook fires.

Direct Answer

Can different forms post to different Discord channels?

Yes — webhook URLs are configured per form, so each form can target its own Discord channel and formatting.