Vue d'ensemble
Un endpoint webhook est rattache a une organisation SuperSales. Lorsqu une analyse passe au statut completed, SuperSales crée une livraison, signe le body et envoie une requête POST vers l\'URL configurée.
POST JSON
Payload structure et stable pour les workflows.
Signature HMAC
Verification serveur avec secret par endpoint.
Retries
Nouvelle tentative automatique en cas d erreur reseau ou HTTP non-2xx.
Demarrage rapide
- 1. Ouvrez Settings / Webhooks.
- 2. Ajoutez une URL HTTPS de reception.
- 3. Copiez le secret affiche une seule fois.
- 4. Verifiez la signature cote serveur avant de traiter le payload.
Événements
| Event | Declencheur | Payload |
|---|---|---|
call_analysis.completed | Analyse IA terminee | Call, sales rep, score, vente, objections, coaching, prochaines actions |
Headers
Content-Type: application/json
User-Agent: SuperSales-Webhooks/1.0
X-SuperSales-Event: call_analysis.completed
X-SuperSales-Delivery: 6658f...
X-SuperSales-Timestamp: 1780063200
X-SuperSales-Signature: v1=<hex_hmac_sha256>Signature HMAC
La signature est calculee sur la chaine timestamp.rawBody. Rejetez les requêtes trop anciennes, par exemple au-delà de cinq minutes.
import crypto from 'crypto'
function verifySuperSalesWebhook({ rawBody, timestamp, signature, secret }) {
const expected = 'v1=' + crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${rawBody}`)
.digest('hex')
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
}Payload
{
"id": "evt_6658f...",
"event": "call_analysis.completed",
"createdAt": "2026-05-29T10:00:00.000Z",
"organizationId": "69df44430723de3516216e7b",
"callRecordId": "6658e...",
"analysisId": "6658a...",
"salesRep": {
"id": "6657...",
"salesRepId": "6657...",
"name": "Sarah Martin"
},
"call": {
"title": "R2 - ACME",
"source": "recall",
"scheduledStartTime": "2026-05-29T09:00:00.000Z",
"durationMinutes": 42,
"hasExternalInvitees": true
},
"analysis": {
"status": "completed",
"score": 84,
"saleCompleted": true,
"dealValue": 2400,
"nextAction": "deposit",
"summary": "Synthese de l'appel...",
"strengths": ["Bonne decouverte", "Traitement du prix"],
"improvements": [{ "area": "Closing", "suggestion": "Clarifier l'engagement" }],
"objections": [{ "objection": "Trop cher", "resolue": true }],
"nextSteps": [{ "action": "Envoyer le contrat", "responsable": "closeur" }]
}
}La cle analysis.transcript est absente par defaut.
Retries
SuperSales considere une livraison reussie uniquement pour les statuts HTTP 2xx. En cas de timeout, erreur réseau ou réponse non-2xx, la livraison est retentée jusqu'à quatre fois. Chaque tentative est visible dans Settings / Webhooks.
Securite
Bonnes pratiques
- Verifier la signature HMAC avant de parser le payload metier.
- Rejeter les timestamps trop anciens pour limiter le replay.
- Utiliser une URL HTTPS en production.
- Garder la transcription désactivée sauf besoin contractuel explicite.
- Traiter
eventIdcomme cle d idempotence.
FAQ
Puis-je envoyer les analyses vers HubSpot ou Salesforce ?
Oui, via une URL intermediaire Make, Zapier, n8n ou via une route API interne qui transforme le payload vers le CRM.
Le webhook peut-il modifier des données SuperSales ?
Non. C'est un flux sortant. Le destinataire reçoit les données, mais ne peut pas agir sur SuperSales avec ce webhook.
Que se passe-t-il si mon endpoint est down ?
La livraison passe en failed, puis SuperSales retente automatiquement. Les erreurs restent visibles dans les logs de livraison.