# Smart Content – Documentation

> Documentation complète du module DataFirefly Smart Content : installation, réglages IA, création de segments et de campagnes, A/B testing, statistiques, RGPD et dépannage.

- Page: <https://www.datafirefly.com/documentation/dfsmartcontent/>
- Langue: fr
- Mis à jour le: 2026-06-25
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfsmartcontent/index.md), [es](https://www.datafirefly.com/es/documentation/dfsmartcontent/index.md), [de](https://www.datafirefly.com/de/documentation/dfsmartcontent/index.md), [it](https://www.datafirefly.com/it/documentation/dfsmartcontent/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfsmartcontent/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfsmartcontent/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfsmartcontent/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

DataFirefly Smart Content personnalise le contenu de votre boutique PrestaShop selon le profil, le comportement, le panier et le contexte de chaque visiteur. Le principe est simple : vous définissez des **segments** (des audiences), puis des **campagnes** qui associent un segment à un contenu HTML affiché dans une zone du thème. À chaque page, le module évalue le visiteur et affiche le contenu de la campagne la plus prioritaire dont le segment correspond.

Le module couvre l'ensemble du cycle : segmentation comportementale, diffusion multi-zones, A/B testing, statistiques de conversion et deux assistants IA (génération de contenu et suggestion de segments).

Compatible PrestaShop 1.7.6 à 8.x et 9.x, multiboutique et multilingue. Aucune donnée personnelle n'est stockée.

## Installation

1. Déposez le dossier `dfsmartcontent` dans le répertoire `/modules/` de votre boutique, ou installez le ZIP depuis _Modules → Module Manager → Installer un module_.
2. Cliquez sur **Installer**. Les tables et les onglets d'administration sont créés automatiquement.
3. Un nouveau menu **Smart Content** apparaît, avec quatre sous-sections : _Tableau de bord_, _Campagnes_, _Segments_ et _Réglages_.

## Configuration des réglages

Rendez-vous dans **Smart Content → Réglages**. Deux familles de paramètres y sont disponibles.

### Paramètres IA

- **URL du point d'accès IA** : l'endpoint de complétion de discussion (compatible OpenAI / Mistral). Valeur par défaut : `https://api.mistral.ai/v1/chat/completions`.
- **Modèle IA** : par exemple `mistral-large-latest` ou `gpt-4o-mini`.
- **Clé API IA** : votre clé, stockée côté serveur et jamais exposée au front. Tant qu'elle est vide, les fonctions IA sont désactivées mais le reste du module fonctionne normalement.

### Confidentialité

- **Respecter le consentement cookies** : activé par défaut. Les balises de suivi (impressions / clics) ne se déclenchent qu'une fois le consentement détecté.

Tout fournisseur exposant un contrat _chat completions_ standard convient. Il suffit d'adapter l'URL et le nom du modèle.

## Créer un segment

Un segment est une audience définie par une ou plusieurs **règles**. Allez dans **Smart Content → Segments → Ajouter un segment**.

- **Nom** : un libellé interne (ex. « Clients VIP »).
- **Logique de correspondance** : _Toutes les règles (ET)_ exige que chaque règle soit vraie ; _Au moins une règle (OU)_ suffit qu'une seule le soit.
- **Priorité** : les segments de priorité plus élevée sont évalués en premier.
- **Règles** : ajoutez vos conditions ligne par ligne via le constructeur visuel.

Un segment sans aucune règle correspond à tout le monde : pratique comme audience « par défaut ».

### Référence des règles

Chaque règle se compose d'un **attribut**, d'un **opérateur** et d'une **valeur**. Pour les listes, séparez les valeurs par des virgules. Pour les plages (opérateur _between_), indiquez deux valeurs séparées par une virgule.

- `customer_group` — groupe client (IDs). Opérateurs : in / not_in.
- `logged_in` — visiteur connecté (1 ou 0). Opérateur : eq.
- `new_returning` — `new` ou `returning` selon l'historique de commandes. Opérateur : eq.
- `country` — pays (IDs). Opérateurs : in / not_in.
- `language` — langue (IDs). Opérateurs : in / not_in.
- `currency` — devise (IDs). Opérateurs : in / not_in.
- `device` — `desktop`, `tablet` ou `mobile`. Opérateur : in.
- `orders_count` — nombre de commandes valides. Opérateurs : gte / lte / eq / between.
- `total_spent` — total dépensé. Opérateurs : gte / lte / between.
- `days_since_order` — jours depuis la dernière commande. Opérateurs : gte / lte / between.
- `cart_total` — total du panier courant. Opérateurs : gte / lte / between.
- `cart_has_category` — catégorie présente dans le panier (IDs). Opérateur : in.
- `cart_has_product` — produit présent dans le panier (IDs). Opérateur : in.
- `newsletter` — abonné newsletter (1 ou 0). Opérateur : eq.
- `source_utm` — source UTM de la session. Opérateurs : eq / contains.
- `referrer` — site référent. Opérateurs : contains / not_contains.
- `hour_range` — plage horaire (ex. `9,18`). Opérateur : between.
- `weekday` — jour de la semaine (1 = lundi … 7 = dimanche). Opérateur : in.
- `visits` — nombre de visites du visiteur. Opérateurs : gte / lte / eq.

Le panneau « IDs de référence » affiché sous le constructeur liste les identifiants de vos groupes, langues et devises pour vous éviter d'aller les chercher ailleurs.

**Exemple** — segment « Gros clients à relancer », logique ET : `total_spent` gte `200` + `days_since_order` gte `60`.

## Créer une campagne

Une campagne diffuse un contenu à un ou plusieurs segments dans une zone du thème. Allez dans **Smart Content → Campagnes → Ajouter une campagne**.

- **Nom** : libellé interne.
- **Zone d'affichage** : le hook où le contenu apparaît (voir la liste plus bas).
- **Segments ciblés** : un ou plusieurs segments. Laissez vide pour cibler tous les visiteurs.
- **Priorité** : si plusieurs campagnes ciblent la même zone, la plus prioritaire qui correspond gagne.
- **A/B testing** : activez pour diffuser plusieurs variantes (voir section dédiée).
- **Plafond de fréquence** : nombre maximal d'impressions par visiteur (0 = illimité), sur une fenêtre exprimée en jours.
- **Dates de début / fin** : planification optionnelle de la campagne.
- **Variantes de contenu** : le contenu HTML, éditable par langue.

### Zones d'affichage disponibles

`displayHome`, `displayTop`, `displayNav1`, `displayBanner`, `displayWrapperTop`, `displayWrapperBottom`, `displayLeftColumn`, `displayRightColumn`, `displayFooter`, `displayProductAdditionalInfo`, `displayShoppingCartFooter`.

## A/B testing

Activez l'option **A/B testing** sur la campagne, puis ajoutez plusieurs variantes. Chaque variante porte un libellé (A, B, …) et un **poids**. Le module tire une variante au sort à chaque affichage, proportionnellement aux poids. Sans A/B testing, la première variante active est utilisée.

Le contenu de chaque variante est saisi par langue. Le tableau de bord compare ensuite les performances de chaque variante (impressions, CTR, CVR, CA).

Pour un test 50/50, donnez le même poids (par exemple 1 et 1) aux deux variantes. Pour orienter 70/30, utilisez 7 et 3.

## Générateur de contenu IA

Dans l'éditeur de campagne, le panneau **Générateur de contenu IA** rédige un bloc HTML orienté conversion. Renseignez le nom du segment, une description de l'audience, l'objectif du message et le ton, choisissez la langue, puis cliquez sur **Générer**. Le contenu produit est inséré dans la zone de texte de la variante / langue active.

Cette fonction nécessite une clé API renseignée dans les Réglages.

## Suggestion de segments IA

Depuis **Smart Content → Segments**, le bouton **Suggestions de segments par IA** ouvre une page qui résume les statistiques réelles de votre boutique (clients actifs, commandes, acheteurs récurrents, abonnés newsletter…). Cliquez sur **Générer des suggestions** : l'IA propose 3 à 5 segments à forte valeur, chacun accompagné d'une description, d'une justification et d'un jeu de règles prêtes à recopier dans le formulaire de création.

## Tableau de bord et statistiques

**Smart Content → Tableau de bord** agrège les performances sur la période choisie : impressions, clics et taux de clic (CTR), conversions et taux de conversion (CVR), et chiffre d'affaires attribué. Un tableau détaille les résultats par campagne, et un second la comparaison des variantes A/B.

### Comment les conversions sont attribuées

Au clic sur un bloc personnalisé, la dernière interaction (campagne, variante, segment) est mémorisée dans le cookie de session. À la validation d'une commande, le module crédite la conversion et son chiffre d'affaires à cette campagne, puis efface l'attribution pour éviter tout double comptage.

## Confidentialité et RGPD

- Aucune donnée personnelle n'est stockée : le suivi repose sur un identifiant visiteur anonyme (un hash), utilisé pour le plafond de fréquence et la déduplication.
- L'option **Respecter le consentement cookies** conditionne le déclenchement des mesures. Les signaux reconnus : `window.dfscConsentGranted = true`, ou les cookies `hideBanner=1`, `axeptio_authorized`, `cookieconsent_status=allow`.
- Pour brancher votre propre CMP, positionnez `window.dfscConsentGranted` à `true` une fois le consentement obtenu.

## Insertion via widget

Le module implémente l'interface widget de PrestaShop. Vous pouvez donc insérer un bloc directement dans un template :

```
{widget name='dfsmartcontent' hook='displayHome'}
```

Le paramètre `hook` indique quelle zone évaluer.

## FAQ et dépannage

### Mon bloc ne s'affiche pas

Vérifiez que la campagne est active, que sa zone correspond bien à un hook présent dans votre thème, qu'au moins une variante possède du contenu pour la langue courante, et que le visiteur correspond bien à un segment ciblé. Si un plafond de fréquence est atteint, le bloc n'est plus affiché à ce visiteur sur la fenêtre définie.

### Les statistiques restent à zéro

Si l'option de consentement est active, les balises ne se déclenchent qu'après accord. Vérifiez que votre bannière cookies émet l'un des signaux reconnus, ou positionnez `window.dfscConsentGranted`.

### Les fonctions IA renvoient une erreur

Assurez-vous que la clé API, l'URL et le modèle sont corrects dans les Réglages, et que votre serveur peut joindre l'endpoint en sortie.
