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

# Jetons dynamiques

> Référence complète du système de jetons {{...}} des stratégies : syntaxe, valeurs de repli (fallbacks), champs compatibles et liste exhaustive des jetons disponibles avec exemples.

Les **jetons dynamiques** (tokens) sont des marqueurs de la forme `{{NOM_DU_JETON}}` que vous insérez dans les champs texte d'une [stratégie](/fr/advanced/jobs/autoreply#workflow). Au moment où la règle s'exécute, chaque jeton est **remplacé par la valeur réelle** correspondante : le prénom de l'utilisateur, le nom du créateur, la date du jour, etc. Un même texte s'adapte ainsi automatiquement à chaque utilisateur.

```text theme={null}
Coucou {{USERINFO_Firstname|{{USER_Name}}|toi}} 😘 tu m'as manqué !
```

Pour un utilisateur dont le prénom connu est « Kevin », ce texte devient : `Coucou Kevin 😘 tu m'as manqué !`

## Insérer un jeton

Les champs compatibles affichent le placeholder **« Tapez `@` ou `{{` pour insérer un token... »**. Trois façons d'insérer un jeton :

* Taper `{{` ou `@` dans le champ : une **autocomplétion** s'ouvre avec la liste des jetons, filtrable en tapant le début du nom.
* Cliquer sur le bouton **Insérer un token** du champ, puis choisir une classe (**Sélectionner une classe**) et un jeton.
* Passer en mode **Plein écran** pour éditer confortablement les textes longs.

Une fois inséré, le jeton apparaît sous forme de **pastille colorée** (une couleur par classe de jetons). Cliquer sur la pastille ouvre l'éditeur **Modifier le token**, qui permet notamment d'ajouter des valeurs de repli.

## Valeurs de repli (fallbacks)

Un jeton peut ne pas avoir de valeur (information non renseignée pour cet utilisateur). Pour éviter un texte à trou, chaque jeton accepte une **chaîne de valeurs de repli**, séparées par `|` :

```text theme={null}
{{USERINFO_Firstname|{{USER_Name}}|beau gosse}}
```

Règles d'évaluation :

* Les valeurs sont essayées **de gauche à droite** (dans l'éditeur de fallback : de haut en bas — **« Les fallbacks sont évalués de haut en bas jusqu'à trouver une valeur »**). La première valeur non vide est utilisée.
* Un fallback peut être **un autre jeton** (bouton **Ajouter un token fallback**) ou un **texte libre** (bouton **Ajouter un texte fallback**).
* Une information **vide ou non renseignée** compte comme absente : le fallback suivant est essayé.
* Si toutes les valeurs échouent, le jeton est remplacé par un **texte vide** (le code `{{...}}` n'apparaît jamais tel quel dans le message envoyé).

Exemple de résolution du jeton ci-dessus :

| Situation                                     | Résultat     |
| --------------------------------------------- | ------------ |
| Prénom connu (« Kevin »)                      | `Kevin`      |
| Prénom inconnu, pseudo plateforme « kev\_92 » | `kev_92`     |
| Prénom et pseudo inconnus                     | `beau gosse` |

## Où utiliser les jetons

### Dans les actions

Tous les champs texte suivants des actions de stratégie supportent les jetons, résolus **au moment où l'action s'exécute** :

| Action                                                                        | Champs avec jetons                      |
| ----------------------------------------------------------------------------- | --------------------------------------- |
| **Envoyer un message**                                                        | Texte du message                        |
| **Envoyer un média**                                                          | Texte accompagnant le média             |
| **Envoyer un lien de paiement**                                               | Texte accompagnant le lien              |
| **Envoyer une notification**                                                  | Titre et description de la notification |
| **Définir une variable utilisateur**                                          | Valeur à assigner                       |
| **Créer une variable utilisateur (si inexistante)**                           | Valeur initiale                         |
| **Incrémenter / Décrémenter une variable utilisateur**                        | Montant                                 |
| **Ajouter un flag utilisateur**                                               | Commentaire du flag                     |
| **[Planifier une relance](/fr/advanced/strategy/actions/schedule_follow_up)** | Instruction de la relance               |
| **Extraire info → Variable**                                                  | Prompt d'extraction                     |

<Info>
  Pour les variables utilisateur, le montant d'**Incrémenter / Décrémenter** doit donner un **nombre** une fois le jeton résolu, sinon l'action échoue.
</Info>

### Dans les conditions

La **valeur comparée** des conditions textuelles (de type « contient », « égal à », « expression régulière ») supporte aussi les jetons. Le jeton est résolu **avant** la comparaison.

Exemple : la condition **Dernier message du fan contient** avec la valeur `{{CREATORPERSONA_Firstname}}` détecte que l'utilisateur a mentionné le prénom du créateur dans son dernier message.

### Dans les injections de la stratégie

Les textes de la stratégie injectés à l'IA (contexte, objectifs, règles) sont également détokénisés avant d'être transmis aux agents de génération.

## Jetons disponibles

Les jetons sont organisés en **4 classes**, reconnaissables à leur préfixe et à la couleur de leur pastille. La liste ci-dessous est exhaustive : c'est celle proposée par l'autocomplétion de l'éditeur.

### Environnement (`ENVIRONMENT_`)

Valeurs calculées au moment de l'exécution (date, heure).

| Jeton                      | Description                                                                                                                                       | Exemple de valeur     |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| `{{ENVIRONMENT_NowUTC}}`   | Date et heure actuelles en UTC                                                                                                                    | `2026-07-18 14:30:00` |
| `{{ENVIRONMENT_NowLocal}}` | Date et heure actuelles dans le **fuseau horaire du créateur** (déduit du pays de la persona, sinon du marché configuré de l'instance, sinon UTC) | `2026-07-18 16:30:00` |

### Utilisateur (`USER_`)

Données du compte de l'utilisateur en interaction (plateforme, activité).

| Jeton                      | Description                                                                    | Exemple de valeur     |
| -------------------------- | ------------------------------------------------------------------------------ | --------------------- |
| `{{USER_Name}}`            | Nom affiché de l'utilisateur, récupéré depuis la plateforme au premier contact | `kev_92`              |
| `{{USER_CreatedDate}}`     | Date du premier contact avec l'utilisateur                                     | `2026-05-02 21:14:07` |
| `{{USER_LastActive}}`      | Date de dernière activité de l'utilisateur                                     | `2026-07-18 13:05:41` |
| `{{USER_TelegramPseudo}}`  | Pseudo Telegram de l'utilisateur                                               | `kev_92`              |
| `{{USER_InstagramPseudo}}` | Pseudo Instagram de l'utilisateur                                              | `kev.92`              |
| `{{USER_EnableAutoReply}}` | Réponses automatiques activées pour cet utilisateur                            | `true`                |
| `{{USER_EnableAI}}`        | IA activée pour cet utilisateur                                                | `true`                |
| `{{USER_IsWritting()}}`    | `true` si l'utilisateur est en train d'écrire à cet instant                    | `false`               |
| `{{USER_Id}}`              | Identifiant technique de l'utilisateur                                         | `1042`                |

<Warning>
  Les jetons `{{USER_GetUserMedias()}}`, `{{USER_GetAchievements()}}` et `{{USER_GetCounters()}}` existent dans l'autocomplétion mais produisent un **rendu technique** : ne les insérez pas dans un texte destiné à l'utilisateur.
</Warning>

### Infos Utilisateur (`USERINFO_`)

Profil de l'utilisateur, alimenté au fil des conversations (voir [Extraction d'informations](/fr/advanced/jobs/extract-user-info)).

