Développeurs
Webhooks
Informez vos propres systèmes lorsqu’il se passe quelque chose dans une conversation.
Les webhooks sont une action des automatisations. Lorsque l’automatisation s’exécute, Shopxare envoie une requête POST avec du JSON à votre adresse.
Contenu
{
"event": "conversation_closed",
"workflow": { "id": "…", "name": "Tell the CRM" },
"conversation": {
"id": "…", "status": "closed", "channel": "widget", "priority": "normal",
"assignee_id": 3, "team_id": null, "tags": ["vip"],
"last_message": "Thanks!", "url": "https://app.shopxare.com/w/…/inbox/…"
},
"contact": { "id": "…", "name": "Ada", "email": "[email protected]", "type": "user", "attributes": {} },
"sent_at": "2026-10-08T12:00:00+00:00"
}
event est le déclencheur de l’automatisation : conversation_started, customer_replied, teammate_replied, conversation_closed, tag_added, unanswered_for ou customer_idle_for. L’en-tête X-Shopxare-Event porte la même valeur.
Vérifier la signature
Chaque requête comporte un en-tête comme celui-ci :
X-Shopxare-Signature: t=1760000000,v1=5f2b…
v1 est un HMAC-SHA256 de "<t>.<raw body>" avec le secret de signature de l’automatisation (affiché dans l’éditeur d’automatisation). Calculez-le vous-même et comparez ; rejetez les horodatages trop anciens.
[$t, $v1] = sscanf($header, 't=%d,v1=%s');
$ok = hash_equals(hash_hmac('sha256', $t.'.'.$rawBody, $secret), $v1) && abs(time() - $t) < 300;
Envoi
- L’adresse doit être publique ; les réseaux privés et locaux sont refusés.
- Délai d’attente de 5 secondes, pas de redirections.
- Jusqu’à 3 tentatives, avec une attente de 30 puis de 120 secondes.
- Répondez avec n’importe quel statut
2xx.
Toujours bloqué ? Contact