> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fanifyai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Définir variable

> Action de stratégie qui définit ou met à jour une variable utilisateur. La valeur accepte les jetons dynamiques et son type est détecté automatiquement.

L'action **"Définir variable"** s'utilise dans une règle de [stratégie](/fr/advanced/jobs/autoreply#workflow) pour **enregistrer une valeur sur l'utilisateur** quand la règle matche. Cette valeur est stockée dans une [variable utilisateur](/fr/advanced/strategy/conditions/user-variables/uservar_exists) que vous pouvez ensuite tester dans les conditions d'autres règles.

Si la variable n'existe pas encore, elle est **créée**. Si elle existe déjà, sa valeur est **remplacée**.

## Cas d'usage typiques

* **Marquer une étape franchie** : passer une variable à `true` quand un fan atteint un jalon (première vente, message de bienvenue envoyé…).
* **Mémoriser une information** : stocker un prénom, une préférence ou une date déduite de la conversation.
* **Piloter une séquence** : enregistrer un état (`phase = negociation`) pour aiguiller les règles suivantes.
* **Réinitialiser un indicateur** : forcer une variable à une valeur connue avant de relancer un scénario.

## Configuration

| Propriété              | Rôle                                             | Requis |
| ---------------------- | ------------------------------------------------ | ------ |
| **Nom de la variable** | Nom de la variable à définir ou à mettre à jour. | Oui    |
| **Valeur**             | Valeur à enregistrer. Peut être laissée vide.    | Non    |

Le champ **Valeur** accepte les [jetons dynamiques](/fr/advanced/strategy/tokens) (par exemple `{{USERINFO_Firstname}}`). Les jetons sont résolus au moment de l'exécution, juste avant l'enregistrement.

## Détection automatique du type

La valeur est analysée pour en déduire un type, dans cet ordre :

<Steps>
  <Step title="Booléen">
    Si la valeur vaut `true` ou `false`, elle est stockée comme un booléen.
  </Step>

  <Step title="Date">
    Si la valeur ressemble à une date, elle est reconnue comme une date et pourra être comparée chronologiquement dans les conditions.
  </Step>

  <Step title="Nombre">
    Si la valeur est numérique, elle est stockée comme un nombre (entier ou décimal).
  </Step>

  <Step title="Texte">
    Dans tous les autres cas, la valeur est conservée telle quelle, comme du texte.
  </Step>
</Steps>

<Note>
  Le type détecté détermine comment la variable réagit dans les conditions. Une valeur numérique ou une date peut être comparée avec les conditions **Variable >** et **Variable \<** ; un texte est comparé à l'identique avec **Variable égale**. Si vous voulez forcer du texte, évitez les valeurs qui ressemblent à un nombre, à une date ou à `true`/`false`.
</Note>

<Tip>
  Laisser le champ **Valeur** vide enregistre une chaîne vide. La variable existe alors et sera considérée comme **présente** par la condition [Variable existe](/fr/advanced/strategy/conditions/user-variables/uservar_exists).
</Tip>

## Comportement à l'exécution

L'action enregistre la variable puis la stratégie **continue normalement** avec les actions suivantes de la règle.

Si le **Nom de la variable** est vide, aucune variable n'est enregistrée et la stratégie continue quand même. L'éditeur signale d'ailleurs ce champ comme requis et affiche un avertissement à l'import d'une stratégie où il manque.

<Warning>
  Cette action **écrase** toujours la valeur existante. Si vous voulez au contraire ne définir la variable **que si elle n'existe pas encore** (sans écraser une valeur déjà posée), utilisez plutôt l'action de création de variable, qui laisse la valeur intacte quand la variable est déjà présente.
</Warning>

## Voir aussi

* [Jetons dynamiques](/fr/advanced/strategy/tokens) — Les jetons `{{...}}` utilisables dans le champ Valeur.
* [Variable existe](/fr/advanced/strategy/conditions/user-variables/uservar_exists) — Tester la présence d'une variable dans une condition.
* [Variable égale](/fr/advanced/strategy/conditions/user-variables/uservar_equals) — Comparer la valeur d'une variable dans une condition.
