{"id":"a4036542-5dad-43de-886f-6f62f70dafe1","shortId":"tjNWnf","kind":"skill","title":"automate-whatsapp","tagline":"Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases/integrations for state. Use when automating WhatsApp conversations and event handling.","description":"# Automate WhatsApp\n\n## When to use\n\nUse this skill to build and run WhatsApp automations: workflow CRUD, graph edits, triggers, executions, function management, app integrations, and D1 database operations.\n\n## Setup\n\nPreferred path:\n- Kapso CLI installed and authenticated (`kapso login`)\n- For workflow and function edits, use source-controlled projects with `kapso link`, `kapso pull`, `kapso build`, and `kapso push`\n- For workflow code, use `@kapso/workflows` and export a `Workflow` instance from `workflow.js` or `workflow.ts`\n\nFallback path:\nEnv vars:\n- `KAPSO_API_BASE_URL` (host only, no `/platform/v1`)\n- `KAPSO_API_KEY`\n\n## How to\n\n### Edit workflows locally\n\nUse this path first when the user is working in, or can create, a local repo.\n\n```bash\nnpm install -g @kapso/cli\nnpm install --save-dev @kapso/workflows\nkapso login\nkapso link --project <project-id>\nkapso pull\n```\n\nEdit `workflows/<workflow-slug>/workflow.js` or `workflow.ts` with `@kapso/workflows`:\n\n```ts\nimport { START, Workflow } from \"@kapso/workflows\";\n\nconst workflow = new Workflow(\"inbound-support\", {\n  name: \"Inbound Support\",\n  status: \"draft\",\n});\n\nworkflow.addTrigger({\n  type: \"inbound_message\",\n  phoneNumberId: \"<phone-number-id>\",\n});\n\nworkflow.addNode(START, {\n  position: { x: 100, y: 100 },\n});\n\nworkflow.addNode(\"reply\", {\n  type: \"send_text\",\n  message: \"Thanks for reaching out.\",\n});\n\nworkflow.addEdge(START, \"reply\");\n\nexport default workflow;\n```\n\nBuild and push:\n\n```bash\nkapso build\nkapso push --dry-run\nkapso push workflow <workflow-slug>\n```\n\nUse `kapso push` to push every local function and workflow. See `references/local-workflow-source.md` for repo layout, source-file behavior, and JSON-only editing.\n\n### Discover phone numbers first\n\nPreferred path:\n1. Check project state: `kapso status`\n2. List connected numbers: `kapso whatsapp numbers list --output json`\n3. Resolve a display number when needed: `kapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json`\n\nFallback path:\n1. List number configs for triggers: `node scripts/list-whatsapp-phone-numbers.js`\n\n### Edit a workflow graph through API scripts\n\nPrefer local source sync for workflow edits. Use these scripts as a fallback for debugging, direct graph inspection, or API-only environments.\n\n1. Fetch graph: `node scripts/get-graph.js <workflow_id>` (note the `lock_version`)\n2. Edit the JSON (see graph rules below)\n3. Validate: `node scripts/validate-graph.js --definition-file <path>`\n4. Update: `node scripts/update-graph.js <workflow_id> --expected-lock-version <n> --definition-file <path>`\n5. Re-fetch to confirm\n\nFor small edits, use `edit-graph.js` with `--old-file` and `--new-file` instead.\n\nIf you get a lock_version conflict: re-fetch, re-apply changes, retry with new lock_version.\n\n### Manage triggers\n\n1. List: `node scripts/list-triggers.js <workflow_id>`\n2. Create: `node scripts/create-trigger.js <workflow_id> --trigger-type <type> --phone-number-id <id>`\n3. Toggle: `node scripts/update-trigger.js --trigger-id <id> --active true|false`\n4. Delete: `node scripts/delete-trigger.js --trigger-id <id>`\n\nFor inbound_message triggers, prefer `kapso whatsapp numbers resolve --phone-number \"<display-number>\" --output json` to get the exact `phone_number_id`. Fall back to `node scripts/list-whatsapp-phone-numbers.js` when the CLI is unavailable.\n\n### Debug executions\n\n1. List: `node scripts/list-executions.js <workflow_id>`\n2. Inspect: `node scripts/get-execution.js <execution-id>`\n3. Get value: `node scripts/get-context-value.js <execution-id> --variable-path vars.foo`\n4. Events: `node scripts/list-execution-events.js <execution-id>`\n\n### Create and deploy a function\n\n1. Write code with handler signature (see function rules below)\n2. Create: `node scripts/create-function.js --name <name> --code-file <path> [--public-endpoint true]`\n3. Deploy: `node scripts/deploy-function.js --function-id <id>`\n4. Verify: `node scripts/get-function.js --function-id <id>`\n\nUse `--public-endpoint true` when the function should be callable without `X-API-Key` via the Kapso-hosted invoke URL. This is only supported for Cloudflare functions.\nNew functions default to `invoke_response_mode=passthrough`, which returns the function body directly on successful invoke. Legacy wrapped functions can be migrated later with `update-function.js`.\n\n### Set up agent node with app integrations\n\n1. Find model: `node scripts/list-provider-models.js`\n2. Find account: `node scripts/list-accounts.js --app-slug <slug>` (use `pipedream_account_id`)\n3. Find action: `node scripts/search-actions.js --query <word> --app-slug <slug>` (action_id = key)\n4. Create integration: `node scripts/create-integration.js --action-id <id> --app-slug <slug> --account-id <id> --configured-props <json>`\n5. Add tools to agent node via `flow_agent_app_integration_tools`\n\n### Set up agent node with remote sandbox repositories\n\nUse this when the agent needs a remote ephemeral workspace to inspect or modify repository files during a workflow run.\n\n1. Read `references/agent-remote-sandbox.md` for the execution model and field rules\n2. Find model: `node scripts/list-provider-models.js`\n3. Copy `assets/agent-remote-sandbox-github-repo-example.json` as a starting point, or edit the agent node under `data.config`\n4. Set `sandbox_enabled: true`\n5. Set `sandbox_network_mode` to `allow_all` or `allow_list`\n6. If using `allow_list`, add extra outbound hosts in `sandbox_allowed_outbound_hosts`\n7. Add GitHub repositories to `flow_agent_resources` with:\n   - `resource_type: \"github_repository\"`\n   - `repo_url`\n   - `branch`\n   - `pat`\n8. Write the system prompt so it explicitly reads from `/workspace/repos/<repo-slug>` before making changes\n9. Validate and update the graph\n\nNotes:\n- Remote sandbox is beta and free during the beta\n- `sandbox_enabled` controls whether the remote workspace and sandbox tools are available\n- Repository resources stay configured even if sandbox access is turned off later\n- v1 supports GitHub repositories only\n- Use a repository root URL, not a GitHub file URL or `tree/...` URL\n- Repositories are mounted into `/workspace/repos/<repo-slug>` inside the remote sandbox\n- Use `references/agent-remote-sandbox.md` and `references/node-types.md` for the exact shape\n\n### Database CRUD\n\n1. List tables: `node scripts/list-tables.js`\n2. Query: `node scripts/query-rows.js --table <name> --filters <json>`\n3. Create/update/delete with row scripts\n\n## Graph rules\n\n- Exactly one start node with `id` = `start`\n- Never change existing node IDs\n- Use `{node_type}_{timestamp_ms}` for new node IDs\n- Non-decide nodes have 0 or 1 outgoing `next` edge\n- Decide edge labels must match `conditions[].label`\n- Edge keys are `source`/`target`/`label` (not `from`/`to`)\n\nFor full schema details, see `references/graph-contract.md`.\n\n## Function rules\n\n```js\nasync function handler(request, env) {\n  // Parse input\n  const body = await request.json();\n  // Use env.KV and env.DB as needed\n  return new Response(JSON.stringify({ result: \"ok\" }));\n}\n```\n\n- Do NOT use `export`, `export default`, or arrow functions\n- Return a `Response` object\n\n## Execution context\n\nAlways use this structure:\n- `vars` - user-defined variables\n- `system` - system variables\n- `context` - channel data\n- `metadata` - request metadata\n\n## Scripts\n\n### Workflows\n\n| Script | Purpose |\n|--------|---------|\n| `list-workflows.js` | List workflows (metadata only) |\n| `get-workflow.js` | Get workflow metadata |\n| `create-workflow.js` | Create a workflow |\n| `update-workflow-settings.js` | Update workflow settings |\n\n### Graph\n\n| Script | Purpose |\n|--------|---------|\n| `get-graph.js` | Get workflow graph + lock_version |\n| `edit-graph.js` | Patch graph via string replacement |\n| `update-graph.js` | Replace entire graph |\n| `validate-graph.js` | Validate graph structure locally |\n\n### Triggers\n\n| Script | Purpose |\n|--------|---------|\n| `list-triggers.js` | List triggers for a workflow |\n| `create-trigger.js` | Create a trigger |\n| `update-trigger.js` | Enable/disable a trigger |\n| `delete-trigger.js` | Delete a trigger |\n| `list-whatsapp-phone-numbers.js` | List phone numbers for trigger setup |\n\n### Executions\n\n| Script | Purpose |\n|--------|---------|\n| `list-executions.js` | List executions |\n| `get-execution.js` | Get execution details |\n| `get-context-value.js` | Read value from execution context |\n| `update-execution-status.js` | Force execution state |\n| `resume-execution.js` | Resume waiting execution |\n| `list-execution-events.js` | List execution events |\n\n### Functions\n\n| Script | Purpose |\n|--------|---------|\n| `list-functions.js` | List project functions |\n| `get-function.js` | Get function details + code |\n| `create-function.js` | Create a function, optionally with a public invoke endpoint |\n| `update-function.js` | Update function code, public endpoint setting, or migrate a legacy wrapped function to passthrough |\n| `deploy-function.js` | Deploy function to runtime |\n| `invoke-function.js` | Invoke function with payload |\n| `list-function-invocations.js` | List function invocations |\n\n### App integrations\n\n| Script | Purpose |\n|--------|---------|\n| `list-apps.js` | Search integration apps |\n| `search-actions.js` | Search actions (action_id = key) |\n| `get-action-schema.js` | Get action JSON schema |\n| `list-accounts.js` | List connected accounts |\n| `create-connect-token.js` | Create OAuth connect link |\n| `configure-prop.js` | Resolve remote_options for a prop |\n| `reload-props.js` | Reload dynamic props |\n| `list-integrations.js` | List saved integrations |\n| `create-integration.js` | Create an integration |\n| `update-integration.js` | Update an integration |\n| `delete-integration.js` | Delete an integration |\n\n### Databases\n\n| Script | Purpose |\n|--------|---------|\n| `list-tables.js` | List D1 tables |\n| `get-table.js` | Get table schema + sample rows |\n| `query-rows.js` | Query rows with filters |\n| `create-row.js` | Create a row |\n| `update-row.js` | Update rows |\n| `upsert-row.js` | Upsert a row |\n| `delete-row.js` | Delete rows |\n\n### OpenAPI\n\n| Script | Purpose |\n|--------|---------|\n| `openapi-explore.mjs` | Explore OpenAPI (search/op/schema/where) |\n\nInstall deps (once):\n```bash\nnpm i\n```\n\nExamples:\n```bash\nnode scripts/openapi-explore.mjs --spec workflows search \"variables\"\nnode scripts/openapi-explore.mjs --spec workflows op getWorkflowVariables\nnode scripts/openapi-explore.mjs --spec platform op queryDatabaseRows\n```\n\n## Notes\n\n- Prefer file paths over inline JSON (`--definition-file`, `--code-file`)\n- `action_id` is the same as `key` from `search-actions`\n- `--account-id` uses `pipedream_account_id` from `list-accounts`\n- Variable CRUD (`variables-set.js`, `variables-delete.js`) is blocked - Platform API doesn't support it\n- Raw SQL execution is not supported via Platform API\n\n## References\n\nRead before editing:\n- [references/local-workflow-source.md](references/local-workflow-source.md) - CLI source sync, repo layout, and `@kapso/workflows`\n- [references/graph-contract.md](references/graph-contract.md) - Graph schema, computed vs editable fields, lock_version\n- [references/node-types.md](references/node-types.md) - Node types and config shapes\n- [references/workflow-overview.md](references/workflow-overview.md) - Execution flow and states\n\nOther references:\n- [references/execution-context.md](references/execution-context.md) - Context structure and variable substitution\n- [references/triggers.md](references/triggers.md) - Trigger types and setup\n- [references/app-integrations.md](references/app-integrations.md) - App integration and variable_definitions\n- [references/agent-remote-sandbox.md](references/agent-remote-sandbox.md) - Remote sandbox behavior, repo resources, mounted paths\n- [references/functions-reference.md](references/functions-reference.md) - Function management\n- [references/functions-payloads.md](references/functions-payloads.md) - Payload shapes for functions\n- [references/databases-reference.md](references/databases-reference.md) - Database operations\n\n## Assets\n\n| File | Description |\n|------|-------------|\n| `workflow-linear.json` | Minimal linear workflow |\n| `workflow-decision.json` | Minimal branching workflow |\n| `workflow-agent-simple.json` | Minimal agent workflow |\n| `workflow-customer-support-intake-agent.json` | Customer support intake |\n| `workflow-interactive-buttons-decide-function.json` | Interactive buttons + decide (function) |\n| `workflow-interactive-buttons-decide-ai.json` | Interactive buttons + decide (AI) |\n| `workflow-api-template-wait-agent.json` | API trigger + template + agent |\n| `function-decide-route-interactive-buttons.json` | Function for button routing |\n| `agent-app-integration-example.json` | Agent node with app integrations |\n| `agent-remote-sandbox-github-repo-example.json` | Agent node with remote sandbox + GitHub repo resource |\n\n## Related skills\n\n- `integrate-whatsapp` - Onboarding, webhooks, messaging, templates, flows\n- `observe-whatsapp` - Debugging, logs, health checks\n\n<!-- FILEMAP:BEGIN -->\n```text\n[automate-whatsapp file map]|root: .\n|.:{package.json,SKILL.md}\n|assets:{agent-app-integration-example.json,agent-remote-sandbox-github-repo-example.json,databases-example.json,function-decide-route-interactive-buttons.json,functions-example.json,workflow-agent-simple.json,workflow-api-template-wait-agent.json,workflow-customer-support-intake-agent.json,workflow-decision.json,workflow-interactive-buttons-decide-ai.json,workflow-interactive-buttons-decide-function.json,workflow-linear.json}\n|references:{agent-remote-sandbox.md,app-integrations.md,databases-reference.md,execution-context.md,function-contracts.md,functions-payloads.md,functions-reference.md,graph-contract.md,local-workflow-source.md,node-types.md,triggers.md,workflow-overview.md,workflow-reference.md}\n|scripts:{configure-prop.js,create-connect-token.js,create-function.js,create-integration.js,create-row.js,create-trigger.js,create-workflow.js,delete-integration.js,delete-row.js,delete-trigger.js,deploy-function.js,edit-graph.js,get-action-schema.js,get-context-value.js,get-execution-event.js,get-execution.js,get-function.js,get-graph.js,get-table.js,get-workflow.js,invoke-function.js,list-accounts.js,list-apps.js,list-execution-events.js,list-executions.js,list-function-invocations.js,list-functions.js,list-integrations.js,list-provider-models.js,list-tables.js,list-triggers.js,list-whatsapp-phone-numbers.js,list-workflows.js,openapi-explore.mjs,query-rows.js,reload-props.js,resume-execution.js,search-actions.js,update-execution-status.js,update-function.js,update-graph.js,update-integration.js,update-row.js,update-trigger.js,update-workflow-settings.js,upsert-row.js,validate-graph.js,variables-delete.js,variables-list.js,variables-set.js}\n|scripts/lib/databases:{args.js,filters.js,kapso-api.js}\n|scripts/lib/functions:{args.js,kapso-api.js}\n|scripts/lib/workflows:{args.js,kapso-api.js,result.js}\n```\n<!-- FILEMAP:END -->","tags":["automate","whatsapp","agent","skills","gokapso","agent-skills","kapso"],"capabilities":["skill","source-gokapso","skill-automate-whatsapp","topic-agent-skills","topic-kapso","topic-skills","topic-whatsapp"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/gokapso/agent-skills/automate-whatsapp","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add gokapso/agent-skills","source_repo":"https://github.com/gokapso/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.507","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 114 github stars · SKILL.md body (14,992 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:18.235Z","embedding":null,"createdAt":"2026-04-18T20:34:10.318Z","updatedAt":"2026-05-18T18:56:18.235Z","lastSeenAt":"2026-05-18T18:56:18.235Z","tsv":"'/platform/v1':116 '/workflow.js':161 '/workspace/repos':766,832 '0':891 '1':256,290,328,404,469,495,594,680,847,893 '100':193,195 '2':262,337,408,473,505,599,690,852 '3':272,345,419,477,517,611,695,858 '4':352,429,486,524,623,709 '5':363,640,714 '6':725 '7':739 '8':756 '9':770 'access':805 'account':601,609,635,1152,1275,1279,1284 'account-id':634,1274 'action':613,620,629,1140,1141,1146,1263,1273 'action-id':628 'activ':426 'add':641,730,740 'agent':589,644,648,654,664,705,745,1400,1420,1427,1433 'agent-app-integration-example.json':1426,1468 'agent-remote-sandbox-github-repo-example.json':1432,1469 'agent-remote-sandbox.md':1481 'ai':1415 'allow':720,723,728,736 'alway':960 'api':110,118,303,325,545,1292,1305,1417 'api-on':324 'app':55,592,605,618,632,649,1130,1137,1359,1430 'app-integrations.md':1482 'app-slug':604,617,631 'appli':395 'args.js':1546,1550,1553 'arrow':952 'asset':1387,1467 'assets/agent-remote-sandbox-github-repo-example.json':697 'async':922 'authent':68 'autom':2,6,27,33,46,1460 'automate-whatsapp':1,1459 'avail':797 'await':931 'back':458 'base':111 'bash':141,215,1227,1231 'behavior':244,1368 'beta':780,785 'block':1290 'bodi':573,930 'branch':754,1396 'build':4,42,87,212,217 'button':1408,1413,1424 'callabl':541 'chang':396,769,873 'channel':973 'check':257,1457 'cli':65,464,1312 'cloudflar':559 'code':93,497,511,1090,1104,1261 'code-fil':510,1260 'comput':1323 'condit':902 'config':293,1334 'configur':10,638,801 'configure-prop.js':1158,1495 'configured-prop':637 'confirm':368 'conflict':389 'connect':264,1151,1156 'const':172,929 'context':959,972,1066,1346 'control':79,788 'convers':29 'copi':696 'creat':137,409,490,506,624,992,1033,1092,1154,1174,1204 'create-connect-token.js':1153,1496 'create-function.js':1091,1497 'create-integration.js':1173,1498 'create-row.js':1203,1499 'create-trigger.js':1032,1500 'create-workflow.js':991,1501 'create/update/delete':859 'crud':48,846,1286 'custom':1403 'd1':58,1190 'data':974 'data.config':708 'databas':59,845,1185,1385 'databases-example.json':1470 'databases-reference.md':1483 'databases/integrations':22 'debug':319,467,1454 'decid':888,897,1409,1414 'default':210,563,950 'defin':967 'definit':350,361,1258,1363 'definition-fil':349,360,1257 'delet':430,1041,1182,1215 'delete-integration.js':1181,1502 'delete-row.js':1214,1503 'delete-trigger.js':1040,1504 'dep':1225 'deploy':18,492,518,1117 'deploy-function.js':1116,1505 'descript':1389 'detail':916,1060,1089 'dev':150 'direct':320,574 'discov':250 'display':275 'doesn':1293 'draft':183 'dri':221 'dry-run':220 'dynam':1167 'edg':896,898,904 'edit':13,50,75,122,159,249,298,311,338,371,703,1309,1325 'edit-graph.js':373,1008,1506 'enabl':712,787 'enable/disable':1037 'endpoint':515,534,1100,1106 'entir':1016 'env':107,926 'env.db':936 'env.kv':934 'environ':327 'ephemer':668 'even':802 'event':31,487,1078 'everi':231 'exact':453,843,865 'exampl':1230 'execut':17,52,468,685,958,1051,1056,1059,1065,1069,1074,1077,1299,1338 'execution-context.md':1484 'exist':874 'expect':357 'expected-lock-vers':356 'explicit':763 'explor':1221 'export':97,209,948,949 'extra':731 'fall':457 'fallback':105,288,317 'fals':428 'fetch':329,366,392 'field':688,1326 'file':243,351,362,377,381,512,675,823,1252,1259,1262,1388,1462 'filter':857,1202 'filters.js':1547 'find':595,600,612,691 'first':128,253 'flow':647,744,1339,1450 'forc':1068 'free':782 'full':914 'function':19,53,74,233,494,502,522,529,538,560,562,572,580,919,923,953,1079,1085,1088,1094,1103,1113,1118,1123,1128,1375,1382,1410,1422 'function-contracts.md':1485 'function-decide-route-interactive-buttons.json':1421,1471 'function-id':521,528 'functions-example.json':1472 'functions-payloads.md':1486 'functions-reference.md':1487 'g':144 'get':385,451,478,988,1003,1058,1087,1145,1193 'get-action-schema.js':1144,1507 'get-context-value.js':1061,1508 'get-execution-event.js':1509 'get-execution.js':1057,1510 'get-function.js':1086,1511 'get-graph.js':1002,1512 'get-table.js':1192,1513 'get-workflow.js':987,1514 'getworkflowvari':1243 'github':741,750,812,822,1438 'graph':15,49,301,321,330,342,775,863,999,1005,1010,1017,1020,1321 'graph-contract.md':1488 'handl':32 'handler':499,924 'health':1456 'host':113,551,733,738 'id':418,425,435,456,523,530,610,621,630,636,870,876,885,1142,1264,1276,1280 'import':167 'inbound':177,180,186,437 'inbound-support':176 'inlin':1255 'input':928 'insid':833 'inspect':322,474,671 'instal':66,143,147,1224 'instanc':100 'instead':382 'intak':1405 'integr':56,593,625,650,1131,1136,1172,1176,1180,1184,1360,1431,1444 'integrate-whatsapp':1443 'interact':1407,1412 'invoc':1129 'invok':552,565,577,1099,1122 'invoke-function.js':1121,1515 'js':921 'json':247,271,287,340,449,1147,1256 'json-on':246 'json.stringify':942 'kapso':8,64,69,82,84,86,89,109,117,152,154,157,216,218,223,227,260,266,279,441,550 'kapso-api.js':1548,1551,1554 'kapso-host':549 'kapso/cli':145 'kapso/workflows':95,151,165,171,1318 'key':119,546,622,905,1143,1269 'label':899,903,909 'later':584,809 'layout':240,1316 'legaci':578,1111 'linear':1392 'link':83,155,1157 'list':263,269,291,405,470,724,729,848,983,1027,1045,1055,1076,1083,1127,1150,1170,1189,1283 'list-account':1282 'list-accounts.js':1149,1516 'list-apps.js':1134,1517 'list-execution-events.js':1075,1518 'list-executions.js':1054,1519 'list-function-invocations.js':1126,1520 'list-functions.js':1082,1521 'list-integrations.js':1169,1522 'list-provider-models.js':1523 'list-tables.js':1188,1524 'list-triggers.js':1026,1525 'list-whatsapp-phone-numbers.js':1044,1526 'list-workflows.js':982,1527 'local':124,139,232,306,1022 'local-workflow-source.md':1489 'lock':335,358,387,400,1006,1327 'log':1455 'login':70,153 'make':768 'manag':16,54,402,1376 'map':1463 'match':901 'messag':187,201,438,1448 'metadata':975,977,985,990 'migrat':583,1109 'minim':1391,1395,1399 'mode':567,718 'model':596,686,692 'modifi':673 'mount':830,1371 'ms':881 'must':900 'name':179,509 'need':278,665,938 'network':717 'never':872 'new':174,380,399,561,883,940 'new-fil':379 'next':895 'node':296,331,347,354,406,410,421,431,460,471,475,480,488,507,519,526,590,597,602,614,626,645,655,693,706,850,854,868,875,878,884,889,1232,1238,1244,1331,1428,1434 'node-types.md':1490 'non':887 'non-decid':886 'note':333,776,1250 'npm':142,146,1228 'number':252,265,268,276,281,285,292,417,443,447,455,1047 'oauth':1155 'object':957 'observ':1452 'observe-whatsapp':1451 'ok':944 'old':376 'old-fil':375 'onboard':1446 'one':866 'op':1242,1248 'openapi':1217,1222 'openapi-explore.mjs':1220,1528 'oper':60,1386 'option':1095,1161 'outbound':732,737 'outgo':894 'output':270,286,448 'package.json':1465 'pars':927 'passthrough':568,1115 'pat':755 'patch':1009 'path':63,106,127,255,289,484,1253,1372 'payload':1125,1379 'phone':251,284,416,446,454,1046 'phone-numb':283,445 'phone-number-id':415 'phonenumberid':188 'pipedream':608,1278 'platform':1247,1291,1304 'point':701 'posit':191 'prefer':62,254,305,440,1251 'project':80,156,258,1084 'prompt':760 'prop':639,1164,1168 'public':514,533,1098,1105 'public-endpoint':513,532 'pull':85,158 'purpos':981,1001,1025,1053,1081,1133,1187,1219 'push':90,214,219,224,228,230 'queri':616,853,1199 'query-rows.js':1198,1529 'querydatabaserow':1249 'raw':1297 're':365,391,394 're-appli':393 're-fetch':364,390 'reach':204 'read':681,764,1062,1307 'refer':1306,1343,1480 'references/agent-remote-sandbox.md':682,838,1364,1365 'references/app-integrations.md':1357,1358 'references/databases-reference.md':1383,1384 'references/execution-context.md':1344,1345 'references/functions-payloads.md':1377,1378 'references/functions-reference.md':1373,1374 'references/graph-contract.md':918,1319,1320 'references/local-workflow-source.md':237,1310,1311 'references/node-types.md':840,1329,1330 'references/triggers.md':1351,1352 'references/workflow-overview.md':1336,1337 'relat':1441 'reload':1166 'reload-props.js':1165,1530 'remot':657,667,777,791,835,1160,1366,1436 'replac':1013,1015 'repli':197,208 'repo':140,239,752,1315,1369,1439 'repositori':659,674,742,751,798,813,817,828 'request':925,976 'request.json':932 'resolv':273,282,444,1159 'resourc':746,748,799,1370,1440 'respons':566,941,956 'result':943 'result.js':1555 'resum':1072 'resume-execution.js':1071,1531 'retri':397 'return':570,939,954 'root':818,1464 'rout':1425 'row':861,1197,1200,1206,1209,1213,1216 'rule':343,503,689,864,920 'run':44,222,679 'runtim':1120 'sampl':1196 'sandbox':658,711,716,735,778,786,794,804,836,1367,1437 'save':149,1171 'save-dev':148 'schema':915,1148,1195,1322 'script':304,314,862,978,980,1000,1024,1052,1080,1132,1186,1218,1494 'scripts/create-function.js':508 'scripts/create-integration.js':627 'scripts/create-trigger.js':411 'scripts/delete-trigger.js':432 'scripts/deploy-function.js':520 'scripts/get-context-value.js':481 'scripts/get-execution.js':476 'scripts/get-function.js':527 'scripts/get-graph.js':332 'scripts/lib/databases':1545 'scripts/lib/functions':1549 'scripts/lib/workflows':1552 'scripts/list-accounts.js':603 'scripts/list-execution-events.js':489 'scripts/list-executions.js':472 'scripts/list-provider-models.js':598,694 'scripts/list-tables.js':851 'scripts/list-triggers.js':407 'scripts/list-whatsapp-phone-numbers.js':297,461 'scripts/openapi-explore.mjs':1233,1239,1245 'scripts/query-rows.js':855 'scripts/search-actions.js':615 'scripts/update-graph.js':355 'scripts/update-trigger.js':422 'scripts/validate-graph.js':348 'search':1135,1139,1236,1272 'search-act':1271 'search-actions.js':1138,1532 'search/op/schema/where':1223 'see':236,341,501,917 'send':199 'set':587,652,710,715,998,1107 'setup':61,1050,1356 'shape':844,1335,1380 'signatur':500 'skill':40,1442 'skill-automate-whatsapp' 'skill.md':1466 'slug':606,619,633 'small':370 'sourc':78,242,307,907,1313 'source-control':77 'source-fil':241 'source-gokapso' 'spec':1234,1240,1246 'sql':1298 'start':168,190,207,700,867,871 'state':24,259,1070,1341 'status':182,261 'stay':800 'string':1012 'structur':963,1021,1347 'substitut':1350 'success':576 'support':178,181,557,811,1295,1302,1404 'sync':308,1314 'system':759,969,970 'tabl':849,856,1191,1194 'target':908 'templat':1419,1449 'text':200,1458 'thank':202 'timestamp':880 'toggl':420 'tool':642,651,795 'topic-agent-skills' 'topic-kapso' 'topic-skills' 'topic-whatsapp' 'tree':826 'trigger':12,51,295,403,413,424,434,439,1023,1028,1035,1039,1043,1049,1353,1418 'trigger-id':423,433 'trigger-typ':412 'triggers.md':1491 'true':427,516,535,713 'ts':166 'turn':807 'type':185,198,414,749,879,1332,1354 'unavail':466 'updat':353,773,996,1102,1178,1208 'update-execution-status.js':1067,1533 'update-function.js':586,1101,1534 'update-graph.js':1014,1535 'update-integration.js':1177,1536 'update-row.js':1207,1537 'update-trigger.js':1036,1538 'update-workflow-settings.js':995,1539 'upsert':1211 'upsert-row.js':1210,1540 'url':112,553,753,819,824,827 'use':21,25,37,38,76,94,125,226,312,372,531,607,660,727,815,837,877,933,947,961,1277 'user':131,966 'user-defin':965 'v1':810 'valid':346,771,1019 'validate-graph.js':1018,1541 'valu':479,1063 'var':108,964 'variabl':483,968,971,1237,1285,1349,1362 'variable-path':482 'variables-delete.js':1288,1542 'variables-list.js':1543 'variables-set.js':1287,1544 'vars.foo':485 'verifi':525 'version':336,359,388,401,1007,1328 'via':547,646,1011,1303 'vs':1324 'wait':1073 'webhook':1447 'whatsapp':3,5,11,28,34,45,267,280,442,1445,1453,1461 'whether':789 'without':542 'work':133 'workflow':9,14,47,72,92,99,123,160,169,173,175,211,225,235,300,310,678,979,984,989,994,997,1004,1031,1235,1241,1393,1397,1401 'workflow-agent-simple.json':1398,1473 'workflow-api-template-wait-agent.json':1416,1474 'workflow-customer-support-intake-agent.json':1402,1475 'workflow-decision.json':1394,1476 'workflow-interactive-buttons-decide-ai.json':1411,1477 'workflow-interactive-buttons-decide-function.json':1406,1478 'workflow-linear.json':1390,1479 'workflow-overview.md':1492 'workflow-reference.md':1493 'workflow.addedge':206 'workflow.addnode':189,196 'workflow.addtrigger':184 'workflow.js':102 'workflow.ts':104,163 'workspac':669,792 'wrap':579,1112 'write':496,757 'x':192,544 'x-api-key':543 'y':194","prices":[{"id":"07969e79-c630-4353-b9b5-c574c4c70abc","listingId":"a4036542-5dad-43de-886f-6f62f70dafe1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"gokapso","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:34:10.318Z"}],"sources":[{"listingId":"a4036542-5dad-43de-886f-6f62f70dafe1","source":"github","sourceId":"gokapso/agent-skills/automate-whatsapp","sourceUrl":"https://github.com/gokapso/agent-skills/tree/master/skills/automate-whatsapp","isPrimary":false,"firstSeenAt":"2026-04-18T22:11:58.625Z","lastSeenAt":"2026-05-18T18:56:18.235Z"},{"listingId":"a4036542-5dad-43de-886f-6f62f70dafe1","source":"skills_sh","sourceId":"gokapso/agent-skills/automate-whatsapp","sourceUrl":"https://skills.sh/gokapso/agent-skills/automate-whatsapp","isPrimary":true,"firstSeenAt":"2026-04-18T20:34:10.318Z","lastSeenAt":"2026-05-07T22:40:34.753Z"}],"details":{"listingId":"a4036542-5dad-43de-886f-6f62f70dafe1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"gokapso","slug":"automate-whatsapp","github":{"repo":"gokapso/agent-skills","stars":114,"topics":["agent-skills","kapso","skills","whatsapp"],"license":null,"html_url":"https://github.com/gokapso/agent-skills","pushed_at":"2026-05-15T20:01:20Z","description":"Kapso agent skills for WhatsApp.","skill_md_sha":"6256cf629cc18966b6be74725b104778a7e215e5","skill_md_path":"skills/automate-whatsapp/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/gokapso/agent-skills/tree/master/skills/automate-whatsapp"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"automate-whatsapp","description":"Build WhatsApp automations with Kapso workflows: configure WhatsApp triggers, edit workflow graphs, manage executions, deploy functions, and use databases/integrations for state. Use when automating WhatsApp conversations and event handling."},"skills_sh_url":"https://skills.sh/gokapso/agent-skills/automate-whatsapp"},"updatedAt":"2026-05-18T18:56:18.235Z"}}