# Webhook

<Aside type="caution" icon="setting" title="Assistance d'un développeur requise">
 Vous aurez besoin de l'aide de votre équipe de développeurs pour configurer l'élément Webhook. Partagez ce guide avec eux pour commencer.
</Aside>

Les webhooks vous permettent d'envoyer des données de parcours à des services externes tels que des outils d'analyse, des systèmes CRM et des outils marketing. Vous pouvez :

*   Notifier les systèmes externes lorsqu'un client effectue une action dans le parcours
*   Envoyer les données client aux outils d'analyse
*   Déclencher des e-mails, SMS ou WhatsApp tiers lors d'événements de parcours spécifiques

<Aside type="note">
Découvrez quelques exemples de mise en œuvre de webhooks pour différents cas d'utilisation et services : [Exemples d'intégration de Webhook](/fr/developer/guides/customer-journey/webhook-samples/)
</Aside>

## Comment configurer l'élément Webhook 
### Ajoutez l'élément Webhook
Faites glisser et déposez l'élément **Webhook** sur le canevas. Placez le **Webhook** où vous le souhaitez, en gardant à l'esprit les informations de parcours que vous allez envoyer à un service tiers.

<img src="/journey-elements-README-40.webp" alt="Élément Webhook sur le canevas avec les paramètres de nom et de requête"/>

### Nommez l'étape Webhook et spécifiez l'URL et le type de la requête
Dans le champ **NOM DE L'ÉTAPE**, saisissez un nom pour le webhook. Il peut être pratique de nommer les webhooks en fonction des services auxquels ils envoient des données ou du cas d'utilisation.

Ensuite, dans le champ **URL**, spécifiez l'URL de la requête à laquelle les données doivent être envoyées. À côté du champ URL, sélectionnez le type de requête dans le menu déroulant **TYPE DE REQUÊTE** : `GET` ou `POST`.
<img src="/journey-elements-webhook-1.webp" alt="Interface de configuration du Webhook montrant le champ URL et le menu déroulant TYPE DE REQUÊTE pour sélectionner la méthode GET ou POST"/>
### Configurez les en-têtes
Dans la section **EN-TÊTES**, définissez le type de contenu. 

Par défaut, le type de contenu est **application/json**. Si le service auquel vous envoyez le webhook nécessite un autre type de contenu, saisissez celui qui convient dans la valeur de l'en-tête **Content-Type**. 

Exemples de types de contenu :

*   `x-www-form-urlencoded`
*   `text/plain`
*   `text/xml`

Ajoutez des en-têtes supplémentaires si nécessaire en cliquant sur **+ AJOUTER UN EN-TÊTE**. Vous pouvez supprimer n'importe quel en-tête en cliquant sur l'icône « x » à côté de celui-ci.

Par exemple, certaines API peuvent nécessiter une **authentification HTTP de base**. Pour authentifier de telles requêtes, procédez comme suit :

1.  Ouvrez un éditeur de texte brut et tapez votre nom d'utilisateur et votre mot de passe sans espaces, séparés par un deux-points. Par exemple : `myuser:mypass`
2.  Encodez cette chaîne en Base64.
3.  Copiez la chaîne Base64 résultante (par exemple, `bXl1c2VyOm15cGFzcw==`).
4.  Dans les paramètres du webhook, ajoutez un en-tête Authorization avec la valeur : `Basic <VOTRE CHAÎNE BASE64>`. Assurez-vous qu'il y a un espace après le mot « Basic ».

<img src="/journey-elements-webhook-2.webp" alt="Exemple d'en-tête d'autorisation pour l'authentification de base dans les paramètres du webhook, montrant les en-têtes Content-Type et Authorization"/>
### Ajoutez le corps de la requête JSON
Dans la section **DONNÉES**, saisissez le corps de votre requête JSON. Assurez-vous que le corps de la requête est au format JSON correct.

<Aside type="note">
S'il n'y a pas de valeur pour l'espace réservé aux Données dynamiques lorsque la requête POST est envoyée, la valeur nulle sera transmise.
</Aside>

Exemple :
```
{
  "hwid": "{{device:hwid}}"
}
```



### Utilisez les données dynamiques et les macros

Le panneau **CONSTRUCTEUR DE DONNÉES** vous permet d'insérer des informations dynamiques (telles que les données d'utilisateur, d'appareil, de tag ou d'événement) directement dans le corps de votre requête JSON. Avec les Données dynamiques, vous pouvez inclure des valeurs spécifiques à l'utilisateur individuel progressant dans le parcours.

