Docs / API

Webhooks

Configurez des webhooks pour recevoir des notifications en temps réel.

Présentation

Les webhooks permettent à Maluro d’envoyer des notifications HTTP à votre serveur lorsque certains événements se produisent.

Configuration

Créer un webhook

Dans Paramètres → Intégrations → Webhooks :

  1. Cliquez sur ”+ Nouveau webhook”
  2. Entrez l’URL de votre endpoint
  3. Sélectionnez les événements à écouter
  4. Sauvegardez

Événements disponibles

ÉvénementDescription
prospect.createdNouveau prospect créé
prospect.updatedProspect mis à jour
property.createdNouveau bien ajouté
property.updatedBien mis à jour
transaction.createdNouvelle transaction
transaction.status_changedChangement de statut

Format des payloads

Structure générale

{
  "event": "prospect.created",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "id": "prs_123",
    "name": "Jean Martin",
    "email": "jean@example.com"
  }
}

Exemple : prospect.created

{
  "event": "prospect.created",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "id": "prs_abc123",
    "name": "Marie Dupont",
    "email": "marie.dupont@email.com",
    "type": "investor",
    "created_at": "2024-01-15T10:30:00Z"
  }
}

Sécurité

Signature des webhooks

Chaque requête inclut un header X-Maluro-Signature :

X-Maluro-Signature: sha256=abc123...

Vérification

import crypto from 'crypto';

function verifyWebhook(payload: string, signature: string, secret: string): boolean {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  return `sha256=${expected}` === signature;
}

Vérifiez toujours la signature avant de traiter un webhook !

Retry et erreurs

Politique de retry

Si votre endpoint renvoie une erreur (code >= 400), Maluro réessaie :

  • 1ère tentative : immédiate
  • 2ème tentative : après 5 minutes
  • 3ème tentative : après 30 minutes
  • 4ème tentative : après 2 heures

Codes de réponse attendus

CodeSignification
200Succès
4xx/5xxErreur, retry programmé

Répondez rapidement (- de 5 secondes) et traitez le webhook de manière asynchrone si nécessaire.