π² WhatsApp (Twilio)
Have ComfyUI text your WhatsApp when the render's done
- img
- IMAGE
Discord pings are great until you're away from the desk with phone notifications muted - which is exactly when your 40-minute render finally finishes. WhatsAppNotifyNodeTwilio texts you instead. Same idea as its sibling DiscordNotifyNode in the Notification Bridge pack (INuBq8/ComfyUI-NotificationBridge), but the side effect is a real WhatsApp message sent through Twilio's API. The node itself is trivial; the Twilio account setup in front of it is the part that'll cost you an afternoon.
How it works
It's a bridge node, same pattern as the Discord one: [VAE Decode] β [π² WhatsApp (Twilio)] β [Save Image]. The img input passes straight through untouched, and as a side effect it builds a Twilio client and calls client.messages.create(from_=from_number, body=message, to=to_number). On success it prints the Twilio message SID to the console. Nothing is generated - the image you save is byte-for-byte the image you fed in.
The inputs that matter
Six required inputs, all strings. The two you configure once and forget:
sidandtoken- your Twilio Account SID and Auth Token from the Twilio console. The node actually validates these: it refuses to send if any field is blank or still contains the word "Twilio", which means the placeholder defaults can't silently go out.from_number- leave it as the defaultwhatsapp:+14155238886. That's Twilio's shared sandbox number.to_number- your own WhatsApp number in full international format, e.g.whatsapp:+15551234567. This is the one you'll change.img- the image bridge input, flows through.message- defaults to"β Workflow completed!". Text only - no image is attached to the WhatsApp message, same as the Discord node.
The output is a single IMAGE, wired into Save Image.
Installing it
Same as any custom node - search Notification Bridge in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/INuBq8/ComfyUI-NotificationBridge
The pack's requirements.txt is literally just twilio, which ComfyUI installs automatically on startup. If it ever didn't, pip install twilio in your venv fixes it. No models, no heavy deps.
The fiddly part: Twilio sandbox onboarding
The node is 60 lines. The account setup is the real work. People genuinely bounce off this - in the "ComfyUI in WhatsApp" thread on r/comfyui, one user building something similar said they "gave up configuring Twilio" and switched to Telegram. If you're in a hurry and just want a phone ping, that's a fair warning.
The steps: create a free Twilio account (you get trial credit), grab the SID and Auth Token from the console, enable the WhatsApp Sandbox, and - the easy-to-miss one - the recipient number has to send the sandbox's join code to whatsapp:+14155238886 before it can receive messages. Do that from your phone first, or nothing you send will arrive. Trial credit also means the sandbox only talks to verified numbers.
Where people get burned
- Quiet failures again. Errors are caught, printed to the ComfyUI console, and the image still flows. Message never arrives? Read the console - Twilio will tell you if the number isn't verified or the auth failed.
- Your credentials are in the workflow. The SID and token live in the node's input fields, which get embedded in the PNG's workflow metadata. Sharing that image publicly hands out your Twilio credentials. This is an account key, not a channel webhook - rotate them before you share anything.
- It's not free forever. Trial credit is fine for testing; real use charges a fraction of a cent per message.
Set it up once, and "workflow complete" becomes a thing your phone tells you, not something you check on.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| img | IMAGE | β | |
| message | STRING | β Workflow completed! | β |
| sid | STRING | Your Twilio SID here | β |
| token | STRING | Your Twilio Auth Token | β |
| from_number | STRING | whatsapp:+14155238886 | β |
| to_number | STRING | whatsapp:+YOUR_PHONE_NUMBER | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |