DWEEB
✅ Welcome Member Origin Role setup required

Discord Verification Gate Template

Gate your server behind a single verify button, powered by the RoleLogic Member Origin Role service. New members tap it, verify in the browser, and get their origin role automatically — while admins track who verified from a dashboard linked right in the message. The button is a plain link, so it posts through any webhook and never expires.

Preview
VerificationAPP

✅ One last step

Click the button below to verify you're human and unlock the rest of the server.


By verifying you confirm you've read and agree to the #rules. Welcome aboard! 🎉

✅ Verify me

🛡️ Admins: review verified members in the RoleLogic dashboard.

Copy and paste the Discord Verification Gate text

This is the template's text as Discord markdown. Paste it into any channel and the headings, bold text, lists and subtext format exactly as they do in the preview; the card, buttons and menus come with the full template when you open it in DWEEB. Words in {braces} are DWEEB placeholders that fill in when you send from DWEEB — replace them by hand if you paste the text yourself. The Discord text formatting guide explains every piece of syntax it uses.

# ✅ One last step
Click the button below to verify you're human and unlock the rest of the server.

By verifying you confirm you've read and agree to the **#rules**. Welcome aboard! 🎉

-# 🛡️ Admins: review verified members in the [RoleLogic dashboard](https://plugin-rolelogic.faizo.net/member-origin-role/members/{server_id}).

When to use it

  • Adding a human check before granting access
  • Granting roles based on where members joined from
  • Running a lightweight alternative to a captcha bot

What's inside

Built with Discord's Components V2 layout system — the accent-striped card the Discord embed builder produces in place of a legacy embed:

  • Container with accent stripe
  • Formatted text
  • Separator
  • Buttons

Tips

  • Post it in a channel new members can see before they have any role, and hide the rest of the server from @everyone so the verified role is what opens it up.
  • Keep the message to one instruction and one button. Every extra sentence is one more thing a new member has to read before they can join in.
  • Every piece of text, colour, emoji and link is editable — open it in DWEEB and make it yours.
  • The message posts through any Discord webhook, but its Member Origin Role link only works after that service is configured for your server. DWEEB opens the required setup step when you choose the template.
  • Use the measured, high-fidelity preview to check the layout before you send.

How to use this template

  1. Open it in DWEEB. Click “Use this template free” to load the template into the visual editor — no sign-up, no install.
  2. Make it yours. Edit the text, colours, emoji, links and images to match your server. The live preview updates as you type.
  3. Finish the linked-service setup. Configure Member Origin Role for your server when DWEEB opens its setup step, then choose any Discord webhook as the destination.
  4. Send it. Review the live preview, then hit Send. You can also save it, share it as a link, schedule it, or export the message JSON.

Template JSON and compatibility

This example contains 2 top-level blocks and 7 components including nested blocks. Its text fields use 346 characters of the editor's message budget. The JSON below is exported from the same template that opens in DWEEB.

Import it through DWEEB's JSON panel, or adapt it for your own application. This is a Components V2 payload with flags: 32768, not a legacy embeds array. When executing a webhook yourself, include with_components=true in the request URL. See the Components V2 JSON reference for delivery requirements.

The link buttons depend on the linked service's server setup. Importing the JSON copies the layout and links; it does not configure that service.

Replace example text, images, links and any server placeholders before posting. Discord does not expand DWEEB placeholders when you send raw JSON from your own code. Review allowed mentions before sending text that names users or roles.

Download Discord Verification Gate JSON

View the complete template JSON
{
  "username": "Verification",
  "components": [
    {
      "type": 17,
      "accent_color": 5763719,
      "components": [
        {
          "type": 10,
          "content": "# ✅ One last step\nClick the button below to verify you're human and unlock the rest of the server."
        },
        {
          "type": 14,
          "divider": true,
          "spacing": 1
        },
        {
          "type": 10,
          "content": "By verifying you confirm you've read and agree to the **#rules**. Welcome aboard! 🎉"
        },
        {
          "type": 1,
          "components": [
            {
              "type": 2,
              "style": 5,
              "label": "Verify me",
              "emoji": {
                "name": "✅"
              },
              "url": "https://plugin-rolelogic.faizo.net/member-origin-role/verify?guild={server_id}"
            }
          ]
        }
      ]
    },
    {
      "type": 10,
      "content": "-# 🛡️ Admins: review verified members in the [RoleLogic dashboard](https://plugin-rolelogic.faizo.net/member-origin-role/members/{server_id})."
    }
  ],
  "flags": 32768
}

Use this template in a bot

The same message as a discord.js or discord.py bot sends it. Both are generated from the template above by DWEEB's code generator; for a cURL, JavaScript or Python webhook request, open the template with the Code tab.

discord.js code
// Components V2 message — discord.js v14.19 or newer.
// Designed in DWEEB (https://dweeb.faizo.net). Edit the text, then send.
const {
  ActionRowBuilder,
  ButtonBuilder,
  ButtonStyle,
  ContainerBuilder,
  MessageFlags,
  SeparatorBuilder,
  SeparatorSpacingSize,
  TextDisplayBuilder,
} = require("discord.js");