Pour cela : 
1.  Sélectionnez une **catégorie**. Vous pouvez extraire des données de trois catégories :

    *   **Appareil :** Utilisez les données de l'appareil lorsque vous avez besoin d'informations techniques liées à l'appareil de l'utilisateur.

    *   **Tag :** Utilisez les données de Tag lorsque vous souhaitez envoyer des informations stockées dans le profil utilisateur.

    *   **Événement :** Utilisez les données d'événement lorsque le webhook doit envoyer des valeurs de l'événement déclencheur du parcours.

2.  Sélectionnez un **paramètre** (par exemple, HWID, catégorie préférée, etc.).
3.  Pushwoosh génère une macro qui ressemble à ceci :

```
{{tag:Language}}
```

4.  Copiez la macro et collez-la dans le corps de votre JSON dans la section DONNÉES.

Lorsque le webhook s'exécute dans un parcours en direct, Pushwoosh remplace automatiquement la macro par la valeur réelle pour cet utilisateur.

<img src="/journey-elements-webhook-3.webp" alt="Insérer des espaces réservés pour les Données dynamiques dans le corps de la requête du webhook"/>

### Mappez les données de réponse du webhook à des variables

En plus d'envoyer des données, l'élément Webhook peut également capturer des données de la réponse qu'il reçoit et les transformer en variables. Ces variables peuvent ensuite être utilisées plus tard dans le parcours. Par exemple, définissez un tag avec [**Mettre à jour le profil utilisateur**](/fr/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response), ou planifiez un [**Délai**](/fr/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response) basé sur une valeur renvoyée par le service externe. Pour un exemple de parcours complet, consultez [Utiliser les données de réponse du webhook dans votre parcours](/fr/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/).

Dans la section **MAPPAGE DE LA RÉPONSE**, cliquez sur **+ AJOUTER UN MAPPAGE** et remplissez deux champs pour chaque valeur que vous souhaitez capturer :

*   **Chemin :** l'emplacement de la valeur dans le corps de la réponse JSON
*   **Attribut :** le nom que vous utilisez pour référencer cette valeur plus tard dans le parcours

<img src="/journey-elements-webhook-4.webp" alt="Section de mappage de la réponse avec les champs Chemin et Attribut et le bouton Ajouter un mappage dans les paramètres du webhook"/>

Par exemple, si votre CRM répond avec :

```
{
  "data": {
    "user": {
      "id": "789xyz"
    }
  }
}
```

Définissez le **Chemin** sur `data.user.id` et l'**Attribut** sur `crm_user_id` pour capturer cet ID.

<Aside type="note">
Quelques points à savoir sur le mappage :

- **Le chemin** est un simple chemin séparé par des points (clés d'objet et, pour les tableaux, des index numériques, par exemple `results.0.code`). Il ne prend pas en charge les caractères génériques ou les filtres, il ne peut donc pointer que vers une seule valeur spécifique à la fois.
- Les valeurs sont stockées exactement telles qu'elles proviennent de la réponse JSON (texte, nombre ou vrai/faux). Il n'y a pas de conversion de type. Si vous prévoyez d'utiliser une valeur comme date dans un élément **Délai**, assurez-vous que votre service la renvoie dans l'un des formats de date pris en charge par **Délai**.
- Si la réponse n'est pas un JSON valide, ou si un **Chemin** ne correspond à rien, la variable correspondante n'est pas créée pour cet utilisateur. Aucune erreur n'est affichée, et l'étape **Webhook** se termine toujours normalement.
</Aside>

<Aside type="caution">
Les corps de réponse de plus de 64 Ko ne sont pas du tout traités pour le mappage. Gardez la réponse que votre point de terminaison renvoie raisonnablement petite si vous prévoyez d'en mapper les valeurs.
</Aside>

<LinkCard title="Utiliser les données de réponse du webhook dans votre parcours" href="/product/customer-journey/journey-elements/using-webhook-response-data-in-journeys/" />

### Testez le Webhook
Cliquez sur **Tester le webhook** pour vérifier que la configuration de votre webhook est correcte et que la requête est envoyée avec succès.

### Enregistrez votre configuration
Cliquez sur **Appliquer** pour enregistrer la configuration de votre webhook.