# Formulaires de chat : recueillir des informations en une fois

> Créez de courts formulaires de 20 champs au plus, comme une demande de devis ou un retour, que l'agent affiche sous sa réponse au bon moment. Les envois arrivent dans Leads, par e-mail, Slack, webhook et sur un webhook propre au formulaire.

Un formulaire de chat recueille plusieurs informations en une fois, par exemple ce pour quoi un visiteur veut un devis, ou un numéro de commande et le motif d'un retour, au lieu que l'agent pose les questions une par une. Vous créez le formulaire dans l'onglet **Actions**. L'agent décide quand l'afficher. Les champs sont toujours ceux que vous avez définis.

## Créer un formulaire

1. Dans l'onglet **Actions**, allez à **Forms**, sous vos actions, et cliquez sur **Add form**.
2. Remplissez les champs :
   - **Name** (nom) : affiché aux visiteurs comme titre du formulaire. Jusqu'à 60 caractères.
   - **When to show it** (quand l'afficher) : lu par l'agent, jamais montré aux visiteurs. Décrivez en 1 000 caractères au plus les moments où le formulaire est utile. Par exemple : « Quand le visiteur demande le prix d'une commande sur mesure ou veut un devis pour plusieurs articles. »
   - **Fields** (champs) : ce que demande le formulaire, jusqu'à 20 champs. Chacun a un **Label** (libellé) de 60 caractères au plus, un **Type** et une case **Required** (obligatoire). Deux champs ne peuvent pas avoir le même libellé. Utilisez les flèches pour changer l'ordre.
   - **Button text** (texte du bouton) : facultatif, jusqu'à 30 caractères. Laissé vide, les visiteurs voient « Envoyer » dans leur langue.
   - **Message after sending** (message après l'envoi) : facultatif, jusqu'à 300 caractères. Laissé vide, les visiteurs voient un court remerciement dans leur langue.
3. Laissez **Agent can show this form** activé, vérifiez la **Preview** (aperçu) et cliquez sur **Add form**.

| Type | Ce que saisit le visiteur |
|---|---|
| **Short text** | Jusqu'à 200 caractères |
| **Long text** | Jusqu'à 2 000 caractères |
| **Email** | Une adresse e-mail, vérifiée avant l'envoi |
| **Phone** | Un numéro de téléphone de 30 caractères au plus, vérifié avant l'envoi |
| **Number** | Un nombre comme `12` ou `12.5`, aussi avec une virgule |
| **Date** | Une date, choisie dans un champ de date |
| **Dropdown** | L'un de vos choix. Saisissez un choix par ligne, jusqu'à 20 choix de 60 caractères au plus. |

Les visiteurs voient le nom, les libellés, les choix, le texte du bouton et le message exactement tels que vous les écrivez : rédigez-les donc dans la langue de vos visiteurs. Le reste du formulaire, comme « (facultatif) », les messages d'erreur, le « Envoyer » par défaut et le remerciement par défaut, suit **Widget language** dans l'onglet [Appearance](/fr/docs/appearance).

## Gérer vos formulaires

Chaque formulaire de la liste porte le badge **Form** et indique son nombre de champs et d'envois.

- L'interrupteur **Enabled** empêche l'agent de proposer le formulaire, sans le supprimer. Un formulaire déjà affiché dans un chat indique alors « Ce formulaire n'est plus disponible. »
- **Edit** ouvre le formulaire. Renommer ou supprimer un champ conserve les réponses déjà envoyées par les visiteurs. Un formulaire affiché de nouveau dans un chat, par exemple après un rechargement, montre votre version actuelle.
- Le bouton corbeille supprime le formulaire et tous ses envois. C'est irréversible : exportez d'abord les envois depuis l'onglet **Leads** si vous voulez les garder.

Un agent peut avoir jusqu'à 10 formulaires. Les formulaires ne comptent pas dans la limite de 25 actions.

## Quand l'agent affiche un formulaire

L'agent lit **When to show it** pour chaque formulaire activé. Quand la conversation s'y prête, il affiche le formulaire sous sa réponse et le mentionne en une courte phrase. Il ne demande pas les mêmes informations dans le chat.

- Le formulaire est construit à partir de celui que vous avez enregistré. Le modèle d'IA décide seulement quand l'afficher, jamais ce qu'il demande.
- L'agent affiche au plus un formulaire sous une réponse.
- Aucun formulaire n'apparaît sous une réponse qui affiche déjà le [formulaire de leads](/fr/docs/lead-collection) parce que l'une de vos règles l'a déclenché.
- Les formulaires ne s'affichent pas dans les discussions temporaires, où rien n'est enregistré. L'agent invite plutôt le visiteur à revenir à sa conversation enregistrée.

Les formulaires apparaissent dans la bulle de chat, l'iframe intégrée, le lien direct, la [page d'aide](/fr/docs/help-page) et le **Playground**. Ils sont enregistrés avec la réponse et s'affichent donc aussi dans les transcriptions de l'onglet **Conversations**, où **Why this answer** les liste sous **Actions called** comme « Form ».

## Ce que font les visiteurs

Le visiteur remplit le formulaire sous la réponse et clique sur le bouton. Les champs obligatoires et les réponses e-mail, téléphone, nombre et date sont vérifiés avant l'envoi. Le formulaire affiche ensuite votre **Message after sending**.

Chaque formulaire peut être envoyé une fois par conversation. Il apparaît ensuite comme envoyé, même si le visiteur recharge la page.

## Les envois dans l'onglet Leads

Dans l'onglet **Leads**, la carte **Form submissions** liste ce que les visiteurs ont envoyé. Choisissez un formulaire sous **Form** pour voir ses envois, du plus récent au plus ancien, 20 par page, avec les réponses et un lien vers la conversation.

- **Refresh** charge les nouveaux envois.
- **Export CSV** télécharge jusqu'à 10 000 des envois les plus récents du formulaire choisi. Le fichier contient les colonnes `Submitted at (UTC)`, une colonne par champ avec son libellé actuel, dans l'ordre du formulaire, et `Conversation ID`. Un champ supprimé reçoit une colonne après celles-ci quand un envoi y a répondu. Les réponses qui commencent par `=`, `+`, `-` ou `@` reçoivent une apostrophe au début, pour que les tableurs ne les lisent pas comme des formules.
- Le bouton corbeille supprime un envoi. Les webhooks et e-mails déjà envoyés ne sont pas concernés.

> Les envois sont séparés des leads. Une adresse e-mail dans un formulaire n'ajoute pas de lead et ne déclenche ni alerte de nouveau lead ni webhook `lead.created`.

## Notifications

- **E-mail** : chaque envoi est transmis par e-mail aux destinataires de vos [alertes de leads](/fr/docs/lead-alerts-and-export), mais uniquement tant que **Email when a new lead arrives** est activé. L'objet est `New "` suivi du nom du formulaire, de `" form from` et du nom de l'agent. L'e-mail liste les réponses et l'heure, avec un bouton **See the conversation**. Si le formulaire a un champ e-mail, la réponse part vers l'adresse saisie par le visiteur. Chaque agent envoie au plus 30 e-mails de formulaire par heure, indépendamment des alertes de leads ; au-delà, les envois sont tout de même enregistrés.
- **Slack** : dans la carte **Slack alerts**, cochez **Form submission** sous **Post a message for**. Consultez [Alertes Slack](/fr/docs/lead-alerts-and-export).
- **Webhooks** : abonnez un webhook à **Form submitted** pour recevoir l'événement `form.submitted` avec les réponses de tous les formulaires. Consultez [Webhooks](/fr/docs/webhooks).
- **Le webhook propre au formulaire** : envoyez les envois de ce seul formulaire à une adresse ; voir ci-dessous.

## Un webhook pour un formulaire

Chaque formulaire peut avoir un webhook à lui, par exemple pour envoyer les demandes de devis à votre CRM et les demandes de retour à votre système de boutique. Il ne reçoit que les envois de ce formulaire.

1. Dans l'onglet **Actions**, cliquez sur **Edit** sur un formulaire enregistré. **Webhook for this form** se trouve en bas de l'éditeur. Un nouveau formulaire l'obtient une fois que vous l'avez ajouté.
2. Dans **Endpoint URL**, collez l'adresse que votre serveur ou votre outil indique pour les webhooks entrants et cliquez sur **Add webhook**. L'adresse doit commencer par `https://` et pointer vers un serveur public, comme pour les webhooks de l'agent.
3. Copiez le secret de signature qui s'affiche, conservez-le là où votre récepteur peut le lire, puis cliquez sur **I've saved it**. Il ne s'affiche en entier que cette fois-ci.
4. Cliquez sur **Send test event** pour vérifier la connexion.

Le panneau s'enregistre de lui-même, indépendamment du formulaire. Son interrupteur **Active** met les envois en pause, **Save address** modifie l'adresse, **New secret** remplace le secret, **Remove** supprime le webhook et son historique d'envois, et **Recent deliveries** affiche les 20 derniers envois avec un bouton **Resend** pour ceux en échec. La liste des formulaires affiche « own webhook » à côté d'un formulaire qui en a un.

- Il envoie l'événement `form.submitted`, avec le même contenu, la même signature, les mêmes nouvelles tentatives et le même journal d'envois que les [webhooks](/fr/docs/webhooks) de l'agent. Ses événements ne peuvent pas être modifiés.
- Il ne compte pas dans les 5 webhooks de l'agent et ne figure pas dans la carte **Webhooks** de l'onglet **Leads**.
- Les webhooks de l'agent abonnés à **Form submitted** reçoivent toujours les envois de tous les formulaires, y compris celui-ci. Pour envoyer les envois d'un formulaire uniquement à son propre webhook, décochez **Form submitted** sur les webhooks de l'agent.
- Supprimer le formulaire supprime aussi son webhook. Un [agent dupliqué](/fr/docs/quick-start) reçoit une copie des formulaires sans leurs webhooks.
- Ajouter ou retirer le webhook, modifier son adresse et créer un nouveau secret nécessitent le rôle **Admin** ou le propriétaire du compte ; les editors peuvent l'activer ou le désactiver et envoyer un événement de test. Consultez [Membres de l'équipe et rôles](/fr/docs/team).

## Dupliquer un agent

Un [agent dupliqué](/fr/docs/quick-start) reçoit une copie des formulaires, sans les webhooks propres aux formulaires. Les envois restent avec l'agent d'origine.

> L'agent décide surtout d'après **When to show it**. S'il affiche le formulaire trop souvent ou jamais, décrivez les moments plus précisément et réessayez dans le Playground.
