Nodes/UploadToPushOver/Send To PushOver
ComfyUI Node

Send To PushOver

Ding your phone when ComfyUI finishes a render — Send To PushOver

By MijnSpam·Created about a year ago·Updated about a year ago· 4
Send To PushOver
  • connect_anything
  • images
  • *
webhook_urlhttps://api.pushover.net/1/messages.json
titleComfy push title
priority0
sound
attach_imagetrue
prompt_idWill be your pushover message, when empty: Workflow ready
tokenenter your application key
userenter user or group key
use_stored_credentialsfalse

You've been here: a 200-image batch, an upscale pass that takes forty minutes, and you can't just sit and watch the progress bar. Send To PushOver (class UploadToPushOver) is the node that pings your phone the moment the render finishes - and optionally mails you the output image along with it. It posts straight to Pushover, the old-school push notification service that's been reliably buzzing phones since long before anyone on this subreddit was born. No Discord server to set up, no self-hosted webhook endpoint to babysit, no API key beyond the app token Pushover gives you in two minutes.

It's a small, honest utility node from MijnSpam, built as a fork of Jerryswap's UploadToWebhook. There's nothing clever hiding in here, and that's the appeal. If you've ever wished ComfyUI had a "nudge me when it's done" button, this is the closest thing that ships.

How it works

The mechanism is embarrassingly simple, which is why it's dependable. When the node runs, it builds a little form payload - token, user, title, priority, sound, and your message - and does a requests.post to Pushover's API. That's it. No polling, no websocket, no server. If you've connected an image to the images input, it saves the tensor to a temp PNG, base64-encodes it, and tacks it on as attachment_base64.

There's no connect_anything type-checking trickery either - it's a wildcard input that accepts any output, purely so you can hang the node off whatever completes last (VAE Decode, a save node, anything) and let the graph order do the work. That's the same "accept anything" pattern the ecosystem uses all over, and it's why the node has zero interest in what you wire in.

The inputs that matter

Most fields have sensible defaults, so you really only touch these:

  • token - your Pushover application token. Create an app on pushover.net, copy the key, paste it in.
  • user - your user key, or a group key if you want to notify a whole delivery group instead of one device.
  • prompt_id - the actual message body. Leave it empty and you get "Workflow ready"; fill it with your prompt or a note for something useful.
  • images - connect an IMAGE output here if you want the render attached. This is optional since v1.2.
  • priority and sound - Pushover's real priority scale (−2 emergency override up to 2) and its selection of 23 notification sounds. The defaults (0, "pushover") are fine.

webhook_url already points at Pushover's endpoint - don't touch it unless you're proxying. And since v1.2 you can flip use_stored_credentials to read apptoken/usertoken from a .env file next to the node, so you're not pasting keys into every workflow.

The single output is a wildcard that just returns the string "Uploading Completed" - it's an output node, so don't expect to wire anything useful off it.

Installing it

ComfyUI Manager is the easy route: search for "UploadToPushOver" (the pack is MijnSpam/ComfyUI_UploadToWebhookPushOver). Or clone it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/MijnSpam/ComfyUI_UploadToWebhookPushOver.git
cd ComfyUI_UploadToWebhookPushOver
bash install.sh

Then restart ComfyUI and refresh your browser. Dependencies are numpy, requests, and Pillow - all three are already in a stock ComfyUI environment, so this is one of the rare custom nodes that installs without pulling in a pile of conflicting packages. Note the README's own warning: install.sh can bail out complaining about the pip environment on some setups, and that's usually fine since the packages are already there.

Where people get burned

The big one is batching: only a single image gets attached. The code checks len(images) == 1 - feed it a whole batch and it silently sends the notification with no picture, not one per image. That's by design (videos aren't supported either), but it's the thing that surprises people the first time they wire up a batch workflow. If you want every frame on your phone, you'll need to process one at a time or add your own loop.

Also remember Pushover's attachment cap is 5 MB, and base64 inflates images by about a third on the wire - so that 4K PNG will bounce, and you'll only see the failure in the ComfyUI console where the node prints the response code. Not a node bug; just physics.

The one real trap from the v1.2 update: connect_anything became mandatory and images became optional. Old v1.0.x workflows break if you don't re-add the node, so after a Manager update, re-drop it into your graph.

CategoryNotification

Inputs (11)

NameTypeDefaultDescription
connect_anything*
webhook_urlSTRINGhttps://api.pushover.net/1/messages.json
titleSTRINGComfy push title
priorityINT0
soundCOMBO23 options: pushover, bike, bugle, cashregister, classical, cosmic, +17
attach_imageBOOLEANtrue
prompt_idSTRINGWill be your pushover message, when empty: Workflow ready
imagesoptIMAGE
tokenoptSTRINGenter your application key
useroptSTRINGenter user or group key
use_stored_credentialsoptBOOLEANfalse

Outputs (1)

NameTypeDescription
**