Observe WhatsApp
When to use
Use this skill for operational diagnostics: Logs search, message delivery investigation, webhook delivery debugging, error triage, workflow event correlation, and WhatsApp health checks.
Setup
Preferred path:
- Kapso CLI installed and authenticated (
kapso login)
- Start with
kapso status to confirm project access and available WhatsApp numbers
Fallback path: Env vars:
KAPSOAPIBASE_URL (host only, no /platform/v1)
KAPSOAPIKEY
How to
Search logs
Use Logs search first when the user gives an identifier, endpoint, message ID, workflow execution ID, webhook delivery ID, request ID, or a vague "what happened?" debugging prompt.
Preferred path:
- Search the current project:
kapso logs search --query "<id-or-text>" --period 24h --source all --limit 20 --output json
- If the exact search is empty, retry with
--period 7d before concluding there are no logs.
- Add
--problems-only for broad error scans; leave it off when reconstructing an exact timeline.
- Add explicit filters only when they intentionally narrow the search:
- Workflow execution: kapso logs search --query "<execution-id>" --source flowevent --filter flowexecutionid=<execution-id> --period 7d --output json - API endpoint/status: kapso logs search --source externalapilog --filter endpointcontains=/messages --filter responsestatus=500 --period 24h --output json - WhatsApp message ID: kapso logs search --query "wamid..." --source whatsappwebhookevent --filter whatsappmessageid=wamid... --period 7d --output json - Webhook delivery: kapso logs search --source webhookdelivery --filter webhook_id=<webhook-id> --period 24h --output json
Fallback path:
- Search via Platform API:
node scripts/log-search.js --query "<id-or-text>" --period 24h --source all --limit 20
- Use filters with repeated flags:
node scripts/log-search.js --source flowevent --filter flowexecution_id=<execution-id> --period 7d
- Discover source and filter options:
node scripts/log-search.js --catalog true
Logs sources are externalapilog, whatsappwebhookevent, flowevent, and webhookdelivery. The Platform API fallback returns indexed Logs payloads for the API-key project and requires Logs and Elasticsearch to be enabled.
Investigate message delivery
Preferred path:
- Search the WAMID or customer phone first:
kapso logs search --query "<wamid-or-phone>" --period 7d --source all --limit 20 --output json
- Resolve the number:
kapso whatsapp numbers resolve --phone-number "<display-number>" --output json
- List recent messages:
kapso whatsapp messages list --phone-number "<display-number>" --limit 50 --output json
- Inspect a specific message:
kapso whatsapp messages get <message-id> --phone-number-id <id> --output json
- Inspect the conversation:
kapso whatsapp conversations list --phone-number "<display-number>" --output json
Fallback path:
- List messages:
node scripts/messages.js --phone-number-id <id>
- Inspect message:
node scripts/message-details.js --message-id <id>
- Find conversation:
node scripts/lookup-conversation.js --phone-number <e164>
Triage errors
Preferred path:
- Confirm project and number state:
kapso status
- Run number health:
kapso whatsapp numbers health --phone-number "<display-number>" --output human
- Search recent problem logs:
kapso logs search --problems-only --period 24h --source all --limit 20 --output json
- Inspect related templates when relevant:
kapso whatsapp templates list --phone-number "<display-number>" --output json
Fallback path:
- Logs search:
node scripts/log-search.js --problems-only true --period 24h --limit 20
- Message errors:
node scripts/errors.js
- API logs:
node scripts/api-logs.js
- Webhook deliveries:
node scripts/webhook-deliveries.js
Run health checks
Preferred path:
- Project overview:
kapso status
- Phone number health:
kapso whatsapp numbers health --phone-number "<display-number>" --output human
Fallback path:
- Project overview:
node scripts/overview.js
- Phone number health:
node scripts/whatsapp-health.js --phone-number-id <id>
Scripts
Messages
| Script |
Purpose |
messages.js |
List messages |
message-details.js |
Get message details |
lookup-conversation.js |
Find conversation by phone or ID |
Errors and logs
| Script |
Purpose |
log-search.js |
Search Logs across API, Meta webhook, workflow, and webhook-delivery sources |
errors.js |
List message errors |
api-logs.js |
List external API logs |
webhook-deliveries.js |
List webhook delivery attempts |
Health
| Script |
Purpose |
overview.js |
Project overview |
whatsapp-health.js |
Phone number health check |
OpenAPI
| Script |
Purpose |
openapi-explore.mjs |
Explore OpenAPI (search/op/schema/where) |
Install deps (once):
npm i
Examples:
node scripts/openapi-explore.mjs --spec platform search "webhook deliveries"
node scripts/openapi-explore.mjs --spec platform op listWebhookDeliveries
node scripts/openapi-explore.mjs --spec platform schema WebhookDelivery
Notes
- For webhook setup (create/update/delete, signature verification, event types), use
integrate-whatsapp.
- For Project Event definitions, event-triggered workflow setup, or
emit_event graph changes, use automate-whatsapp.
- Prefer resolving a display phone number to the canonical
phonenumberid before deep debugging.
- Prefer Logs search before older single-resource log endpoints when correlating across messages, workflows, API calls, and webhook deliveries.
- Keep the scripts as the fallback path when the CLI is unavailable or when you need API-log or webhook-delivery inspection.
References
- [references/message-debugging-reference.md](references/message-debugging-reference.md) - Message debugging guide
- [references/triage-reference.md](references/triage-reference.md) - Error triage guide
- [references/health-reference.md](references/health-reference.md) - Health check guide
Related skills
integrate-whatsapp - Onboarding, webhooks, messaging, templates, flows
automate-whatsapp - Workflows, agents, and automations
<!-- FILEMAP:BEGIN -->
[observe-whatsapp file map]|root: .
|.:{package.json,SKILL.md}
|assets:{health-example.json,message-debugging-example.json,triage-example.json}
|references:{health-reference.md,message-debugging-reference.md,triage-reference.md}
|scripts:{api-logs.js,errors.js,log-search.js,lookup-conversation.js,message-details.js,messages.js,openapi-explore.mjs,overview.js,webhook-deliveries.js,whatsapp-health.js}
|scripts/lib/messages:{args.js,kapso-api.js}
|scripts/lib/status:{args.js,kapso-api.js}
|scripts/lib/triage:{args.js,kapso-api.js}
<!-- FILEMAP:END -->