Passer au contenu principal
Chaque webhook livré par Social media studio suit la même enveloppe et le même schéma de signature. Cette page présente la forme exacte de la requête, la façon de vérifier la signature et l’aspect du bloc data pour les événements courants.

Format de la requête

En-têtes

Chaque livraison inclut ces en-têtes :

Enveloppe

Sauf si vous configurez un payloadTemplate personnalisé, le corps est un objet JSON à quatre champs :
  • event — Le nom exact de l’événement (identique à X-Webhook-Event)
  • category — La catégorie à laquelle appartient l’événement (par ex. post, inbox, subscription)
  • timestamp — Horodatage ISO 8601 de l’envoi de l’événement
  • data — La charge utile propre à l’événement (voir les exemples ci-dessous)
Les nouvelles tentatives réutilisent le même X-Webhook-Delivery-Id. Utilisez-le comme clé d’idempotence afin qu’une livraison relancée ne retraite pas un événement déjà géré.

Vérification de la signature

Chaque corps de requête est signé avec le secret de votre endpoint en HMAC-SHA256. Vérifiez-le à chaque requête pour confirmer que la livraison provient bien de Social media studio.
Vérifiez toujours à partir du corps brut de la requête, avant son analyse en JSON — resérialiser l’objet analysé modifie les espaces et invalide la signature.

Exemples de charges utiles

La forme du bloc data dépend de l’événement. Voici des exemples représentatifs issus des catégories les plus courantes.

Publication

Approbation

Boîte de réception

WhatsApp

Compte social

Abonnement

Le champ newPlanName contient l’identifiant interne de l’offre, comme scale pour Advanced.

IA

Base de connaissances

Analyses

Meilleur moment

Parrainage

Consultez la présentation des webhooks pour la liste complète des 162 événements répartis en 26 catégories.

Modèles de charge utile personnalisés

Si votre endpoint attend une forme différente (par ex. Slack, Discord), définissez un payloadTemplate sur votre abonnement webhook. Les variables disponibles sont :
  • {{event}}
  • {{category}}
  • {{timestamp}}
  • {{data}} — l’objet data complet en JSON
  • {{data.any_field}} — n’importe quel champ imbriqué de la charge utile propre à l’événement
Les variables non résolues restent en place (par ex. {{data.postId}} reste littéral si l’événement ne fournit pas postId). Consultez la page de présentation pour des exemples de modèles Discord et Slack.

Tester en local

Pendant le développement :
  1. Utilisez un outil de tunnel comme ngrok ou Cloudflare Tunnel pour exposer votre serveur local.
  2. Créez un abonnement webhook dans Paramètres → Webhooks pointant vers l’URL de votre tunnel.
  3. Cliquez sur le bouton Tester de l’abonnement pour envoyer un événement d’exemple sans déclencher d’activité réelle.
  4. Inspectez la charge utile dans Webhook.site si vous voulez voir la requête brute avant d’écrire un vérificateur.
Si votre endpoint échoue 10 livraisons consécutives, l’abonnement est désactivé automatiquement. Réactivez-le depuis le tableau de bord une fois le problème corrigé.