Documentation
WebhookLens, c'est l'observabilité des webhooks hébergée dans l'UE. Recevez, inspectez, rejouez et transmettez des webhooks avec une visibilité totale.
-
Créez un compte gratuit
Inscrivez-vous sur app.webhooklens.cloud — aucune carte bancaire requise pour démarrer. -
Ajoutez un endpoint
Dans le tableau de bord, créez un endpoint avec l'URL cible vers laquelle vos webhooks doivent être transmis. WebhookLens génère une URL de proxy unique. -
Pointez votre fournisseur et envoyez un webhook de test
Configurez votre fournisseur pour qu'il envoie vers l'URL générée, puis :curl -X POST https://proxy.webhooklens.cloud/wh/your-tenant/your-endpoint -H "Content-Type: application/json" -d '{"test": true}'
Proxy Webhook
WebhookLens agit comme un proxy inverse pour vos webhooks. Pointez vos fournisseurs vers l'URL du proxy et WebhookLens reçoit, journalise, valide et transmet chaque requête vers votre endpoint réel.
Réception des webhooks
L'URL du proxy suit ce schéma :
POST https://proxy.webhooklens.cloud/wh/{tenant-slug}/{endpoint-slug}
Lorsqu'un webhook arrive, WebhookLens :
- Reçoit la requête HTTP complète (méthode, en-têtes, corps, paramètres de requête)
- Stocke l'événement dans ClickHouse pour l'analytique et PostgreSQL pour l'inspection
- Valide la signature (si un fournisseur est configuré sur l'endpoint)
- Applique les transforms (si configurés)
- Transmet la requête à l'URL cible configurée
- Enregistre le code de réponse, la latence et les éventuelles erreurs
Politique de relance
Les livraisons échouées (réponses 5xx ou timeouts) sont relancées avec un backoff exponentiel :
| Tentative | Délai |
|---|---|
| 1re relance | 1 seconde |
| 2e relance | 5 secondes |
| 3e relance | 30 secondes |
| 4e relance | 5 minutes |
| 5e relance | 30 minutes |
Après 5 échecs consécutifs, l'événement est marqué comme failed. Vous pouvez le rejouer manuellement depuis le tableau de bord ou l'API à tout moment.
Validation de signature
Lorsque vous configurez un fournisseur sur un endpoint, WebhookLens peut vérifier cryptographiquement la signature du webhook à l'aide de l'algorithme de signature du fournisseur. La vérification de signature (contrôle du HMAC par rapport à votre secret de signature) est actuellement disponible pour Stripe et GitHub. En cas d'échec de vérification, l'événement est signalé mais reste stocké et transmis (sauf si vous activez le mode strict).
Pour 9 fournisseurs supplémentaires, WebhookLens détecte et étiquette automatiquement la source en inspectant les en-têtes de signature courants — aucun secret requis. Cela vous permet de filtrer et d'inspecter les événements par fournisseur, même sans vérification cryptographique complète.
Exemple : vérification de signature Stripe
# Lors de la création de l'endpoint, définissez le fournisseur et le secret de signature
curl -X POST https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "stripe-payments",
"target_url": "https://api.example.com/webhooks/stripe",
"provider": "stripe",
"signing_secret": "whsec_..."
}'
Fournisseurs supportés
| Fournisseur | En-tête de signature | Algorithme | Support |
|---|---|---|---|
| Stripe | Stripe-Signature | HMAC-SHA256 (timestamp + payload) | Vérification |
| GitHub | X-Hub-Signature-256 | HMAC-SHA256 | Vérification |
| Shopify | X-Shopify-Hmac-SHA256 | HMAC-SHA256 (Base64) | Détection auto |
| Slack | X-Slack-Signature | HMAC-SHA256 (timestamp + body) | Détection auto |
| Twilio | X-Twilio-Signature | HMAC-SHA1 | Détection auto |
| SendGrid | X-Twilio-Email-Event-Webhook-Signature | ECDSA | Détection auto |
| PayPal | PAYPAL-TRANSMISSION-SIG | HMAC-SHA256 | Détection auto |
| Paddle | Paddle-Signature | HMAC-SHA256 (timestamp + payload) | Détection auto |
| Linear | Linear-Signature | HMAC-SHA256 | Détection auto |
| Atlassian | X-Hub-Signature | HMAC-SHA256 | Détection auto |
| Discord | X-Signature-Ed25519 | Ed25519 | Détection auto |
Tableau de bord
Événements & Inspecteur
La page des événements affiche tous les webhooks entrants en temps réel avec actualisation automatique. Chaque ligne indique :
- Statut — transmis (vert), échoué (rouge), rejoué (bleu), timeout (jaune)
- Fournisseur — détecté automatiquement depuis les en-têtes (Stripe, GitHub, Shopify, etc.)
- Endpoint — quel endpoint a reçu le webhook
- Latence — temps aller-retour pour transmettre et recevoir une réponse
- Horodatage — temps relatif ("il y a 2s") avec l'horodatage ISO complet au survol
Cliquez sur un événement pour ouvrir l'inspecteur :
- Onglet Requête : en-têtes, corps (JSON/XML avec coloration syntaxique), paramètres de requête
- Onglet Réponse : code de réponse cible, en-têtes, corps
- Onglet Chronologie : chronologie complète de livraison incluant les relances
- Bouton Replay : renvoie exactement la même requête à la cible
Endpoints
Les endpoints sont l'abstraction centrale. Chaque endpoint possède :
- Un slug unique qui fait partie de l'URL du proxy
- Une URL cible vers laquelle les webhooks sont transmis
- Un fournisseur optionnel pour la validation de signature
- Des transforms optionnels pour la manipulation du payload
- Des règles de routage optionnelles pour la distribution multi-destination
Analytique
Le tableau de bord analytique fournit des métriques en temps réel propulsées par ClickHouse :
- Volume — total des événements dans le temps (1h, 24h, 7j, 30j)
- Taux de succès — pourcentage de réponses 2xx
- Latence — percentiles P50, P95, P99
- Répartition par fournisseur — volume et succès par fournisseur
- Répartition par endpoint — volume et succès par endpoint
Alertes
Configurez des alertes pour être notifié en cas de problème :
- Seuil d'échec — alerte quand le taux d'erreur dépasse N% sur une fenêtre temporelle
- Seuil de latence — alerte quand la latence P95 dépasse N ms
- Absence d'événements — alerte quand aucun événement n'est reçu pendant N minutes
Les notifications peuvent être envoyées à Slack (via webhook entrant) ou à une URL webhook personnalisée.
# Créer une alerte
curl -X POST https://app.webhooklens.cloud/api/alerts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "High failure rate",
"type": "failure_rate",
"threshold": 10,
"window_minutes": 5,
"channel": "slack",
"slack_webhook_url": "https://hooks.slack.com/services/..."
}'
Transforms & Routage
Transforms de payload
Les transforms vous permettent de modifier les payloads des webhooks avant leur transmission vers la cible. Utile pour enrichir des données, supprimer des champs sensibles ou adapter les payloads à votre format d'API.
Types de transforms
| Type | Description | Exemple |
|---|---|---|
set_field | Définir ou écraser un champ JSON | Ajouter source: "stripe" au corps |
remove_field | Supprimer un champ JSON | Supprimer data.object.metadata |
rename_field | Renommer un champ JSON | Renommer id en external_id |
add_header | Ajouter un en-tête de requête | Ajouter X-Source: webhooklens |
remove_header | Supprimer un en-tête de requête | Supprimer X-Internal-Token |
Exemple : ajouter un champ et un en-tête
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transforms": [
{"type": "set_field", "path": "meta.source", "value": "stripe"},
{"type": "add_header", "key": "X-Source", "value": "webhooklens"},
{"type": "remove_field", "path": "data.object.metadata.internal"}
]
}'
Test à blanc (dry-run)
Testez vos transforms sans effectuer la transmission :
curl -X POST https://app.webhooklens.cloud/api/transforms/test \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transforms": [
{"type": "set_field", "path": "enriched", "value": true}
],
"payload": {"event": "payment.completed", "amount": 4999}
}'
# Réponse :
# {"event": "payment.completed", "amount": 4999, "enriched": true}
Routage intelligent
Routez un seul webhook vers plusieurs destinations selon des conditions. Permet la distribution en éventail, le traitement conditionnel et les cibles de secours.
Conditions de routage
| Condition | Description |
|---|---|
all | Toujours transmettre vers cette cible (éventail) |
on_success | Transmettre uniquement si la cible principale a retourné 2xx |
on_failure | Transmettre uniquement si la cible principale a retourné non-2xx ou a eu un timeout |
Exemple : distribution vers 3 cibles
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://primary.example.com/webhook",
"routes": [
{"url": "https://analytics.example.com/ingest", "condition": "all"},
{"url": "https://backup.example.com/webhook", "condition": "all"},
{"url": "https://alerts.example.com/failure", "condition": "on_failure"}
]
}'
Référence API
L'URL de base de l'API est https://app.webhooklens.cloud. Les endpoints authentifiés nécessitent un token Bearer — soit un JWT obtenu lors de la connexion, soit une clé API créée dans Paramètres → Clés API (transmise via Authorization: Bearer whl_<clé>).
Authentification
Créer un nouveau compte et un tenant.
curl -X POST https://app.webhooklens.cloud/api/auth/signup \
-H "Content-Type: application/json" \
-d '{
"email": "vous@exemple.com",
"password": "motdepassesecurise",
"tenant_name": "mon-projet"
}'
# Réponse : {"token": "eyJhbG...", "tenant": {"id": "...", "slug": "mon-projet"}}
S'authentifier et recevoir un token JWT.
curl -X POST https://app.webhooklens.cloud/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "vous@exemple.com", "password": "motdepassesecurise"}'
# Réponse : {"token": "eyJhbG..."}
API Endpoints
Lister tous les endpoints du tenant courant.
curl https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse : [{"id": "...", "slug": "stripe-prod", "target_url": "https://...", ...}]
Créer un nouvel endpoint.
curl -X POST https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "stripe-prod",
"target_url": "https://api.example.com/webhooks/stripe",
"provider": "stripe",
"signing_secret": "whsec_..."
}'
Mettre à jour un endpoint (URL cible, fournisseur, transforms, routes).
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_url": "https://nouvelle-cible.example.com/hook"}'
API Événements
Lister les événements avec des filtres optionnels. Supporte la pagination.
# Lister les événements récents
curl "https://app.webhooklens.cloud/api/events?limit=50&status=failed" \
-H "Authorization: Bearer YOUR_TOKEN"
# Filtrer par endpoint
curl "https://app.webhooklens.cloud/api/events?endpoint_id=EP_ID&limit=20" \
-H "Authorization: Bearer YOUR_TOKEN"
Rejouer un événement — renvoyer la requête originale à la cible.
curl -X POST https://app.webhooklens.cloud/api/events/EVT_ID/replay \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse : {"status": "replayed", "response_code": 200, "latency_ms": 142}
API Analytique
Obtenir les statistiques agrégées du tenant.
curl "https://app.webhooklens.cloud/api/analytics/overview?period=24h" \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse :
# {
# "total_events": 12847,
# "success_rate": 99.2,
# "p50_ms": 45,
# "p95_ms": 210,
# "p99_ms": 890,
# "by_provider": [{"provider": "stripe", "count": 8420}, ...],
# "by_status": {"forwarded": 12744, "failed": 62, "replayed": 41}
# }
API Facturation
Disponible en mode cloud uniquement.
Obtenir l'utilisation actuelle et le quota du forfait.
curl https://app.webhooklens.cloud/api/billing/quota \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse : {"plan": "starter", "events_used": 12847, "events_limit": 100000, ...}
Créer une session Stripe Checkout pour une mise à niveau.
curl -X POST https://app.webhooklens.cloud/api/billing/checkout \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse : {"checkout_url": "https://checkout.stripe.com/..."}
Créer une session Stripe Billing Portal pour gérer les abonnements.
curl -X POST https://app.webhooklens.cloud/api/billing/portal \
-H "Authorization: Bearer YOUR_TOKEN"
# Réponse : {"portal_url": "https://billing.stripe.com/..."}
Tester un ensemble de transforms à blanc sur un payload d'exemple.
Serveur MCP
WebhookLens expose un serveur Model Context Protocol pour interroger vos données de webhooks directement depuis des assistants IA comme Claude. Posez vos questions en langage naturel — « qu'est-ce qui a échoué dans la dernière heure ? », « montre-moi le dernier événement Stripe », « rejoue l'événement EVT_123 » — et l'assistant appelle WebhookLens pour vous. Chaque outil est limité à votre espace de travail : un assistant ne voit jamais que vos propres données.
Connexion
Le serveur se trouve à l'adresse https://app.webhooklens.cloud/mcp et s'authentifie via OAuth. Aucune clé API à copier : vous vous connectez avec votre compte WebhookLens habituel et approuvez l'accès une seule fois.
Claude Code (CLI)
claude mcp add --transport http webhooklens https://app.webhooklens.cloud/mcp
À la première utilisation, votre navigateur s'ouvre pour vous connecter à WebhookLens (mot de passe ou GitHub) et approuver l'accès. Ensuite, l'assistant peut appeler les outils ci-dessous.
Claude.ai (web)
Ajoutez un connecteur personnalisé avec l'URL https://app.webhooklens.cloud/mcp et effectuez la même connexion. Le connecteur web fonctionne uniquement via OAuth.
Outils disponibles
| Outil | Description |
|---|---|
list_endpoints | Liste tous les endpoints de webhooks de votre espace de travail |
list_events | Liste les événements récents (résumés) — filtrage par endpoint, statut, fournisseur, type, recherche ou plage de temps |
get_event | Récupère un événement complet : corps de la requête, en-têtes, réponse et dernière erreur |
analytics_overview | Statistiques de livraison sur une période : totaux, taux de succès/échec, percentiles de latence |
analytics_errors | Erreurs de livraison récurrentes les plus fréquentes, groupées par endpoint et message |
list_retries | Événements actuellement en file d'attente pour une nouvelle tentative automatique |
replay_event | Re-livre un événement stocké vers l'URL cible de son propre endpoint (journalisé) |
replay_event est le seul outil qui écrit quoi que ce soit ; les six autres sont en lecture seule.
Besoin d'aide ? Contactez-nous à support@webhooklens.cloud.