# Conditions

Demandez seulement ce qui compte pour chaque personne. Une condition affiche une question quand une réponse précédente le demande, et les
demandes simples restent courtes.

## Ajouter une condition

Ajoutez-en une sur un champ dans le **Constructeur**, ou enregistrez-en de réutilisables sous **Conditions**. Combinez les règles avec tous, au moins un et aucun.

Par exemple, affichez **Budget** seulement quand **Service** vaut **Projet complet**. Consultez la [recette de demande de soumission](/fr/guides/recipe-quote-request/).

## Ce qu’une condition peut faire

- **Afficher ou masquer un champ.** Une section peut aussi dépendre d’une réponse, sous **Parcours**. Consultez [Étapes et sections](/fr/guides/multi-step-forms/).
- **Appliquer une vérification,** pour que **Nom de l’entreprise** soit obligatoire seulement quand **Type de projet** vaut **Commercial**. Consultez [Validation](/fr/guides/validation/).
- **Choisir qui reçoit le courriel,** dans l’onglet **Livraison**. Consultez [Règles d’acheminement](/fr/guides/delivery-rules/).

Le serveur applique les mêmes conditions : les réponses aux champs masqués sont retirées, ne sont jamais obligatoires, et ne sont ni
conservées ni livrées.

## Aller plus loin

### Des conditions en JSON

Les définitions de formulaire les conservent sous forme de `visibilityRules`, qui sont publiques, alors votre propre interface peut aussi s’en
servir. Pour chaque opérateur, consultez [les conditions dans la définition de formulaire](/fr/guides/form-reference/#conditions).

```json
{
  "fields": {
    "contact": {
      "type": "object",
      "fields": {
        "preferredMethod": { "type": "select", "allowedValues": ["email", "phone"] },
        "phone": { "type": "phone" }
      }
    }
  },
  "visibilityRules": [
    {
      "id": "show-phone-when-preferred",
      "path": "contact.phone",
      "default": "hidden",
      "when": {
        "path": "contact.preferredMethod",
        "operator": "equals",
        "value": "phone"
      },
      "state": "visible"
    }
  ]
}
```

Votre interface utilise ces règles pour afficher ou masquer des champs. Le serveur les évalue aussi, peu importe ce que fait votre interface.
