Vue d'ensemble
Un endpoint webhook est rattache a une organisation SuperSales. Lorsqu une analyse passe au statut completed, SuperSales cree une livraison, signe le body et envoie une requete POST vers l URL configuree.
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.
Evenements
| 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 requetes trop anciennes, par exemple au-dela 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 reseau ou reponse non-2xx, la livraison est retentee jusqu a 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 desactivee 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 donnees SuperSales ?
Non. C est un flux sortant. Le destinataire recoit les donnees, 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.