Install
openclaw skills install webhook-routerClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.
Routes incoming webhooks securely via Tailscale Funnel to source-specific handlers for GitHub, ClawHub, generic, or custom webhook processing and alerting.
openclaw skills install webhook-routerA general-purpose webhook receiver that routes incoming webhooks from any source to appropriate handlers. Integrates seamlessly with OpenClaw's hooks system and Tailscale Funnel for secure, public webhook endpoints.
This skill provides a complete webhook routing infrastructure:
External Service → Tailscale Funnel → OpenClaw /hooks → router.sh → Handler Script
router.sh inspects the payload and routes to the appropriate handlerhttps://gregs-mac-mini.taila31444.ts.net/hooks
Authentication: Use OpenClaw's hook token in the X-Hook-Token header:
X-Hook-Token: 19e78f0288d476ee1197d4b374b6f73394abe121c12cc38a
openclaw gateway status
# Should show: Tailscale Funnel: ACTIVE
If not active:
openclaw gateway start
cd /Users/gregborden/.openclaw/workspace/clawhub-skills/webhook-router
./test.sh
./register.sh github my-repo
# Output: https://gregs-mac-mini.taila31444.ts.net/hooks?source=github-my-repo
Use the generated URL in your service's webhook settings with the hook token header.
handlers/github.sh)Handles GitHub webhook events:
Alert triggers:
Configuration:
# Set your GitHub username for personalized alerts
export GITHUB_USERNAME="your-username"
handlers/generic.sh)Fallback handler for unknown webhook sources:
handlers/clawhub.sh)Handles ClawHub-specific webhooks (auto-created by register.sh):
./register.sh <source-type> <name>
Examples:
# GitHub repository
./register.sh github my-awesome-app
# Stripe payments
./register.sh stripe payments
# Custom service
./register.sh custom my-service
This will:
https://gregs-mac-mini.taila31444.ts.net/hooks?source=<source-id>
Or with header:
X-Webhook-Source: <source-id>
Create a new handler in handlers/<type>.sh:
#!/bin/bash
# handlers/myapp.sh
PAYLOAD="$1"
SOURCE="$2"
EVENT_TYPE="$3"
# Extract fields using jq
field=$(echo "$PAYLOAD" | jq -r '.field // "unknown"')
# Log to vault
vault write "webhooks/$SOURCE/$EVENT_TYPE" \
--data "$PAYLOAD" \
--tags "webhook,$SOURCE,$EVENT_TYPE"
# Alert on important events
if [[ "$EVENT_TYPE" == "critical" ]]; then
alert "🚨 Critical event from $SOURCE" "$field"
fi
Make it executable:
chmod +x handlers/myapp.sh
# GitHub username for personalized alerts
export GITHUB_USERNAME="your-github-username"
# Alert channel (default: main)
export WEBHOOK_ALERT_CHANNEL="telegram"
# Log file path (default: /Users/gregborden/.openclaw/workspace/memory/webhooks.jsonl)
export WEBHOOK_LOG_PATH="/custom/path/webhooks.jsonl"
All webhooks are logged to /Users/gregborden/.openclaw/workspace/memory/webhooks.jsonl:
{
"timestamp": "2026-02-07T20:30:00Z",
"source": "github-myrepo",
"event_type": "push",
"repository": "owner/repo",
"sender": "username",
"payload_hash": "sha256:abc123...",
"processed": true
}
https://gregs-mac-mini.taila31444.ts.net/hooks?source=github-<repo>application/jsonX-Hook-Token: 19e78f0288d476ee1197d4b374b6f73394abe121c12cc38ahttps://gregs-mac-mini.taila31444.ts.net/hooks?source=stripe-paymentsX-Hook-Token: 19e78f0288d476ee1197d4b374b6f73394abe121c12cc38aUse the built-in hooks integration or register:
./register.sh clawhub skills
Any service that supports webhooks:
./register.sh <type> <name>X-Hook-Token header./test.sh
Sends mock webhooks to test the routing system.
# GitHub push event
curl -X POST "https://gregs-mac-mini.taila31444.ts.net/hooks?source=github-test" \
-H "X-Hook-Token: 19e78f0288d476ee1197d4b374b6f73394abe121c12cc38a" \
-H "X-GitHub-Event: push" \
-H "Content-Type: application/json" \
-d '{
"ref": "refs/heads/main",
"repository": {"full_name": "test/repo"},
"pusher": {"name": "testuser"},
"commits": [{"message": "Test commit"}]
}'
# View last 10 webhooks
tail -10 /Users/gregborden/.openclaw/workspace/memory/webhooks.jsonl | jq .
ls -la handlers/
echo '{"test": "data"}' | ./router.sh --source test --event push
openclaw gateway status
/Users/gregborden/.openclaw/workspace/memory/webhooks.jsonlrouter.sh - Main routing logicregister.sh - Source registrationhandlers/github.sh - GitHub webhook handlerhandlers/generic.sh - Generic fallback handlertest.sh - Test suiteSKILL.md - This documentationMIT - See ClawHub repository for details.