Comment pouvons nous vous aider ? 👋

Webhooks

Qu'est-ce qu'un webhook ?

Un webhook permet de remonter des informations dans votre propre CRM de façon automatique.

Un webhook est une URL appelée automatiquement par SPREAD lors de certaines actions : acceptation et refus de consentements, distribution d’un code remis ou mise à jour de la cagnotte d'un profil.

Au déclenchement d'un événement webhook, cette URL est contactée par SPREAD et un payload JSON est attaché à la requête avec des informations utiles pour votre traitement.

Configurer un webhook

Configuration de l'URL de callback

L'URL de callback de votre webhook est l'URL cible que SPREAD va appeler et à laquelle il enverra les données liées au webhook déclenché (en fonction des événements configurés).

⚠️
Cette URL doit être accessible publiquement !

Configuration des événements déclencheurs

Vous avez la possibilité de vous abonner à un ou plusieurs événements pour l'URL passée en paramètre à l'étape précédente.

Pour cela, il suffit de cocher les événements qui vous intéressent. Cette configuration est flexible : vous pouvez avoir une seule URL qui gère tous les événements chez vous, ou une URL par événement.

Voici la liste des événements auxquels vous pouvez vous abonner :

  • Mise à jour de cagnotte
    • ajout ou retrait de points

  • Envoi d'un coupon
    • est déclenché lorsqu'un coupon est donné à un participant

  • Consentement accepté
    • est déclenché quand un profil accepte un consentement.

  • Consentement refusé
    • est déclenché quand un profil refuse un consentement.

  • Consentement à confirmer
    • est déclenché quand un profil accepte un consentement, mais que ce consentement doit être validé via la mécanique de double opt-in.

  • Mise à jour de consentement
    • est déclenché quand un profil met à jour un consentement (le statut du consentement ne change pas, mais les canaux ont été modifiés)

  • Participation complète
    • est déclenché quand un profil est allé au bout d'un module

Gestion des données sur l'URL de callback

Lorsqu'un événement de webhook est déclenché, SPREAD contacte l'URL configurée pour un événement donné et va envoyer les données correspondantes dans un payload JSON.

Exemple de code PHP pour un événement d'acceptation de consentement

$requestBody = file_get_contents('php://input');
$data = json_decode($requestBody);
var_dump($data);
Ce code afficherait les données suivantes (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#6 (2) {
  ["datas"]=>
  object(stdClass)#1 (7) {
    ["customer_id"]=>
    string(8) "1234"
    ["track_id"]=>
    int(5418385783927790223)
    ["gdpr_consent_tech_name"]=>
    string(10) "consentsup"
    ["customer_email"]=>
    string(34) "test@example.com"
    ["customer_firstname"]=>
    string(0) "Prénom"
    ["customer_name"]=>
    string(0) "Nom"
    ["channels"]=>
    array(4) {
      [0]=>
      object(stdClass)#2 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(11) "Canal email"
        ["type"]=>
        string(5) "email"
        ["tech_name"]=>
        string(0) "gdpr_email"
      }
      [1]=>
      object(stdClass)#3 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(9) "Canal SMS"
        ["type"]=>
        string(3) "sms"
        ["tech_name"]=>
        string(0) "gdpr_sms"
      }
      [2]=>
      object(stdClass)#5 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(7) "Email 2"
        ["type"]=>
        string(5) "other"
        ["tech_name"]=>
        string(0) "gdpr_email_2"
      }
    }
  }
  ["name"]=>
  string(23) "spread.consent.accepted"
}

Données reçues par type de webhook

Mise à jour de cagnotte

Nom technique de l'événement : spread.reward.updated

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (4) {
      ["customer_id"]=>
      string(8) "1234" // Identifiant du profil
      ["customer_email"]=>
      string(10) "test@example.com" // Email du profil
      ["customer_firstname"]=>
      string(4) "Prénom" // Prénom du profil
      ["customer_name"]=>
      string(4) "Nom" // Nom du profil
    }
    ["reward"]=>
    object(stdClass)#3 (4) {
      ["reward_line_id"]=>
      string(6) "1234" // ID de la ligne de cagnotte
      ["reward_date_validation"]=>
      string(19) "2018-06-29 12:54:26" // Date de validation de la modification
      ["reward_amount"]=>
      string(2) "15" // Montant de la modification
      ["reward_source"]=>
      string(2) "13" // Source de la mise à jour
    }
  }
  ["name"]=>
  string(21) "spread.reward.updated" // Nom technique de l'événement
}

Valeurs des données spécifiques

