WhatsApp Business Automation by WhatsAble
v1.0.2Full three-phase agent skills suite for Notifyer by WhatsAble. Phase 1 (setup-notifyer): account signup, login, WhatsApp connection status, subscription plan...
Like a lobster shell, security has layers — review code before you run it.
Notifyer Agent Skills
Agent skills for Notifyer by WhatsAble — three phases that together cover the full platform: account setup, automation infrastructure, and live chat operations. Scripts are self-contained Node.js 18+ files with no external npm dependencies.
Source repository: https://github.com/Whatsable/whatsapp-business-agent-skills
Phase overview
| Phase | Skill folder | Coverage |
|---|---|---|
| 1 | skills/setup-notifyer | Account, login, WhatsApp connection, plans, team, labels, API key |
| 2 | skills/automate-notifyer | Templates, AI bots, broadcasts, analytics, webhooks |
| 3 | skills/chat-notifyer | Recipients, messaging, labels, handoff, scheduling, notes |
Each phase depends on the one before it. Obtain NOTIFYER_API_TOKEN from Phase 1
(skills/setup-notifyer/scripts/login.js) before using Phase 2 or Phase 3.
Environment variables
| Variable | Required | Description |
|---|---|---|
NOTIFYER_API_BASE_URL | yes | API base URL — use https://api.insightssystem.com |
NOTIFYER_API_TOKEN | yes | JWT token from setup-notifyer/scripts/login.js |
NOTIFYER_CHAT_ORIGIN | no | CORS Origin override for Phase 3 chat endpoints (default: https://chat.notifyer-systems.com) |
export NOTIFYER_API_BASE_URL="https://api.insightssystem.com"
export NOTIFYER_API_TOKEN="<jwt-from-login.js>"
NOTIFYER_API_BASE_URL must start with https:// — all three skill sets enforce this
at startup and exit immediately on a non-HTTPS value to prevent token exposure.
Authentication modes
| Mode | Header format | Used by |
|---|---|---|
| Console | Authorization: Bearer <token> | Phase 1, Phase 2, and most Phase 3 scripts |
| Chat | Authorization: <token> (no Bearer prefix) | Phase 3 chat endpoints, Phase 1 label endpoints |
| Developer | Authorization: <api_key> (no Bearer prefix) | External tools (Make / Zapier / n8n) via get-api-key.js |
The same JWT token (NOTIFYER_API_TOKEN) works for both Console and Chat modes.
notifyer-api.js selects the correct header format automatically per endpoint.
Phase 1 — setup-notifyer
Scripts live in skills/setup-notifyer/scripts/.
Start here. Login to get NOTIFYER_API_TOKEN, then verify the workspace is ready
with doctor.js before running Phase 2 or Phase 3 scripts.
Key commands
# Create a new account
node skills/setup-notifyer/scripts/create-account.js \
--name "Jane Smith" --email jane@company.com \
--password "Secure@123" --phone 14155550123
# Login and export the token
node skills/setup-notifyer/scripts/login.js \
--email jane@company.com --password "Secure@123"
export NOTIFYER_API_TOKEN="<authToken from above>"
# Pre-flight health check (validates URL, token, WhatsApp connection, plan)
node skills/setup-notifyer/scripts/doctor.js --pretty
# Check WhatsApp connection status
node skills/setup-notifyer/scripts/get-connection-status.js --pretty
# List team members
node skills/setup-notifyer/scripts/list-members.js --pretty
# List workspace labels
node skills/setup-notifyer/scripts/list-labels.js --pretty
# Retrieve Developer API key (for Make / Zapier / n8n)
node skills/setup-notifyer/scripts/get-api-key.js --pretty
For the full Phase 1 script reference see skills/setup-notifyer/SKILL.md.
Phase 2 — automate-notifyer
Scripts live in skills/automate-notifyer/scripts/.
Requires: completed Phase 1 with NOTIFYER_API_TOKEN set, WhatsApp number connected,
and (for bots and broadcasts) a Pro or Agency subscription.
Key commands
# Templates
node skills/automate-notifyer/scripts/list-templates.js --status approved --pretty
node skills/automate-notifyer/scripts/create-template.js \
--name order_confirmation --category MARKETING \
--body "Hello {{1}}, your order #{{2}} is confirmed." \
--variables '{"1":"John","2":"12345"}'
# AI bots
node skills/automate-notifyer/scripts/list-bots.js --pretty
node skills/automate-notifyer/scripts/create-bot.js \
--name "Support Bot" --mission "Help resolve support issues." \
--tone "Friendly" --delay 3 --default
# Broadcasts
node skills/automate-notifyer/scripts/list-broadcasts.js --status upcoming --pretty
node skills/automate-notifyer/scripts/create-broadcast.js \
--name "January Sale" --template-id 42 \
--test-phone "+14155550123" \
--recipients ./recipients.csv \
--schedule "25/01/2025 14:00" \
--delivery-mode smart
# Analytics
node skills/automate-notifyer/scripts/get-message-analytics.js --days 30 --pretty
# Webhooks
node skills/automate-notifyer/scripts/list-webhooks.js --type dev --pretty
node skills/automate-notifyer/scripts/create-webhook.js \
--url "https://hook.eu2.make.com/abc" --incoming --outgoing --signature
For the full Phase 2 script reference see skills/automate-notifyer/SKILL.md.
Phase 3 — chat-notifyer
Scripts live in skills/chat-notifyer/scripts/.
Requires: completed Phase 1 with NOTIFYER_API_TOKEN set and WhatsApp number connected.
Phase 3 endpoints use Chat auth mode: Authorization: <token> (no Bearer prefix).
The same JWT from login.js works — notifyer-api.js switches the header format automatically.
WhatsApp 24-hour messaging window
Free-text messages and attachments can only be sent within 24 hours of the recipient's
last inbound message. Check recipient.expiration_timestamp to determine window state:
- Window open (
expiration_timestamp > Date.now()): text, template, and attachment sends are allowed - Window closed (
nullor past): template-only sends are allowed
Key commands
# List all active conversations
node skills/chat-notifyer/scripts/list-recipients.js --pretty
# Search for a contact
node skills/chat-notifyer/scripts/list-recipients.js --search "John" --pretty
# Get full recipient details (includes 24h window state)
node skills/chat-notifyer/scripts/get-recipient.js --phone 14155550123 --pretty
# Send a text message
node skills/chat-notifyer/scripts/send-text.js \
--phone 14155550123 --text "Hello! How can I help?"
# Send a template message
node skills/chat-notifyer/scripts/send-template.js \
--phone 14155550123 --template order_confirmation \
--variables '{"1":"John","2":"12345"}'
# Send an attachment
node skills/chat-notifyer/scripts/send-attachment.js \
--phone 14155550123 --file ./invoice.pdf --caption "Your invoice"
# Assign a label
node skills/chat-notifyer/scripts/assign-label.js \
--phone 14155550123 --labels "Support,VIP"
# Control AI bot vs human handoff
node skills/chat-notifyer/scripts/set-handoff.js \
--phone 14155550123 --handoff true # true = human handles; false = bot handles
# Schedule a message
node skills/chat-notifyer/scripts/send-template.js \
--phone 14155550123 --template order_confirmation \
--variables '{"1":"John","2":"12345"}' \
--schedule "2025-06-01T09:00:00"
# Add a note to a conversation
node skills/chat-notifyer/scripts/add-note.js \
--phone 14155550123 --note "VIP customer — apply 15% discount"
# Get conversation history
node skills/chat-notifyer/scripts/get-conversation.js \
--phone 14155550123 --pretty
For the full Phase 3 script reference see skills/chat-notifyer/SKILL.md.
Cross-phase usage notes
- Run
skills/setup-notifyer/scripts/doctor.js --prettyas a first step when troubleshooting any script failure. It validates base URL, token, WhatsApp connection, and plan status in one pass. - Phone numbers are always integers without the
+prefix (e.g.14155550123). Scripts strip the+automatically when it is supplied. NOTIFYER_API_BASE_URLis validated at startup in every script. Anhttp://value is rejected immediately — HTTPS is required to prevent token exposure.- AI Bots and Broadcasts (Phase 2) require a Pro or Agency subscription. Verify
plan status with
get-user-plan.jsbefore directing users to those features. - The WhatsApp initial connection (WABA embedded signup) cannot be scripted. A
workspace admin must complete it once via the Notifyer console browser UI at
console.notifyer-systems.com. After that, all connection management is scriptable. - Subscription and billing changes are browser-only Stripe flows. Direct users to
https://console.notifyer-systems.com/pricing-plansfor plan changes.
Security
- Zero npm dependencies. All scripts use only Node.js built-in modules — no third-party packages, no supply chain risk.
- Token handling.
login.jsprints the JWT to stdout by design so the agent can capture and export it. Treat it like a session cookie and avoid persisting it in unprotected logs. - Developer API key.
get-api-key.jsoutputs the key to stdout and stderr. Store it in a secrets manager immediately. It is a long-lived credential that grants direct WhatsApp send access. - HTTPS enforcement. All scripts call
loadConfig()which exits with an error ifNOTIFYER_API_BASE_URLdoes not start withhttps://.
Repository structure
skills/
setup-notifyer/ Phase 1 — account, auth, connection, team, labels
SKILL.md
scripts/
references/
assets/
automate-notifyer/ Phase 2 — templates, bots, broadcasts, analytics, webhooks
SKILL.md
scripts/
references/
assets/
chat-notifyer/ Phase 3 — recipients, messaging, handoff, scheduling, notes
SKILL.md
scripts/
references/
assets/
Each phase is also published separately on ClawHub as an individual skill
(setup-notifyer, automate-notifyer, chat-notifyer) under the @whatsable namespace.
Comments
Loading comments...