| Jeton                                     | Description                                                                                                                                   | Exemple de valeur   |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `{{USERINFO_Firstname}}`                  | Prénom de l'utilisateur                                                                                                                       | `Kevin`             |
| `{{USERINFO_Lastname}}`                   | Nom de famille de l'utilisateur                                                                                                               | `Martin`            |
| `{{USERINFO_Age}}`                        | Âge renseigné de l'utilisateur                                                                                                                | `27`                |
| `{{USERINFO_GetAge()}}`                   | Âge **calculé** depuis la date de naissance si elle est connue, sinon l'âge renseigné ; vide si aucune des deux informations n'est disponible | `27`                |
| `{{USERINFO_Gender}}`                     | Genre de l'utilisateur                                                                                                                        | `Homme`             |
| `{{USERINFO_Origin}}`                     | Origines de l'utilisateur (liste)                                                                                                             | `italien, espagnol` |
| `{{USERINFO_Email}}`                      | Adresse e-mail de l'utilisateur                                                                                                               | `kevin@exemple.com` |
| `{{USERINFO_Country}}`                    | Pays de l'utilisateur                                                                                                                         | `France`            |
| `{{USERINFO_City}}`                       | Ville de résidence de l'utilisateur                                                                                                           | `Lyon`              |
| `{{USERINFO_Job}}`                        | Métier de l'utilisateur                                                                                                                       | `plombier`          |
| `{{USERINFO_Hobbies}}`                    | Loisirs de l'utilisateur (liste)                                                                                                              | `foot, jeux vidéo`  |
| `{{USERINFO_Notes}}`                      | Notes libres sur l'utilisateur                                                                                                                | —                   |
| `{{USERINFO_BuildPrompt()}}`              | Résumé du profil de l'utilisateur en une phrase, à partir de toutes les informations connues                                                  | —                   |
| `{{USERINFO_GetMinimizedUserInfoJson()}}` | Version JSON compacte des informations renseignées du profil (usage avancé, destiné aux prompts)                                              | —                   |
| `{{USERINFO_Id}}`                         | Identifiant technique du profil                                                                                                               | `1042`              |

### Persona Créatrice (`CREATORPERSONA_`)

Identité du [créateur](/fr/advanced/terminology) : la personnalité publique visible des utilisateurs.