const container = new ContainerBuilder()
  .setAccentColor(0x57f287)
  .addTextDisplayComponents(
    new TextDisplayBuilder().setContent(
      [
        "# ✅ One last step",
        "Click the button below to verify you're human and unlock the rest of the server.",
      ].join("\n"),
    ),
  )
  .addSeparatorComponents(
    new SeparatorBuilder().setDivider(true).setSpacing(SeparatorSpacingSize.Small),
  )
  .addTextDisplayComponents(
    new TextDisplayBuilder().setContent(
      "By verifying you confirm you've read and agree to the **#rules**. Welcome aboard! 🎉",
    ),
  )
  .addActionRowComponents(
    new ActionRowBuilder().addComponents(
      new ButtonBuilder()
        .setStyle(ButtonStyle.Link)
        .setLabel("Verify me")
        .setEmoji("✅")
        .setURL(
          "https://plugin-rolelogic.faizo.net/member-origin-role/verify?guild={server_id}",
        ),
    ),
  );

const text = new TextDisplayBuilder().setContent(
  "-# 🛡️ Admins: review verified members in the [RoleLogic dashboard](https://plugin-rolelogic.faizo.net/member-origin-role/members/{server_id}).",
);

// The design also sets username "Verification" — webhook-only options that
// channel.send() has no equivalent for. WebhookClient#send accepts them.

// Send it from any async context: a command handler, an event, a script.
await channel.send({
  components: [container, text],
  flags: MessageFlags.IsComponentsV2,
});
discord.py code
# Components V2 message — discord.py 2.6 or newer.
# Designed in DWEEB (https://dweeb.faizo.net). Edit the text, then send.
import discord
from discord import ui


def build_view() -> ui.LayoutView:
    view = ui.LayoutView(timeout=None)
    view.add_item(
        ui.Container(
            ui.TextDisplay(
                "# ✅ One last step\n"
                "Click the button below to verify you're human and unlock the rest of the server.",
            ),
            ui.Separator(visible=True, spacing=discord.SeparatorSpacing.small),
            ui.TextDisplay(
                "By verifying you confirm you've read and agree to the **#rules**. Welcome aboard! 🎉",
            ),
            ui.ActionRow(
                ui.Button(
                    style=discord.ButtonStyle.link,
                    label="Verify me",
                    emoji="✅",
                    url="https://plugin-rolelogic.faizo.net/member-origin-role/verify?guild={server_id}",
                ),
            ),
            accent_colour=0x57f287,
        ),
    )
    view.add_item(
        ui.TextDisplay(
            "-# 🛡️ Admins: review verified members in the [RoleLogic dashboard](https://plugin-rolelogic.faizo.net/member-origin-role/members/{server_id}).",
        ),
    )
    return view


# The design also sets username "Verification" — webhook-only options that
# channel.send() has no equivalent for. discord.Webhook.send accepts them.

# Send it from any coroutine: a command, an event listener, a task.
await channel.send(view=build_view())

Ready to use this template?

Open it in the visual Discord message builder, customize it for your server, and review the result before sending.

Use “Discord Verification Gate” →

Frequently asked questions

What should a Discord verification message say?

One instruction, what it unlocks, and the rules it agrees to. For example: “Click the button below to verify you're human and unlock the rest of the server. By verifying you confirm you've read and agree to the #rules.” That is the wording this template starts with; change it in DWEEB to match your server.

How does the verify button work?

It is a link button, so Discord simply opens it: the member verifies in the browser through RoleLogic's Member Origin Role service, which then gives them the role you configured. Because it is a link rather than a bot button, the message posts through any webhook and the button never expires.

Is this the same as Discord's verification level?

No. Discord's own verification level, in Server Settings under Safety Setup, only checks things such as a verified email or phone number before someone can talk. A verification message gates the server behind a role instead, so you decide what the check is and can see who passed it.

Can I make a verify button without RoleLogic?

Yes. A DWEEB Self Role button can grant a Verified role on click with no browser step: add a button, pair it with the Self Role plugin and choose the role (the DWEEB bot needs to be in your server to hand out roles). It is a simpler gate — one click rather than an external check.

Do I need a bot to use this template?

You can post the message through any webhook because its button is a normal link. The linked Member Origin Role must still be configured for your server before the action behind that link works.

How do I use this Verification gate template?

Click “Use this template free” to load it into the visual editor, change the text, colours and links to fit your server, then pick a channel or paste your Discord webhook URL and hit Send. You can also share it as a single link or export the message JSON.

Is DWEEB free?

Yes. DWEEB's full visual builder is free and needs no account. Working drafts and browser saves are local by default; optional connected features such as schedules, server libraries, AI, and plugins use the data required to work.

Read next

Related templates