whatsapp @ 0.2.6
WhatsApp (Baileys) integration. Link a personal/business account via QR; receive messages + send replies.
Publisher / author
tupiflow
Type
whatsapp
Signing key
kid-20260520-e5fe9257
Bundle
Download signed bundle
verifies against kid-20260520-e5fe9257
Signed manifest (spec)
Byte-for-byte signed payload. Hash with RFC 8785 canonical JSON, verify the Ed25519 signature against the public key for kid-20260520-e5fe9257.
{
"icon": {
"kind": "svg",
"path": "icon.svg"
},
"bundle": {
"sha256": "85fd2d2b927ee6ad6c1eb9f38b4298dca527890984b9bb49a01091fe2e40eea4",
"sizeBytes": 39777
},
"routes": [
{
"path": "/qr/:integrationId",
"method": "GET",
"handlerExport": "whatsappQrHandler"
},
{
"path": "/reset/:integrationId",
"method": "POST",
"handlerExport": "whatsappResetHandler"
}
],
"actions": [
{
"slug": "send-reply",
"label": "Send WhatsApp Reply",
"category": "WhatsApp",
"description": "Reply to the incoming WhatsApp thread",
"configFields": [
{
"key": "text",
"type": "template-textarea",
"label": "Reply Text",
"example": "Hello from my workflow!",
"required": true
},
{
"key": "chatId",
"type": "template-input",
"label": "Chat ID (fallback)"
},
{
"key": "splitBubbles",
"type": "select",
"label": "Split into multiple bubbles"
},
{
"key": "bubbleDelayMs",
"type": "number",
"label": "Delay between bubbles (ms)"
}
],
"outputFields": [
{
"field": "messageId",
"description": "ID of the last posted message (final bubble)"
},
{
"field": "messageIds",
"description": "IDs of every posted message in order. Length matches bubbleCount."
},
{
"field": "bubbleCount",
"description": "How many WhatsApp messages were posted (1 unless splitBubbles is on)"
},
{
"field": "threadId",
"description": "ID of the thread replied to"
}
],
"stepFunction": "whatsappSendReplyStep"
}
],
"runtime": {
"minTupiflowVersion": "0.0.0"
},
"workers": [
{
"id": "whatsapp-qr-encode",
"entry": "workers/whatsapp-qr-encode.mjs",
"timeoutMs": 5000,
"memLimitMb": 128
}
],
"identity": {
"name": "whatsapp",
"type": "whatsapp",
"version": "0.2.6",
"publisher": "tupiflow",
"description": "WhatsApp (Baileys) integration. Link a personal/business account via QR; receive messages + send replies."
},
"connection": {
"triggerIcon": "MessageCircle",
"triggerType": "Chat Message",
"triggerLabel": "WhatsApp Message",
"triggerInputFields": [
{
"field": "text",
"description": "Text of the incoming message"
},
{
"field": "integrationId",
"description": "WhatsApp integration ID"
},
{
"field": "threadId",
"description": "WhatsApp thread ID"
},
{
"field": "channelId",
"description": "WhatsApp channel (JID)"
},
{
"field": "userName",
"description": "Sender's display name"
},
{
"field": "isDM",
"description": "True if the message is a 1:1 DM"
},
{
"field": "isMention",
"description": "True if the bot was @-mentioned"
},
{
"field": "threadJson",
"description": "Serialized thread for replies"
},
{
"field": "imageUrls",
"description": "Image attachments from the message (data URLs)"
},
{
"field": "fileUrls",
"description": "Document/file attachments from the message (data URLs, excludes images/audio/video)"
},
{
"field": "audioUrls",
"description": "Audio attachments from the message (voice notes, audio files; data URLs)"
},
{
"field": "videoUrls",
"description": "Video attachments from the message (mp4, webm, mov; data URLs). Requires a model that supports video input (e.g. Gemini)."
}
],
"supportsAttachments": true
},
"entrypoint": "bundle.mjs",
"credentials": [],
"capabilities": [
"net.fetch",
"secrets.read",
"connection.lifecycle",
"workflow.dispatch",
"integration.test",
"chat.takeover.read",
"chat.history.write",
"telemetry.write",
"worker.run",
"route.context.user",
"db.read",
"storage.read",
"storage.write"
],
"requiredNpmDeps": {
"chat": "^4.26.0",
"baileys": "7.0.0-rc13",
"chat-adapter-baileys": "2.1.0-beta.3"
},
"requiresHostRestart": true,
"integrationRowActions": [
{
"icon": "QrCode",
"label": "QR / status",
"bundleEntry": "frontend/qr-overlay.mjs",
"componentExport": "WhatsappQrOverlay"
}
]
} Signature
wGorsdXN+UIWPyPYB7VdUqlHybDUDr5GijlhSYhvfAgt2YnmLcBxdozHNJhtCo0vdu9/ViV0vcg95803L70wBw==