# Emails automatisés — guide de modification (pour Elsa)

Ce document recense **tous les emails automatiques** envoyés par l'application.
Pour chaque email : quand il part, son objet, **où le modifier** (fichier + n° de ligne),
et le **code à éditer** (le texte est en français entre apostrophes `'...'`).

## Comment modifier un texte d'email

1. Tous les emails sont dans **`includes/emails.php`** (une méthode par email).
2. Ouvrez le fichier, allez à la ligne indiquée, modifiez **uniquement le texte** entre apostrophes.
3. ⚠️ Ne touchez pas au code HTML/PHP autour (les `<table>`, `style="..."`, `htmlspecialchars(...)`, `' . $variable . '`).
4. Pour insérer une apostrophe dans un texte, écrivez `\'` (ex. `n\'hésitez pas`).
5. L'**objet** (titre) de l'email est passé à `->send($email, "OBJET ICI", $html)` depuis le fichier déclencheur (voir colonne « Déclenché depuis »).

### Éléments communs à tous les emails (modifiables une seule fois)

| Élément | Fichier · ligne | Rôle |
|---|---|---|
| En-tête (logo / nom studio + dégradé vert) | `includes/emails.php:68` (`wrap`) | Bandeau du haut commun à tous les emails |
| Pied de page « Cet email a été envoyé automatiquement. » | `includes/emails.php:90` | Footer commun |
| Bouton d'action (couleur, arrondi) | `includes/emails.php:102` (`button`) | Style des boutons CTA |
| Couleur principale `#18594e` / accent `#c09175` | `includes/emails.php:14-15` | Charte couleurs des emails |
| Expéditeur (`From`) | `includes/emails.php:28` | Nom + adresse d'envoi |

---

## Liste des emails

