JeriCommerce suit toutes les interactions importantes des clients avec votre programme de fidélité. Lorsque vous connectez l’intégration Custom API, tous les événements sont envoyés sous forme de webhooks HTTP POST à l’endpoint configuré. Vous disposez ainsi d’une grande flexibilité pour créer des automatisations personnalisées, synchroniser des données ou déclencher des flux dans n’importe quel système.
Configuration ¶
Ajoutez votre endpoint webhook dans Settings → Integrations → API, activez la fonctionnalité Events, puis enregistrez. À partir de ce moment, chaque événement admissible lié à un client est envoyé à votre URL sous forme de requête POST.
Authentification ¶
Chaque requête inclut un en-tête x-jericommerce-hmac-sha256 contenant une signature chiffrée avec HMAC-SHA256 à l’aide du secret affiché sur la page de l’intégration. Validez cette signature sur votre serveur pour vérifier que la requête provient bien de JeriCommerce et éviter toute usurpation.
Le type d’événement est transmis dans l’en-tête x-jericommerce-event-type : utilisez-le pour diriger la charge utile vers le gestionnaire approprié.
Échecs de remise et nouvelles tentatives ¶
Les erreurs réseau, les réponses 408, 429 et 5xx entraînent de nouvelles tentatives selon un délai exponentiel, jusqu’à 10 tentatives. Les erreurs client permanentes, telles que 401, 403, 404 et 410, échouent immédiatement et ne sont pas relancées. Rendez votre endpoint idempotent, car une défaillance temporaire peut tout de même entraîner plusieurs livraisons du même événement.
JeriCommerce compte les erreurs permanentes consécutives pour chaque intégration API. Après 10 échecs permanents, il désactive la fonctionnalité Events de cette intégration afin de ne plus envoyer de requêtes à un endpoint défectueux. Corrigez l’endpoint, puis réactivez Events dans les paramètres d’intégration API. Une livraison réussie remet à zéro le compteur d’échecs consécutifs.
Charge utile de base ¶
Tous les webhooks utilisent cette structure de base :
{
"email": "customer@example.com",
"id": "event-uuid",
"customerId": "customer-uuid",
"campaignId": "campaign-uuid",
"url": "https://...",
"browser": "Chrome 120",
"createdAt": "2026-03-08T12:00:00Z",
"properties": { ... }
}
Les champs indiqués comme facultatifs ci-dessous peuvent être absents de certains événements :
campaignId: uniquement si l’événement est lié à une campagne préciseurletbrowser: uniquement pour les événements provenant du Web
Tous les événements ¶
Voici la liste complète des 19 événements envoyés à votre webhook. La colonne Event name correspond à la valeur de l’en-tête x-jericommerce-event-type. La colonne Key properties répertorie les champs disponibles dans l’objet properties pour chaque événement.
| Nom de l’événement | Déclencheur | Principales propriétés | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Customer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Customer created | Un nouveau client est inscrit (sauf lors d’une synchronisation initiale) | email, origin, referral, utmCampaign, utmMedium, utmSource, firstName, lastName, phoneNumber |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Customer birthday | Une tâche planifiée vérifie chaque jour les dates d’anniversaire (vers 9 h UTC) | age (calculé à partir de la date de naissance) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Customer scanned | Le client scanne un code NFC dans un point de vente via Shopify POS | Informations sur l’emplacement et l’appareil | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Customer tapped | Le client présente sa carte à un appareil VTAP/NFC | Informations sur l’appareil | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet pass | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet pass requested | Le client demande un lien de téléchargement de sa carte Wallet | email, referral, downloadLink, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet pass installed | Le client ajoute le pass à Apple Wallet ou Google Wallet | referral, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet pass uninstalled | Le client retire le pass de son portefeuille | referral, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Loyalty | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Balance changed | Des points de fidélité sont ajoutés ou retirés (achats, remboursements, ajustements manuels) | amount, reference, previous (solde avant la modification), pointsToNextReward, nextRewardName |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tier changed | Le niveau de fidélité du client change (recalcul quotidien à 5 h ou à la suite d’un changement de solde) | previous (nom du niveau), current (nom du niveau) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coupons | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coupon assigned | Un code coupon est attribué à un client | code, header, body, slug, assignedFrom, installUrl |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coupon expiring | Un code coupon attribué et non utilisé expire le lendemain selon le calendrier du magasin | couponId, couponCodeId, couponSlug, code, expiresAt |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coupon pass installed | Le client ajoute un pass coupon à Apple Wallet ou Google Wallet | referral, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coupon pass uninstalled | Le client retire un pass coupon de son portefeuille | referral, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gift cards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gift card sent | L’administrateur envoie une carte-cadeau à un client | code, header, body, slug, assignedFrom, installUrl, mailSent |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Rewards | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reward redeemable | Une récompense devient accessible à l’utilisation par le client | rewardId, rewardLink, rewardTitle, rewardValue, rewardCost, customerRemainingBalance |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reward redeemed | Le client utilise une récompense | rewardId, rewardLink, rewardTitle, code |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reward refunded | L’administrateur rembourse une récompense précédemment utilisée | claimId |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Engagement | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet click | Le client clique sur un lien dans son pass Wallet | url, browser, utmCampaign, utmSource ("wallet"), utmMedium ("wallet_pass") |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Wallet visit | Le client visite ou ouvre l’application web de son pass Wallet | name, url, browser, referral, utmCampaign, utmSource, utmMedium |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C’est prêt ! Votre endpoint recevra désormais en temps réel les données de chaque interaction des clients avec JeriCommerce.
Coupon expiring ¶
L’événement Coupon expiring est disponible dans la correspondance générique des événements API. Il est émis pour un code coupon attribué à un client, non utilisé et qui expire le lendemain selon le fuseau horaire du magasin configuré dans Shopify. Si JeriCommerce ne peut pas lire ce fuseau horaire, il utilise UTC. Il ne s’agit pas d’un rappel envoyé exactement 24 heures avant l’expiration.
Les properties de l’événement comprennent couponId, couponCodeId, couponSlug, code et expiresAt. Utilisez-les pour créer votre propre automatisation. L’événement n’envoie automatiquement aucun e-mail ni aucune notification push et n’est pas disponible comme déclencheur Shopify Flow.