Webhooks

In english ? 

Les webhooks sont utilisés pour 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, tels que les acceptations et refus de consentements, la distribution d’un coupon remise ou la 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.

Créer un webhook

Pour configurer un webhook, rendez-vous dans "Paramétrage > Webhooks", puis utilisez le bouton "Ajouter un webhook" et saisissez le nom de votre webhook.

Configurer un webhook

La configuration du webhook se fait en 3 étapes.

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 qui vient d'être 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 vous 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 :

Nom de l'événementPrécisions
Mise à jour de cagnotteEst déclenché lorsqu'une mise à jour de la cagnotte du profil est effectuée (ajout ou retrait de points) 
Envoi d'un couponEst déclenché lorsqu'un coupon est donné à un participant (via une opération de distribution de coupon, un instant gagnant ou via la cagnotte)
Consentement accepté

Est déclenché quand un profil accepte un consentement.

Cet événement sera déclenché quand un profil validera l'acceptation d'un consentement via la mécanique de double optin.

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 optin.

Mise à jour de consentementEst 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èteEst déclenché quand un profil est allé au bout d'un module

Résumé et activation

Une fois les 2 étapes précédentes validées, il ne vous reste plus qu'à contrôler et activer votre webhook !

Cette page va vous résumer la configuration de votre webhook : l'URL de callback renseignée ainsi que les événements auxquels vous vous êtes abonné.

Vous n'avez plus qu'à utiliser le bouton "Activer" pour démarrer votre webhook.

Gestion des données sur l'URL de callback

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

Voici un exemple de code de traitement possible (en PHP) pour un événement d'acceptation de consentement :

$requestBody = file_get_contents('php://input');
$data = json_decode($requestBody);
var_dump($data);

Le code suivant afficherait les données suivantes :

Exemple de retour de traitement
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

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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
}

Valeur des données spécifiques

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

ValeurSignification / Conditions
-1Ré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)
7Ajouté 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 distribution

de 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 distribution

de code promo

11(Parrainage) Ajout de points au filleul s'il s'inscrit sur le site (validation manuelle de la cagnotte)
12Ajout de points via un appel API
13Ajout manuel de points via le BO SPREAD
14Retrait manuel de points via le BO SPREAD
15(Parrainage) Récompense d'objectif de parrainage en cas de participation à une opération
16Ajout de crédit dans la cagnotte via une commande
17Retrait de crédit dans la cagnotte via une commande
18Mise à jour du crédit de la cagnotte via une commande

Envoi d'un code remise

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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 :

ValeurStatut
1Canal accepté
-1Canal refusé

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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 :

ValeurStatut
1Canal accepté
-1Canal refusé

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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 :

ValeurStatut
1Canal accepté
-1Canal refusé

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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 :

ValeurStatut
1Canal accepté
-1Canal refusé

Participation complète

Format des données envoyées

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

Données reçues :

Exemple de données reçues
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
}

English 

Webhooks are used to feed information into your own CRM automatically.

A webhook is a URL that is automatically called by SPREAD for certain actions, such as accepting and refusing consents, distributing a discounted coupon, or updating a profile's kitty.

When a webhook event is triggered, this URL is contacted by SPREAD and a JSON payload is attached to the request along with useful information for your processing.

Create a webhook

To set up a webhook, go to "Settings> Webhooks", then use the "Add a webhook" button and enter the name of your webhook.

Configure a webhook

The configuration of a webhook is done in 3 steps.

Configuring the callback URL

The callback URL of your webhook is the target URL that SPREAD will call and to which it will send the data related to the webhook that has just been triggered (depending on the events configured).
This URL must be publicly accessible.

Configuring trigger events

You have the possibility to subscribe to one or more events for the URL passed as a parameter in the previous step.

To do this, simply check the events that interest you. This configuration is flexible: you can have a single URL that handles all events at your place, or a URL per event.

Here is the list of events you can subscribe to:

Event nameDetails
Kitty updateIs triggered when an update of the profile's kitty is done (adding or removing points)
Send a discount codeIs triggered when a coupon is given to a participant (by an operation to delivered discount code, a winning instant or via the kitty)
Consent accepted

Is triggered when a profile accepte a consent.

This event is triggered when a profile will validate the acceptance of a consent via the double optin mechanism. 

Consent refused Is triggered when a profile refuse a consent.
Consent to confirm

Is triggered when a profile accepte un consentement, mais que ce consentement doit être validé via la mécanique de double optin.

Consent updateIs triggered when a profile update a consent (consent status doesn't change, but the channels are updated)

Summary and Activation

After the 2 previous steps validated, you just have to control and activate your webhook!

This page will summarize the configuration of your webhook: the entered callback URL and the events you have subscribed.

You just have to use the "Activate" button to start your webhook.

Data management on the callback URL

When a webhook event is triggered, SPREAD will contact the URL you have configured for a specific event and will send the corresponding data to the event in a JSON payload.
Here is an example of a possible treatment code (in PHP) for a consent acceptance event:

$requestBody = file_get_contents('php://input');
$data = json_decode($requestBody);
var_dump($data);

The following code would display the following data:

Exemple de retour de traitement
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"
}

Data received by type of webhook

Kitty update

Format of sent data

Event technical name: spread.reward.updated

Received datas:

