Install
Authenticate
hookmyapp login --email <you@example.com>.
Workspaces
A workspace is the tenancy boundary for every other command.Pick one before you connect channels.
Channels
Connect your own WhatsApp number, then run per-channel operations.Address a channel by its ID (
ch_xxxxxxxx from channels list) or its phone number (15551234567).
WhatsApp commands
Use the phone number anywhere a command asks for a WhatsApp channel.Messages
Templates
Manage templates on the WABA behind the channel. Templates must be approved by Meta before you can send them.template.json:
Template created. in human mode. Use --json when you need Meta’s raw create response in a script.
Media
Upload media first, then use the returned media ID in message payloads. HookMyApp passes the media through to Meta. It does not store the file.media get returns Meta media metadata, including the short-lived download URL. media download --out - streams bytes to stdout:
Business profile
Read or update the WhatsApp Business profile customers see in WhatsApp.profile.json:
Profile updated. in human mode. Use --json for the raw Meta response.
Receive webhooks
There are two ways to tell HookMyApp where to send inbound messages for your own number. For local development, send messages to your laptop while the CLI runs:channels listen for local testing or a deployed webhook URL.
Read the delivery history. Copy the delivery ID (wd_...) from the list output to open one delivery:
Sandbox
Test on WhatsApp with no Meta setup.See Sandbox for the full flow.
Alerts
Your own alert phone: where we reach you if something stops working.set asks for it. In a script there is no prompt: run set with --json, then finish with alerts phone verify <code>.
Alerts are on once the number is verified.
Notifications
Notifications from HookMyApp delivered straight to your AI agent, like Claude Code, ChatGPT, or Codex: failing webhooks, disconnected channels, usage limits, and product announcements.Billing
Config
Persistent CLI settings.Output formats
Most commands take--json for machine-clean output (notifications go to stderr) and --human to force human formatting when stdout is not a TTY.In
--json mode, errors use the envelope {"error":{"code":"...","message":"...","status":NNN}}.
--workspace <slug> overrides the active workspace for one command, and --debug logs the HTTP requests the CLI makes.
Help
Next steps
- Sandbox: Start a sandbox session and pull env values.
- Connect WhatsApp: Connect your own WhatsApp number via embedded signup.