Skip to content

whatsapp-sender

WhatsApp sender — one send, policy-checked, never duplicated

Sends text, a quote-reply, an attachment, a reaction, or edits/deletes our own message, after applying the subscription’s responsePolicy (draft, approval, auto, none). Reports sent, failed or uncertain, and never resends an uncertain send.

Source templates/whatsapp-sender/workflow.yaml
Category debugging-ops
Trigger called by other workflows · manual (wfx run)
Steps 5
Human approval before approve
Providers named default (WFX_DEFAULT_PROVIDER)
Terminal window
wfx templates whatsapp-sender
wfx new whatsapp-sender --as my-whatsapp-sender
wfx dryrun my-whatsapp-sender

Sends one WhatsApp message (text, reply, attachment, reaction, edit or delete) after applying the response policy: draft stores it, approval waits for a person, auto sends, none skips. Answers sent, failed or uncertain; an uncertain send is never repeated.

  • the server’s default channel (channels.default / WFX_DEFAULT_CHANNEL) must be the WhatsApp channel — every op goes through it, so its sendGap and echo ledger apply
  • an attachment path must be inside this run’s workspace (the send step refuses anything else)
Input Type Default Required Meaning
chat string yes
text string
replyTo string
replyToSender string
mentions string
media string
mediaKind string "file"
reaction string
reactTo string
edit string
delete string
responsePolicy string "auto"
key string
# Step Kind Skills Gates
1 plan
Apply the response policy
shell (run:) exitCode = 2 → fail
2 policy
Does a person approve first?
shell (run:)
3 approve
A person approves this send
shell (run:) human approval first
4 send
Send on the channel
agent
5 deliver
Report the result
shell (run:)
  • approve waits for wfx approve <run-id> (or wfx reject <run-id> -m "why") before it runs.