⚡ Triggers
Triggers are Discord events that automatically fire your flows — no user interaction needed.
Triggers require a persistent Discord gateway connection, which only Full Bot mode opens. Bots in the default Interaction Only mode can save triggers, but they stay inactive until you switch. See Bot Modes for the full comparison and how to switch.
🔬What a trigger looks like
This is what a trigger card looks like in your bot's Triggers tab. Sparks listed on the card are available in every piece inside the linked flow.
guildMemberAdd{{input.guild.id}}Your Discord server's unique ID{{input.guild.name}}Your server's name{{input.guild.memberCount}}How many members are in the server{{member.id}}The new member's Discord ID{{member.username}}Their Discord username{{member.displayName}}Their nickname in this server, or username if none{{member.name}}Their username (alias for member.username){{member.joinedAt}}When they joined (ISO timestamp)// A Trigger is just a Discord event listener — Kitcord registers these for you:
client.on("guildMemberAdd", async (member) => {
const user = member.user; // → {{input.user.*}}
const guild = member.guild; // → {{input.guild.id}}
// your flow runs here
});
client.on("messageCreate", async (message) => {
if (message.author.bot) return; // filters: { ignoreBots: true }
const content = message.content; // → {{message.content}}
// your flow runs here
});
// Kitcord reads events[] from your Kit and calls client.on() for each one.🔔All Event Types
Click any event to see its full documentation — available sparks, filters, and TypeScript equivalent.
clientReadyFires once when the bot successfully connects to the Discord gateway.
{{id}}{{name}}+1guildMemberAddFires when a new member joins any server the bot is in.
{{id}}{{name}}+6guildMemberRemoveFires when a member leaves or is kicked from the server.
{{id}}{{name}}+5guildBanAddFires when a member is banned from a server.
{{id}}{{name}}+4guildBanRemoveFires when a member is unbanned.
{{id}}{{name}}+3messageCreateFires when a message is sent in a channel the bot can see.
{{id}}{{name}}+10messageDeleteFires when a message is deleted.
{{id}}{{name}}+7messageUpdateFires when a message is edited.
{{id}}{{name}}+9reactionAddFires when someone adds a reaction to a message.
{{id}}{{name}}+5reactionRemoveFires when someone removes a reaction from a message.
{{id}}{{name}}+5voiceStateUpdateFires when a member joins, leaves, or moves voice channels.
{{id}}{{name}}+5interactionCreateFires when a Discord interaction is received (slash commands use Spells instead).
{{id}}{{name}}+5🔧Filters
Some events support filters that narrow when the trigger fires.
messageCreate{{input.guild.id}}Your Discord server's unique ID{{input.guild.name}}Your server's name{{input.guild.memberCount}}How many members are in the server{{message.id}}The message's unique ID{{message.content}}The full text of the message{{message.channelId}}ID of the channel the message was sent in{{message.author.id}}Discord ID of who sent the message{{message.author.username}}Sender's Discord username{{message.author.displayName}}Sender's display name in this server (nickname or username){{message.author.name}}Sender's username (alias for message.author.username){{channel.id}}ID of the channel (same as message.channelId){{channel.name}}Name of the channelAlways turn on ignoreBots for messageCreate flows. Without it, your bot reacts to its own messages and can loop indefinitely.
🔀Multiple Triggers, One Flow
You can point multiple triggers at the same flow — useful for shared logic like logging both member joins and leaves to the same Vault table. Make sure both events provide the sparks your flow needs.