Reference API

Documentation des webhooks SuperSales

Recevez automatiquement un payload JSON signe quand une analyse d appel est terminee. Les webhooks sont concus pour alimenter un CRM, un workflow Make ou Zapier, une base n8n, une alerte Slack ou une API interne.

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. 1. Ouvrez Settings / Webhooks.
  2. 2. Ajoutez une URL HTTPS de reception.
  3. 3. Copiez le secret affiche une seule fois.
  4. 4. Verifiez la signature cote serveur avant de traiter le payload.

Evenements

EventDeclencheurPayload
call_analysis.completedAnalyse IA termineeCall, sales rep, score, vente, objections, coaching, prochaines actions

Headers

Headers envoyes
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.

Verification Node.js
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

call_analysis.completed
{
  "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 eventId comme 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.