Les valeurs du paramètre reward_source peuvent être les suivantes :

  • -1 : Récupération d'un code dans la cagnotte
  • -2 : (Parrainage) Retrait de points au parrain en cas d'annulation d'une commande qui récompense un parrainage
  • -3 : (Parrainage) Retrait de points au filleul en cas d'annulation d'une commande qui récompense un parrainage
  • 1 : (Parrainage) Ajout de points au parrain en cas d'inscription d'un filleul sur le site
  • 2 : (Parrainage) Ajout de points au parrain en cas de passage de commande d'un filleul sur le site
  • 3 : (Parrainage) Ajout de points au filleul s'il passe commande sur le site
  • 4 : (Parrainage) Ajout de points au filleul s'il passe commande sur le site (validation manuelle de la cagnotte)
  • 5 : (Parrainage) Ajout de points au parrain en cas d'inscription d'un filleul sur le site (validation manuelle de la cagnotte)
  • 6 : (Parrainage) Ajout de points au parrain en cas de passage de commande d'un filleul sur le site (validation manuelle de la cagnotte)
  • 7 : Ajouté via la participation à une opération (historique, ne peut plus être ajouté)
  • 8 : (Parrainage) Ajout de points au filleul s'il s'inscrit sur le site
  • 9 : (Parrainage) Ajout au parrain en cas de récupération d'un code promo si le parrainage est lié à une opération de distributionde code promo
  • 10 : (Parrainage) Ajout au filleul en cas de récupération d'un code promo si le parrainage est lié à une opération de distributionde code promo
  • 11 : (Parrainage) Ajout de points au filleul s'il s'inscrit sur le site (validation manuelle de la cagnotte)
  • 12 : Ajout de points via un appel API
  • 13 : Ajout manuel de points via le BO SPREAD
  • 14 : Retrait manuel de points via le BO SPREAD
  • 15 : (Parrainage) Récompense d'objectif de parrainage en cas de participation à une opération
  • 16 : Ajout de crédit dans la cagnotte via une commande
  • 17 : Retrait de crédit dans la cagnotte via une commande
  • 18 : Mise à jour du crédit de la cagnotte via une commande

Envoi d'un code remise

Nom technique de l'événement : spread.incentive.giftcodesent

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (4) {
      ["customer_id"]=>
      string(4) "1234" // Identifiant du profil
      ["customer_email"]=>
      string(16) "test@example.com" // Email du profil
      ["customer_firstname"]=>
      string(7) "Prénom" // Prénom du profil
      ["customer_name"]=>
      string(3) "Nom" // Nom du profil
    }
    ["gift_code"]=>
    object(stdClass)#3 (3) {
      ["code"]=>
      string(19) "TEST-TO-SPREAD-1234" // Code du coupon
      ["value"]=>
      string(2) "15" // Valeur du coupon
      ["unit"]=>
      string(3) "€" // Unité de la valeur du coupon
    }
  }
  ["name"]=>
  string(29) "spread.incentive.giftcodesent"
}

Valeur des données spécifiques

La valeur du champ unit du paramètre gift_code sera l'une des valeurs suivantes. Cette valeur est par exemple définie lorsque vous configurez la récompense à un instant gagnant.

  • £
  • %
  • CHF
  • ¥
  • HKD
  • points

Consentement accepté

Nom technique de l'événement : spread.consent.accepted

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#2 (2) {
  ["datas"]=>
  object(stdClass)#1 (6) {
    ["customer_id"]=>
    string(4) "1234"
    ["track_id"]=>
    string(9) "999999999"
    ["gdpr_consent_tech_name"]=>
    string(9) "NewsEmail"
    ["customer_email"]=>
    string(16) "test@example.com"
    ["customer_firstname"]=>
    string(7) "Prénom"
    ["customer_name"]=>
    string(3) "Nom"
    ["channels"]=> // Tous les canaux du consentement et leur état
    array(3) {
      [0]=>
      object(stdClass)#2 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(11) "Canal email"
        ["type"]=>
        string(5) "email"
        ["tech_name"]=>
        string(11) "EmailChannel"
      }
      [1]=>
      object(stdClass)#3 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(9) "Canal SMS"
        ["type"]=>
        string(3) "sms"
        ["tech_name"]=>
        string(10) "SMSChannel"
      }
      [2]=>
      object(stdClass)#4 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(5) "Canal Téléphone"
        ["type"]=>
        string(3) "tel"
        ["tech_name"]=>
        string(10) "TelChannel"
      }
    }
 
  }
  ["name"]=>
  string(23) "spread.consent.accepted"
}

Valeur des données spécifiques

En même temps que le consentement, l'identifiant de la trace et les informations du profil, nous vous envoyons également la liste des canaux du consentement et leur état.

Un état de canal peut avoir 2 valeurs :

  • 1 : Canal accepté
  • -1 : Canal refusé

Consentement refusé