| # | Email | Quand il part | Déclenché depuis | Méthode (emails.php) |
|---|---|---|---|---|
| 1 | Bienvenue (compte créé par l'admin) | À la création d'un client par l'admin | `admin/clients.php` | `welcome` — ligne 118 |
| 2 | Rappel mandat SEPA | Abonnement payé mais mandat non signé | `admin/index.php`, `client/cart.php`, `client/renew.php` | `mandateReminder` — ligne 146 |
| 3 | Confirmation de réservation | (défini mais **non utilisé** actuellement) | — | `bookingConfirmation` — ligne 176 |
| 4 | Prélèvement échoué | Échec d'un prélèvement GoCardless | `cron/check_payments.php` | `paymentFailed` — ligne 199 |
| 5 | Place libérée (liste d'attente) | Une place se libère sur un cours complet | `includes/helpers.php` (`notifyWaitlist`) | `waitlistNotification` — ligne 227 |
| 6 | Confirmation d'achat de formule | Après achat d'un carnet/abonnement | `client/cart.php`*, `client/renew.php`, `client/gc_callback.php` | `purchaseConfirmation` — ligne 263 |
| 7 | Lien de paiement séance découverte | Le prof envoie le lien de paiement CB | `teacher/index.php` | `discoveryPaymentLink` — ligne 321 |
| 8 | Bienvenue après 1er cours (offre 72 h) | 30 min après le 1er cours d'un prospect | `cron/prospect_lifecycle.php` | `welcomeFirstSession` — ligne 352 |
| 9 | Relance dernier jour offre 72 h | 24 h avant expiration de la promo | `cron/prospect_lifecycle.php` | `promo72hReminder` — ligne 386 |
| 10 | Relance J+7 invité | 7 jours après un cours en tant qu'invité | `cron/prospect_lifecycle.php` | `inviteeJ7Reminder` — ligne 418 |
| 11 | Livraison carte-cadeau (PDF joint) | Après achat d'une carte-cadeau | `giftcard.php` | `giftCardDelivery` — ligne 446 |
| 12 | Rappel J-1 séance découverte | La veille d'une séance découverte | `cron/prospect_lifecycle.php` | `discoveryReminderJ1` — ligne 486 |
| 13 | Demande d'avis Google | Après X cours présents (seuil configurable) | `cron/prospect_lifecycle.php` | `googleReviewRequest` — ligne 521 |
| 14 | Code de signature questionnaire santé | Lors de la signature du questionnaire | `client/questionnaire.php` | `questionnaireSignatureCode` — ligne 549 |
| 15 | Relance annuelle questionnaire santé | Questionnaire vieux de ~1 an | `cron/prospect_lifecycle.php` | `questionnaireYearlyReminder` — ligne 574 |
| 16 | Invitation à un cours | Un client invite un(e) ami(e) | `client/invite.php` | `guestInvitation` — ligne 601 |

\* `client/cart.php` envoie aussi la confirmation d'achat pour les achats par carte.

---

## Code de chaque email (texte à modifier)

> Rappel : modifiez seulement le texte entre apostrophes. Les `' . $variable . '` sont remplacés automatiquement (prénom, date, etc.).

### 1. Bienvenue — `welcome` (emails.php:118)
Objet : « Bienvenue ! Vos identifiants de connexion » (preheader, ligne 140). L'objet d'envoi réel est défini dans `admin/clients.php`.
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
<p>Bienvenue chez {studio} ! Votre compte a été créé.
   Voici vos identifiants de connexion :</p>
  Email : {email}
  Mot de passe : {mot de passe}
<em>Nous vous recommandons de changer votre mot de passe après votre première connexion.</em>
[Bouton] Se connecter à mon espace
À très bientôt au studio !
```

### 2. Rappel mandat SEPA — `mandateReminder` (emails.php:146)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Votre abonnement {offre} est en attente de finalisation.
Le premier mois a bien été réglé par carte bancaire, mais il nous manque votre
mandat de prélèvement SEPA pour mettre en place les paiements automatiques à partir du mois prochain.
⏱ Action requise : Cliquez sur le bouton ci-dessous pour renseigner votre IBAN et signer le mandat. Cela ne prend que 2 minutes.
[Bouton] Compléter mon mandat SEPA
Si vous ne finalisez pas cette étape, votre abonnement ne pourra pas être renouvelé automatiquement.
Pour toute question, n'hésitez pas à nous contacter au studio.
```

### 3. Confirmation de réservation — `bookingConfirmation` (emails.php:176) — NON UTILISÉ
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Votre réservation est confirmée :
  {nom du cours}
  📅 {date} à {heure}
  📍 {studio}
À bientôt au studio ! 🧘
```

### 4. Prélèvement échoué — `paymentFailed` (emails.php:199)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Nous n'avons malheureusement pas pu effectuer le prélèvement de {montant} pour votre abonnement {offre}.
Votre abonnement a été suspendu. Veuillez contacter le studio pour régulariser votre situation et réactiver vos cours.
Ce problème peut être dû à un solde insuffisant ou à un changement de coordonnées bancaires.
Contactez-nous pour mettre à jour vos informations.
```

### 5. Place libérée (liste d'attente) — `waitlistNotification` (emails.php:227)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Bonne nouvelle ! Une place vient de se libérer sur un cours pour lequel vous étiez en liste d'attente :
  {nom du cours} · 📅 {date} à {heure} · 📍 {studio}
⏱ Attention : Cette place est disponible pour une durée limitée. Confirmez rapidement votre participation pour ne pas la perdre !
[Bouton] ✅ Confirmer ma place
Si vous ne confirmez pas dans les prochaines heures, la place pourra être attribuée à une autre personne.
Un crédit de cours sera déduit de votre forfait lors de la confirmation.
```

### 6. Confirmation d'achat — `purchaseConfirmation` (emails.php:263)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Merci pour votre achat ! Votre formule est maintenant active.
  {offre} · 💳 Montant payé : {montant} € · 🎟 Crédits : {crédits} · ⏳ Valide jusqu'au : {date}
[Bloc engagement abonnement, si applicable :]
  📋 Informations sur votre engagement
  Votre engagement prendra fin le : {date}
  Passé cette date, votre abonnement se renouvelle automatiquement par tacite reconduction...
  (ou, sans engagement : « Votre abonnement est sans engagement. Il se renouvelle... »)
[Bouton] Accéder à mon espace
À bientôt sur le tapis ! 🧘
```

### 7. Lien paiement séance découverte — `discoveryPaymentLink` (emails.php:321)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Merci pour votre séance découverte chez {studio} !
Pour finaliser votre passage, il vous reste à régler par carte bancaire et à créer votre compte.
  ⭐ Séance découverte · 💳 Montant à régler : {montant}
[Bouton] Régler par carte bancaire
Une fois le paiement effectué, votre compte sera automatiquement créé pour vous permettre de réserver vos prochains cours.
```

### 8. Bienvenue après 1er cours / offre 72 h — `welcomeFirstSession` (emails.php:352)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Merci d'être venu(e) découvrir {studio} aujourd'hui ! Nous espérons que la séance vous a plu.
  🎁 Offre exclusive — 72 h chrono
  1 cours offert
  Pour tout abonnement ou carnet souscrit avant le {date}, nous vous offrons 1 crédit de cours supplémentaire, valable 30 jours.
[Bouton] Choisir ma formule
Cette offre est réservée aux personnes qui ont fait leur premier cours chez nous. Elle s'applique automatiquement lors de votre achat — pas de code promo à saisir.
```

### 9. Relance dernier jour offre 72 h — `promo72hReminder` (emails.php:386)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Petit rappel : votre offre 1 cours offert chez {studio} expire aujourd'hui.
  ⏱ Dernier jour pour profiter de cette offre — elle expire le {date}.
[Bouton] Profiter de l'offre maintenant
Le crédit offert est valable 30 jours après votre souscription, vous laissant tout le temps nécessaire pour planifier votre prochain cours.
```

### 10. Relance J+7 invité — `inviteeJ7Reminder` (emails.php:418)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Il y a quelques jours, {hôte} vous a invité(e) à un cours chez {studio}. Nous espérons que la séance vous a plu !
Envie de continuer ? Créez votre compte et choisissez l'abonnement ou le carnet qui vous convient — nos formules s'adaptent à tous les rythmes.
[Bouton] Découvrir nos formules
À très bientôt sur le tapis !
```

### 11. Livraison carte-cadeau — `giftCardDelivery` (emails.php:446)
```php
<p>Bonjour,</p>
Merci pour votre achat ! Voici votre carte-cadeau {studio} pour {prénom destinataire}. Le PDF imprimable est joint à cet email.
  Montant : {montant} € · Code unique : {code} · Valable jusqu'au {date}
[Bouton] Voir la page carte-cadeau
Pour utiliser cette carte-cadeau, le/la bénéficiaire devra saisir le code ci-dessus sur la page carte-cadeau et créer un compte ou se connecter.
```

### 12. Rappel J-1 séance découverte — `discoveryReminderJ1` (emails.php:486)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Petit rappel — votre séance découverte chez {studio} a lieu demain. Nous avons hâte de vous accueillir !
  ⭐ {nom du cours} · 📅 {date} à {heure} · 📍 {lieu}
Avant de venir : arrivez 10 minutes en avance, prévoyez une tenue confortable et une bouteille d'eau.
Si vous ne pouvez plus venir, merci de nous prévenir au plus tôt.
```

### 13. Demande d'avis Google — `googleReviewRequest` (emails.php:521)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Merci pour votre fidélité chez {studio} ! Votre avis compte énormément pour nous et aide d'autres personnes à découvrir nos cours.
  ⭐⭐⭐⭐⭐
  Quelques mots sur Google nous feraient grand plaisir — cela ne prend que 30 secondes.
[Bouton] Laisser un avis Google
Merci infiniment, et à très bientôt sur le tapis !
```
> Note : l'URL d'avis est désormais celle du studio où le client a fait le plus de cours (configurable par studio dans `admin/studios.php`), avec repli sur l'URL globale des réglages.

### 14. Code signature questionnaire santé — `questionnaireSignatureCode` (emails.php:549)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Voici votre code de signature pour valider votre questionnaire de santé.
Saisissez-le sur la page en cours pour finaliser votre signature électronique.
  Votre code : {code}
⏱ Ce code est valable 30 minutes. Si vous n'avez pas demandé ce code, ignorez simplement cet email.
```

### 15. Relance annuelle questionnaire santé — `questionnaireYearlyReminder` (emails.php:574)
```php
<p>Bonjour <strong>{prénom}</strong>,</p>
Votre questionnaire de santé chez {studio} a plus d'un an. Pour continuer à pratiquer en toute sécurité, merci de le mettre à jour.
  ⚠️ Action requise : remplissez le questionnaire (9 questions, 2 minutes) pour continuer à réserver vos cours.
[Bouton] Mettre à jour mon questionnaire
Tant que le questionnaire n'est pas signé, vos réservations ne pourront pas être validées.
```

### 16. Invitation à un cours — `guestInvitation` (emails.php:601)
```php
<p>Bonjour <strong>{prénom invité}</strong>,</p>
{hôte} vous invite à participer à un cours chez {studio}. Votre place est d'ores et déjà réservée — il ne vous reste plus qu'à venir !
  {nom du cours} · 📅 {date} à {heure} · 📍 {lieu}
Si vous ne pouvez plus venir, prévenez votre hôte au plus tôt afin qu'il/elle puisse libérer la place.
À très bientôt sur le tapis ! 🧘
```