| Jeton                                  | Description                                                                                       | Exemple de valeur  |
| -------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------ |
| `{{CREATORPERSONA_Firstname}}`         | Prénom du créateur                                                                                | `Léa`              |
| `{{CREATORPERSONA_Lastname}}`          | Nom de famille du créateur                                                                        | `Dubois`           |
| `{{CREATORPERSONA_Age}}`               | Âge renseigné du créateur                                                                         | `24`               |
| `{{CREATORPERSONA_GetAge()}}`          | Âge **calculé** depuis la date de naissance du créateur si elle est connue, sinon l'âge renseigné | `24`               |
| `{{CREATORPERSONA_Gender}}`            | Genre du créateur                                                                                 | `Femme`            |
| `{{CREATORPERSONA_Platform}}`          | Plateforme de chat du créateur                                                                    | `Telegram`         |
| `{{CREATORPERSONA_PrimaryLanguage}}`   | Langue principale du créateur (code technique)                                                    | `FR`               |
| `{{CREATORPERSONA_FanGender}}`         | Genre du fan type ciblé (valeur technique)                                                        | `Male`             |
| `{{CREATORPERSONA_PersonalityTraits}}` | Traits de personnalité du créateur (liste)                                                        | `joueuse, taquine` |
| `{{CREATORPERSONA_Job}}`               | Métier du créateur                                                                                | `étudiante`        |
| `{{CREATORPERSONA_City}}`              | Ville du créateur                                                                                 | `Paris`            |
| `{{CREATORPERSONA_Country}}`           | Pays du créateur                                                                                  | `France`           |
| `{{CREATORPERSONA_Hobbies}}`           | Loisirs du créateur (liste)                                                                       | `yoga, photo`      |
| `{{CREATORPERSONA_BuildPrompt()}}`     | Résumé du profil du créateur en une phrase, à partir de toutes les informations renseignées       | —                  |

## Format des valeurs

Une fois résolu, chaque jeton produit du texte selon le type de l'information :

* **Oui/non** : `true` ou `false`.
* **Dates** : format `AAAA-MM-JJ HH:mm:ss` (exemple : `2026-07-18 14:30:00`).
* **Listes** : éléments joints par une virgule (exemple : `foot, jeux vidéo`).
* **Information vide ou non renseignée** : le jeton est considéré sans valeur et déclenche le fallback suivant (ou un texte vide s'il n'y en a pas).

## Exemples

### Message personnalisé avec repli

Action **Envoyer un message**, champ Texte :

```text theme={null}
Coucou {{USERINFO_Firstname|{{USER_Name}}|toi}} 😘 t'es de {{USERINFO_City|quel coin}} ?
```

Si le prénom est inconnu, le pseudo plateforme est utilisé ; sinon « toi ». Si la ville est inconnue, la question devient « t'es de quel coin ? ».

### Horodater un événement dans une variable

Action **Définir une variable utilisateur**, champ Valeur :

```text theme={null}
{{ENVIRONMENT_NowUTC}}
```

La variable contient la date et l'heure du déclenchement de la règle, réutilisable ensuite (par exemple comme échéance d'une [relance](/fr/advanced/strategy/actions/schedule_follow_up)).

### Notification opérateur contextualisée

Action **Envoyer une notification**, champ Titre :

```text theme={null}
{{USERINFO_Firstname|Un fan}} a besoin d'un opérateur
```

### Détecter la mention du prénom du créateur

Condition **Dernier message du fan contient**, valeur :

```text theme={null}
{{CREATORPERSONA_Firstname}}
```

La règle matche si l'utilisateur a écrit le prénom du créateur dans son dernier message.

## Bon à savoir

* Les noms de jetons sont **insensibles à la casse** : `{{userinfo_firstname}}` équivaut à `{{USERINFO_Firstname}}`.
* Les jetons sont résolus **au moment de l'exécution** de l'action ou de l'évaluation de la condition, jamais à l'enregistrement de la règle. Deux exécutions peuvent donc produire des valeurs différentes.
* Un jeton sans valeur et sans fallback est remplacé par un **texte vide** : le code du jeton n'est jamais visible par l'utilisateur. Prévoyez un fallback texte pour les informations souvent absentes (prénom, ville...).
* Les jetons se terminant par `()` sont **calculés à la volée** (âge depuis la date de naissance, résumé de profil...).
* Un fallback texte peut contenir des espaces et des émojis ; il est utilisé tel quel.
* L'autocomplétion de l'éditeur recense l'intégralité des jetons disponibles : cette page les liste tous.

## Voir aussi

* [Planifier une relance](/fr/advanced/strategy/actions/schedule_follow_up) — L'instruction de relance supporte les jetons.
* [Réponses automatiques](/fr/advanced/jobs/autoreply) — Le workflow d'exécution des stratégies.
* [Extraction d'informations](/fr/advanced/jobs/extract-user-info) — Comment le profil utilisateur (jetons `USERINFO_`) est alimenté.
* [Terminologie](/fr/advanced/terminology) — Les termes métiers Fanify.
