Nodes/Bubba Nodes/Bubba Discord Webhook
ComfyUI Node

Bubba Discord Webhook

Send your ComfyUI output to Discord, no API key required

By bubbafett5611·Created 5 months ago·Updated 2 months ago· 0
Bubba Discord Webhook
  • pipe
  • images
  • metadata
  • pipe
  • metadata
  • info
enabledfalse
webhook_profiledefault
message
include_embedtrue
include_positive_prompttrue
include_negative_promptfalse
include_generation_infotrue
include_lorastrue
image_formatPNG

The name might make you picture API keys and OAuth, but the name is a lie in the best way: this node needs no bot, no token, no API key. It uses a Discord webhook - which is just a URL that accepts messages - so the setup is: create a webhook on your server, paste the URL into ComfyUI settings once, and Bubba Discord Webhook will post your generated images to that channel automatically when a workflow finishes, with a metadata embed attached.

The workflow value is obvious if you've ever watched a long batch render: you don't have to sit and watch. Set enabled to true, queue a hundred images, and check Discord instead of the ComfyUI window. It also means the finished images land somewhere you can actually browse them, and if you're generating unattended on a remote box, Discord is the zero-extra-infrastructure notification channel.

What you set up once

Open ComfyUI settings and find Bubba: Discord Webhook Profiles. Create a profile name (like "my-server") and paste its webhook URL. This part is deliberately private: the URLs live under the ComfyUI user directory and are never returned to the browser or written into your workflow JSON. That's the privacy detail that matters if you ever share a workflow - your webhook URL won't leak inside it, and someone importing your graph can't grab your channel's address from the metadata.

On the node itself, webhook_profile just names which saved profile to use. Then the toggles: enabled (send automatically at the end of a run), include_embed (the metadata panel), and the content selectors - include_positive_prompt, include_negative_prompt (off by default, which is good hygiene if you don't want the negative prompt on your server), include_generation_info, include_loras. image_format is PNG or JPEG; JPEG if you're flooding a channel and care about size, PNG if you want the image to carry its embedded Bubba metadata.

The two buttons that make it feel alive

The genuinely clever bit is the manual side. Because webhooks send now rather than when the graph runs, the node stages the captured image batch locally, and two node-level controls operate outside the queue:

  • Send Latest Now - delivers the most recently captured batch without re-running the workflow. You queued a render at 3am, saw the images in the morning, and want them on Discord without burning another generation? That's this button.
  • Clear Captured Images - wipes the staged batch.

So the pattern is: leave enabled off, let a batch stage images, review on your own time, then push the ones you actually want. Automatic when you want it, manual when you don't, and either way the node keeps your generation running - webhook failures surface on the node without failing the completed generation. Big batches get split across messages, and prompt fields get truncated to Discord's field limits, which is a good thing: it means a 4,000-token prompt won't make Discord reject the whole embed.

Install

This is one node in the Bubba Nodes pack:

cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/Bubba_Nodes

or ComfyUI Manager → search "Bubba Nodes", then restart. Needs ComfyUI 0.27.0+ and the pack's aiohttp + pydantic requirements - aiohttp is what actually performs the webhook HTTP calls. No Discord-side package, no model downloads.

One thing to check when it "doesn't send": the profile name is case-sensitive and must match exactly what you saved in settings, and if you've never created a profile, webhook_profile's default of default points at nothing. Create the profile first, then wire the node. And remember enabled defaults to false - the most common "why didn't it post" is that it was never turned on.

CategoryBubba Nodes/Image/Send

Inputs (12)

NameTypeDefaultDescription
enabledBOOLEANfalse
webhook_profileSTRINGdefault
messageSTRING
include_embedBOOLEANtrue
include_positive_promptBOOLEANtrue
include_negative_promptBOOLEANfalse
include_generation_infoBOOLEANtrue
include_lorasBOOLEANtrue
image_formatCOMBOPNG2 options: PNG, JPEG
pipeoptBUBBA_PIPE
imagesoptIMAGE
metadataoptBUBBA_METADATA

Outputs (3)

NameTypeDescription
pipeBUBBA_PIPE
metadataBUBBA_METADATA
infoSTRING