🪟
Show Pop-up Form
ui.modalThe Control PanelControlsOpens a pop-up form built from the Add Form Field pieces before it. This has to be the very first thing a flow does — Discord won't show a form after the bot has already replied, so don't put a Reply, a Wait, or any slow piece ahead of it. Catch the answers with a Form Submitted trigger.
When to use this
- →Put every Add Form Field piece before this one
- →Nothing may reply before it — no Reply, no Embed, no Wait
- →You can open a form from a button click too, not just a slash command
On the canvas
This is what Show Pop-up Form looks like when you place it on your flow. Each field below is something you configure in the inspector panel.
🪟Controls
Show Pop-up Form
ui.modaltitlerequired
Apply to join
customIdrequired
apply — your Form Submitted trigger listens for this
output
error
Config fields
| Field | Type | Req | What it does |
|---|---|---|---|
titleApply to join | text | yes | Form title 🪟 |
customIdapply — your Form Submitted trigger listens for this | text | yes | Custom id 🏷️ |
Output ports
outputThe form is open on their screen
errorNo fields staged, or something already replied
📐
In TypeScript, this would be…
Not something you need to write — just a look at what Kitcord does for you.
TypeScript
const modal = new ModalBuilder()
.setCustomId("apply")
.setTitle("Apply to join")
.addComponents(...fieldRows);
// Must be the FIRST response — you cannot show a modal after
// interaction.reply() or interaction.deferReply()
await interaction.showModal(modal);More Controls pieces