WhatsApp Business Automation by WhatsAble

Automation

Full three-phase agent skills suite for Notifyer by WhatsAble. Phase 1 (setup-notifyer): account signup, login, WhatsApp connection status, subscription plans, team members, workspace labels, and Developer API key. Phase 2 (automate-notifyer): WhatsApp message templates, AI bots, bulk broadcast campaigns, messaging analytics, delivery logs, and developer/IO webhooks. Phase 3 (chat-notifyer): live WhatsApp chat operations including listing and searching conversations, sending text/template/attachment messages, managing labels, controlling AI bot vs human handoff, scheduling messages, and managing recipient notes. All three phases are bundled together; each phase depends on the previous one.

Install

openclaw skills install whatsapp-business-automation-by-whatsable

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

PhaseSkill folderCoverage
1skills/setup-notifyerAccount, login, WhatsApp connection, plans, team, labels, API key
2skills/automate-notifyerTemplates, AI bots, broadcasts, analytics, webhooks
3skills/chat-notifyerRecipients, 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

VariableRequiredDescription
NOTIFYER_API_BASE_URLyesAPI base URL — use https://api.insightssystem.com
NOTIFYER_API_TOKENyesJWT token from setup-notifyer/scripts/login.js
NOTIFYER_CHAT_ORIGINnoCORS 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

ModeHeader formatUsed by
ConsoleAuthorization: Bearer <token>Phase 1, Phase 2, and most Phase 3 scripts
ChatAuthorization: <token> (no Bearer prefix)Phase 3 chat endpoints, Phase 1 label endpoints
DeveloperAuthorization: <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 (null or 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 --pretty as 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_URL is validated at startup in every script. An http:// 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.js before 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-plans for 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.js prints 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.js outputs 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 if NOTIFYER_API_BASE_URL does not start with https://.

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.