Exemple de données reçues
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (4) {
      ["customer_id"]=>
      string(8) "1234" // Profile ID
      ["customer_email"]=>
      string(10) "test@example.com" // Profile Email
      ["customer_firstname"]=>
      string(4) "Prénom" // Profile Firstname
      ["customer_name"]=>
      string(4) "Nom" // Profile Name
    }
    ["reward"]=>
    object(stdClass)#3 (4) {
      ["reward_line_id"]=>
      string(6) "1234" // ID of the Kitty line
      ["reward_date_validation"]=>
      string(19) "2018-06-29 12:54:26" // Change validation date
      ["reward_amount"]=>
      string(2) "15" // Amount of modification
      ["reward_source"]=>
      string(2) "13" // Source of the update
    }
  }
  ["name"]=>
  string(21) "spread.reward.updated" // Technical name of the event
}

Value of specific data

The values ​​of the reward_source parameter can be:

ValueMeaning / Conditions
-1Recovering a code in the kitty
-2(Sponsorship) Canceling of points from the sponsor in case of cancellation of an order that rewards a sponsorship
-3(Sponsorship) Cancelling of points from the godchild in case of cancellation of an order which rewards a sponsorship
1(Sponsorship) Adding points to the sponsor in case of registration of a godson on the site
2(Sponsorship) Adding points to the godfather in case of placing an order from a godson on the site
3(Sponsorship) Adding points to the godson if he places an order on the site
4(Sponsorship) Adding points to the godson if he places an order on the site (manual validation of the kitty)
5(Sponsorship) Adding points to the godfather in case of registration of a godson on the site (manual validation of the kitty)
6(Sponsorship) Adding points to the godfather in case of placing an order from a godson on the site (manual validation of the kitty)
7Added via participation in an operation (history, can not be added anymore)
8(Sponsorship) Adding points to the godchild if he registered on the site
9

(SponsorshipAdding to the sponsor in case of recovery of a discount code if the sponsorship is linked to a distribution operation

discount code

10

(SponsorshipAdding to the godchild in case of recovery of a discount code if the sponsorship is linked to a distribution operation

discount code

11(SponsorshipAdding points to the godchild if he registered on the site (manual validation of the kitty)
12Adding points via an API call
13Adding points manually via the BO SPREAD
14Manual removal of points via the BO SPREAD
15(Sponsorship) Sponsorship Goal Reward for Participating in an Operation
16Adding credit to the kitty via an order
17Removal of credit in the kitty via a command
18Update the pool credit via an order

Send a discount code

Format of sent data

Event technical name: spread.incentive.giftcodesent

Received datas:

Exemple de données reçues
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (4) {
      ["customer_id"]=>
      string(4) "1234" // Profile ID
      ["customer_email"]=>
      string(16) "test@example.com" // Profile Email
      ["customer_firstname"]=>
      string(7) "Prénom" // Profile Firstname
      ["customer_name"]=>
      string(3) "Nom" // Profile Name
    }
    ["gift_code"]=>
    object(stdClass)#3 (3) {
      ["code"]=>
      string(19) "TEST-TO-SPREAD-1234" // Discount code
      ["value"]=>
      string(2) "15" // Code value
      ["unit"]=>
      string(3) "€" // Unit of the code value
    }
  }
  ["name"]=>
  string(29) "spread.incentive.giftcodesent"
}

Value of specific data

The value of the "unit" field of the "gift_code" parameter will be one of the following values. This value is set, for example, when you configure the reward at a winning instant.

$
£
%
CHF
¥
HKD
points

Format of sent data

Event technical name: spread.consent.accepted

Received datas:

Exemple de données reçues
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"]=> // All channels of consent and their status
    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"
}

Value of specific data

In the same time of the consent, the trace identifier and the profile information, we also send you the list of consent channels and their status.

A channel status can be 2 values:

ValueStatus
1Channel accepted
-1Channel refused

Format of sent data

Event technical name: spread.consent.refused

Received datas:

Exemple de données reçues
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"]=> // All channels of consent and their status
    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"
}

Value of specific data

In the same time of the consent, the trace identifier and the profile information, we also send you the list of consent channels and their status.

A channel status can be 2 values:

ValueStatus
1Channel accepted
-1Channel refused

Format of sent data

Event technical name: spread.consent.tobeconfirmed

Received datas:

Exemple de données reçues
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"]=> // All channels of consent and their status
    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"
}

Value of specific data

In the same time of the consent, the trace identifier and the profile information, we also send you the list of consent channels and their status.

A channel status can be 2 values:

ValueStatus
1Channel accepted
-1Channel refused

Format of sent data

Event technical name: spread.consent.updated

Received datas:

Exemple de données reçues
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"]=> // All channels of consent and their status
    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"
}

Value of specific data

In the same time of the consent, the trace identifier and the profile information, we also send you the list of consent channels and their status.

A channel status can be 2 values:

ValueStatus
1Channel accepted
-1Channel refused

Complete participation

Format of sent data

Event technical name: spread.participation.completed

Received datas:

Datas received example
object(stdClass)#4 (2) {
  ["datas"]=>
  object(stdClass)#2 (2) {
    ["customer"]=>
    object(stdClass)#1 (1) {
      ["customer_id"]=>
      string(4) "1234" // Profile ID
    }
    ["participation"]=>
    object(stdClass)#3 (1) {
      ["action_id"]=>
      string(4) "1234" // Module participation's ID
    }
  }
  ["name"]=>
  string(29) "spread.participation.completed" // Event technical name
}