Use chat-notifyer when you want an agent to operate active WhatsApp conversations (similar to chat.notifyer-systems.com) via scripts.
Prerequisites
- You have a valid JWT in
NOTIFYER_API_TOKEN (from setup-notifyer/scripts/login.js)
- WhatsApp connection is active (verify with
setup-notifyer/scripts/get-connection-status.js)
Auth mode difference (don’t miss this)
Chat endpoints use raw JWT auth: Authorization: <jwt> (no Bearer prefix). Console endpoints use Authorization: Bearer <jwt>.
The shared client handles this automatically. See Auth & environment.
The 24-hour window rule (critical)
WhatsApp allows free text and attachments only within 24 hours of a user’s last inbound message.
| Window | Allowed |
|---|
| Open | Text ✓, Template ✓, Attachment ✓ |
| Closed | Template only ✓ |
Check window state:
node scripts/get-recipient.js --phone 14155550123 --pretty
send-text.js enforces this automatically and will refuse if the window is closed.
Common workflows
List/search recipients
node scripts/list-recipients.js --pretty
node scripts/list-recipients.js --search "John" --pretty
node scripts/list-recipients.js --status unread --pretty
Filter recipients by label
node scripts/filter-recipients-by-label.js --labels "Support" --status unread --pretty
Send a text message
node scripts/send-text.js --phone 14155550123 --text "Hello! How can I help?"
Send a template message (works any time)
node scripts/send-template.js --list
node scripts/send-template.js --phone 14155550123 --name order_confirm \
--variables '{"body1":"John","body2":"#12345"}'
node scripts/send-template.js --phone 14155550123 --name order_confirm --dry-run
Send an attachment
node scripts/send-attachment.js --phone 14155550123 --file ./invoice.pdf --pretty
node scripts/send-attachment.js --phone 14155550123 --file ./photo.jpg --caption "Your order photo"
Schedule a send
node scripts/send-template.js --phone 14155550123 --name order_confirm --schedule "25/01/2025 14:00"
node scripts/list-scheduled.js --pretty
node scripts/delete-scheduled.js --id 7 --confirm
Labels (assign/remove)
node scripts/assign-label.js --phone 14155550123 --label "Support" --pretty
node scripts/remove-label.js --phone 14155550123 --label "Support" --pretty
Labels must exist first (create via setup-notifyer/create-label.js).
AI ↔ Human handoff
node scripts/set-handoff.js --phone 14155550123 --mode human --pretty
node scripts/set-handoff.js --phone 14155550123 --mode bot --pretty
Assign a specific bot:
node scripts/list-bots.js --pretty
node scripts/assign-bot.js --phone 14155550123 --bot-id 5 --pretty
Conversation + notes
node scripts/get-conversation.js --phone 14155550123 --pretty
node scripts/get-conversation-log.js --phone 14155550123 --pretty
node scripts/get-notes.js --phone 14155550123 --pretty
node scripts/add-note.js --phone 14155550123 --append "Requested callback on 15 Feb"
get-conversation.js returns the full thread (sent + received). get-conversation-log.js is outbound-only delivery history.
Next