Nom technique de l'événement : spread.consent.refused

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#2 (2) {
  ["datas"]=>
  object(stdClass)#1 (6) {
    ["customer_id"]=>
    string(4) "1234"
    ["track_id"]=>
    string(9) "999999999"
    ["gdpr_consent_tech_name"]=>
    string(9) "NewsEmail"
    ["customer_email"]=>
    string(16) "test@example.com"
    ["customer_firstname"]=>
    string(7) "Prénom"
    ["customer_name"]=>
    string(3) "Nom"
    ["channels"]=> // Tous les canaux du consentement et leur état
    array(3) {
      [0]=>
      object(stdClass)#2 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(11) "Canal email"
        ["type"]=>
        string(5) "email"
        ["tech_name"]=>
        string(11) "EmailChannel"
      }
      [1]=>
      object(stdClass)#3 (4) {
        ["status"]=>
        string(1) "-1"
        ["name"]=>
        string(9) "Canal SMS"
        ["type"]=>
        string(3) "sms"
        ["tech_name"]=>
        string(10) "SMSChannel"
      }
      [2]=>
      object(stdClass)#4 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(5) "Canal Téléphone"
        ["type"]=>
        string(3) "tel"
        ["tech_name"]=>
        string(10) "TelChannel"
      }
    }
 
  }
  ["name"]=>
  string(22) "spread.consent.refused"
}

Valeur des données spécifiques

En même temps que le consentement, l'identifiant de la trace et les informations du profil, nous vous envoyons également la liste des canaux du consentement et leur état.

Un état de canal peut avoir 2 valeurs :

  • 1 : Canal accepté
  • -1 : Canal refusé

Consentement à confirmer

Nom technique de l'événement : spread.consent.tobeconfirmed

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#2 (2) {
  ["datas"]=>
  object(stdClass)#1 (6) {
    ["customer_id"]=>
    string(4) "1234"
    ["track_id"]=>
    string(9) "999999999"
    ["gdpr_consent_tech_name"]=>
    string(9) "NewsEmail"
    ["customer_email"]=>
    string(16) "test@example.com"
    ["customer_firstname"]=>
    string(7) "Prénom"
    ["customer_name"]=>
    string(3) "Nom"
    ["channels"]=> // Tous les canaux du consentement et leur état
    array(3) {
      [0]=>
      object(stdClass)#2 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(11) "Canal email"
        ["type"]=>
        string(5) "email"
        ["tech_name"]=>
        string(11) "EmailChannel"
      }
      [1]=>
      object(stdClass)#3 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(9) "Canal SMS"
        ["type"]=>
        string(3) "sms"
        ["tech_name"]=>
        string(10) "SMSChannel"
      }
      [2]=>
      object(stdClass)#4 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(5) "Canal Téléphone"
        ["type"]=>
        string(3) "tel"
        ["tech_name"]=>
        string(10) "TelChannel"
      }
    }
 
  }
  ["name"]=>
  string(28) "spread.consent.tobeconfirmed"
}

Valeur des données spécifiques

En même temps que le consentement, l'identifiant de la trace et les informations du profil, nous vous envoyons également la liste des canaux du consentement et leur état.

Un état de canal peut avoir 2 valeurs :

  • 1 : Canal accepté
  • -1 : Canal refusé

Mise à jour de consentement

Nom technique de l'événement : spread.consent.updated

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#2 (2) {
  ["datas"]=>
  object(stdClass)#1 (6) {
    ["customer_id"]=>
    string(4) "1234"
    ["track_id"]=>
    string(9) "999999999"
    ["gdpr_consent_tech_name"]=>
    string(9) "NewsEmail"
    ["customer_email"]=>
    string(16) "test@example.com"
    ["customer_firstname"]=>
    string(7) "Prénom"
    ["customer_name"]=>
    string(3) "Nom"
    ["channels"]=> // Tous les canaux du consentement et leur état
    array(3) {
      [0]=>
      object(stdClass)#2 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(11) "Canal email"
        ["type"]=>
        string(5) "email"
        ["tech_name"]=>
        string(11) "EmailChannel"
      }
      [1]=>
      object(stdClass)#3 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(9) "Canal SMS"
        ["type"]=>
        string(3) "sms"
        ["tech_name"]=>
        string(10) "SMSChannel"
      }
      [2]=>
      object(stdClass)#4 (4) {
        ["status"]=>
        string(1) "1"
        ["name"]=>
        string(5) "Canal Téléphone"
        ["type"]=>
        string(3) "tel"
        ["tech_name"]=>
        string(10) "TelChannel"
      }
    }
 
  }
  ["name"]=>
  string(22) "spread.consent.updated"
}

Valeur des données spécifiques

En même temps que le consentement, l'identifiant de la trace et les informations du profil, nous vous envoyons également la liste des canaux du consentement et leur état.

Un état de canal peut avoir 2 valeurs :

  • 1 : Canal accepté
  • -1 : Canal refusé

Participation complète

Nom technique de l'événement : spread.participation.completed

Exemple de données reçues (Cliquez sur la flèche de gauche pour voir)
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (1) {
      ["customer_id"]=>
      string(4) "1234" // Identifiant du profil
    }
    ["participation"]=>
    object(stdClass)#3 (1) {
      ["action_id"]=>
      string(4) "1234" // ID de la participation au module
    }
  }
  ["name"]=>
  string(29) "spread.participation.completed" // Nom technique de l'événement
}
 
 
 
🆘
Si vous avez d’autres questions sur ce sujet, vous pouvez contacter le support. 💬
Cela a-t-il répondu à votre question ?
😞
😐
🤩