Modifier une adresse e-mail dans PrestaShop : back-office, SQL et API
Comment changer l'adresse e-mail d'un client ou d'un administrateur dans PrestaShop 1.7 et 8.x : back-office, requête SQL directe et API REST.
En bref : Pour modifier une adresse e-mail dans PrestaShop, privilégiez le back-office (Clients ou Employés). En cas d'urgence, une requête SQL UPDATE sur ps_customer ou ps_employee fonctionne, à condition de vérifier l'unicité de l'adresse et de vider le cache ensuite.
Pourquoi modifier une adresse e-mail dans PrestaShop ?
La modification d'une adresse e-mail — qu'il s'agisse d'un compte client ou d'un compte administrateur — est une opération courante mais souvent mal documentée. Un client change de fournisseur de messagerie, une faute de frappe bloque l'accès au compte, ou un administrateur quitte l'entreprise : les cas d'usage sont nombreux.
Pourtant, cette manipulation touche à un identifiant unique critique dans PrestaShop. L'adresse e-mail sert à la fois de login, de canal de communication transactionnelle et de clé de dédoublonnage. Une modification mal effectuée peut entraîner des conflits de compte, des e-mails de confirmation perdus, voire un verrouillage du back-office.
Voici les trois méthodes pour effectuer cette opération proprement, classées par ordre de recommandation.
Méthode 1 : via le back-office (recommandée)
Modifier l'e-mail d'un client
C'est la méthode la plus sûre et la plus traçable.
- Accédez à **Clients > Clients** dans le menu latéral
- Recherchez le client concerné par nom ou par e-mail actuel
- Cliquez sur **Modifier** (icône crayon)
- Changez le champ **Adresse e-mail**
- Enregistrez
- Accédez à **Paramètres avancés > Équipe > Employés**
- Cliquez sur **Modifier** à côté de l'employé concerné
- Modifiez le champ e-mail
- Enregistrez
- Que le thème n'a pas supprimé ou masqué le formulaire dans `themes/votre-theme/templates/customer/identity.tpl`
- Que le module `ps_emailsubscription` ne crée pas de conflit
- Que le fichier `controllers/front/IdentityController.php` n'a pas été surchargé avec une restriction
- **Sauvegardez** votre base de données avant toute modification manuelle
- **Videz le cache** PrestaShop après la modification : supprimez le contenu de `var/cache/prod/` et `var/cache/dev/` (PrestaShop 8.x) ou `app/cache/` (1.7)
- **Vérifiez les tables liées** : l'e-mail peut aussi apparaître dans `ps_address` (champ de facturation), `ps_newsletter` ou des tables de modules tiers
- **Ne modifiez jamais le mot de passe hashé** en même temps sans utiliser la fonction de hachage de PrestaShop (`password_hash()` avec `PASSWORD_BCRYPT` sur PS 8.x)
- Identifier l'ancien compte : `SELECT * FROM ps_customer WHERE email = 'adresse@example.com';`
- Soit supprimer l'ancien compte s'il est inactif (attention à l'historique de commandes)
- Soit fusionner les deux comptes en réassignant les commandes
- **Journalisez** chaque modification d'e-mail (un hook `actionObjectCustomerUpdateAfter` permet de logger automatiquement)
- **Envoyez une notification** à l'ancienne ET à la nouvelle adresse pour prévenir toute usurpation
- **Imposez une re-authentification** si vous développez un module personnalisé de modification de profil
- **En RGPD**, la modification d'e-mail doit être traçable : conservez un log horodaté des changements d'identifiants
PrestaShop vérifie automatiquement que la nouvelle adresse n'est pas déjà utilisée par un autre compte. Si c'est le cas, vous devrez d'abord fusionner ou supprimer le doublon.
Modifier l'e-mail d'un administrateur
Attention sur PrestaShop 8.x : depuis la refonte Symfony du back-office, la page Employés utilise le nouveau framework de formulaires. Le comportement est identique, mais les validations sont plus strictes (format RFC 5322).
Permettre au client de modifier lui-même son e-mail
Par défaut, PrestaShop permet au client de changer son adresse e-mail depuis Mon compte > Informations personnelles. Le client doit saisir son mot de passe actuel pour valider la modification — c'est une sécurité essentielle.
Si cette fonctionnalité semble désactivée sur votre boutique, vérifiez :
Méthode 2 : via une requête SQL directe
Pour les cas urgents ou les modifications en masse, l'accès direct à la base de données est parfois nécessaire.
Modifier l'e-mail d'un client
-- Vérifier d'abord que la nouvelle adresse n'existe pas déjà
SELECT id_customer, email, firstname, lastname
FROM ps_customer
WHERE email = 'nouvelle-adresse@example.com';
-- Si aucun résultat, procéder à la modification
UPDATE ps_customer
SET email = 'nouvelle-adresse@example.com'
WHERE id_customer = 42;
Modifier l'e-mail d'un employé back-office
UPDATE ps_employee
SET email = 'nouveau-admin@example.com'
WHERE id_employee = 1;
Important : remplacez le préfixe
ps_par le préfixe réel de vos tables si vous l'avez personnalisé à l'installation.
Précautions indispensables
Méthode 3 : via l'API Webservice
Si vous gérez les comptes via un ERP ou un CRM externe, l'API Webservice de PrestaShop est la bonne approche.
# Récupérer les données actuelles du client
curl -s -u 'VOTRE_CLE_API:' \
'https://votre-boutique.com/api/customers/42' \
-H 'Output-Format: JSON'
# Modifier l'e-mail via PUT
curl -X PUT -u 'VOTRE_CLE_API:' \
'https://votre-boutique.com/api/customers/42' \
-H 'Content-Type: application/xml' \
-d '<?xml version="1.0" encoding="UTF-8"?>
<prestashop>
<customer>
<id>42</id>
<email>nouvelle-adresse@example.com</email>
</customer>
</prestashop>'
PrestaShop 8.x : pensez à activer la ressource
customersavec les permissions GET et PUT dans Paramètres avancés > Webservice.
Gestion des conflits et cas particuliers
Doublon d'adresse e-mail
PrestaShop interdit deux comptes client avec la même adresse e-mail (contrainte d'unicité). Si le client souhaite récupérer un e-mail déjà associé à un autre compte, vous devez :
Multiboutique
En mode multiboutique, l'adresse e-mail est partagée entre toutes les boutiques du même groupe. Modifier l'e-mail d'un client sur la boutique A le modifie aussi sur la boutique B. C'est un comportement normal car la table ps_customer est commune — seule l'association ps_customer_shop varie.
Impact sur les abonnements newsletter
Si le client était inscrit à la newsletter, la table ps_emailsubscription conserve l'ancienne adresse. Pensez à la mettre à jour :
UPDATE ps_emailsubscription
SET email = 'nouvelle-adresse@example.com'
WHERE email = 'ancienne-adresse@example.com';
Bonnes pratiques de sécurité
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.