Your First Webhook
Note: This guide reflects the legacy Kubernetes-based workflow and uses older terminology (Destination). For the current UI-first evaluator path, see First 15 Minutes or Quick Start.
Status: PUBLIC_CONTRACT_DRAFT. Uses legacy internal terms. See Current Status for capability maturity.
Target Service (Kubernetes)
Create a simple webhook receiver in your cluster:
kubectl create deployment webhook-echo \
--image=hashicorp/http-echo \
--namespace zen-mesh \
-- --listen=:8080 --text="webhook received!"
kubectl expose deployment webhook-echo \
--port=8080 \
--namespace zen-mesh
Create a Target
- Go to Connect → Targets in the dashboard
- Click Create Target
- Fill in:
- Name:
my-first-target - URL:
http://webhook-echo:8080/webhooks - Cluster: Select your connected cluster
- Name:
- Click Save
Configure Your Webhook Source
Stripe (example)
- Go to Stripe Dashboard → Developers → Webhooks
- Click Add endpoint
- Paste the ingestion URL from your endpoint
- Select events:
payment_intent.succeeded,invoice.paid - Click Create endpoint
GitHub (example)
- Go to your repository → Settings → Webhooks → Add webhook
- Paste the ingestion URL from your endpoint
- Content type:
application/json - Select events:
push,pull_request - Click Add webhook
Generic cURL Test
curl -X POST "<your-ingestion-url>" \
-H "Content-Type: application/json" \
-d '{"event": "test", "data": "hello from zen-mesh"}'
Verify Delivery
- Go to Traffic → Deliveries in the dashboard
- You should see the event with a 200 or Delivered status
- Check the pod logs:
kubectl logs -n zen-mesh -l app=webhook-echo --tail=20
Non-Claims
- This guide uses example provider setup — not production-live provider validation
- Ingestion URL shown is an example — actual URL assigned on endpoint creation
- Kubernetes cluster must have zen-agent connected for private network delivery
- Delivery guarantees are scenario-specific (local/sandbox), not production-level
- See Current Status for capability maturity