Documentation MailPilotX
Guide complet : parcours produit, envoi, API, intégrations et bonnes pratiques.
Vue d'ensemble
MailPilotX est une plateforme email pour PME et agences : éditeur visuel, campagnes massives, mails transactionnels à la demande, listes de contacts et domaines SMTP (BYO : vous apportez votre serveur d'envoi).
Le parcours recommandé : créer un projet (design) → rattacher listes, domaines, campagnes et mails réutilisables depuis le hub projet → envoyer ou exposer via l'API.
Projets & hub
Un projet = un design email multilingue (blocs, variables, médias). Ouvrez un projet pour accéder au hub : design, campagnes, mails à la demande, listes et domaines filtrés par projet.
Depuis le hub, chaque ressource créée hérite automatiquement du project_id. Le wizard campagne démarre à l'étape Audience avec listes et domaines du projet.
- Éditeur : blocs drag & drop, traductions, variables {{…}}, aperçu fusion, export HTML.
- Brand kit (onglet Général → Brand) : couleurs, logo et police par défaut pour les nouveaux blocs.
- Conditions showWhen : afficher un bloc si une variable correspond à une valeur (ex. plan = premium).
- Checklist pré-envoi : liens, poids images, alertes qualité avant export.
Campagnes (envoi massif)
Wizard en 4 étapes : audience (liste ou segment), objet, planification, validation. Tracking ouverture/clic automatique via pixel et liens trackés.
Planification : date/heure, jours autorisés et plage horaire. Un worker vérifie les campagnes scheduled et lance l'envoi dans la fenêtre configurée.
- Modes audience : liste unique, listes par langue, segment dynamique.
- A/B test : split initial (ex. 10 %), mesure ouvertures/clics, envoi automatique de la variante gagnante au reste.
- Stats post-envoi : ouvertures, clics, bounces : accessible depuis Campagnes → Statistiques.
- Variable système {{unsubscribe_url}} : lien de désinscription injecté automatiquement si absent du HTML.
Mails à la demande (transactionnels)
Mails réutilisables identifiés par un slug (ex. bienvenue, reset-password). Chaque mail est lié à un projet (design) et optionnellement à un domaine d'envoi.
Envoi depuis l'interface ou via API POST /api/v1/transactional-emails/send avec slug, destinataire et variables.
- Tracking open/click dédié (routes /api/track/t/…).
- Stats par template : taux d'ouverture et de clic dans Mails à la demande.
- Réponse API asynchrone (202) : l'envoi passe par la file send_jobs ; le send_id permet le suivi.
- Clés API test (mpx_test_…) : envoi simulé sans SMTP réel, status simulated.
POST /api/v1/transactional-emails/send
Authorization: Bearer mpx_live_…
{
"slug": "bienvenue",
"to": "client@example.com",
"name": "Marie",
"variables": { "prenom": "Marie", "code": "ABC123" }
}File d'envoi & fiabilité
Par défaut (SEND_VIA_JOBS=1), campagnes et transactionnels passent par la table send_jobs. Un worker Node traite les jobs avec retries et backoff (1 min, 5 min, 30 min).
Après max_attempts, le job passe en dead letter (status dead). Désactiver avec SEND_VIA_JOBS=0 pour revenir à l'envoi synchrone (debug uniquement).
- SEND_WORKER_INTERVAL_MS : fréquence de poll (défaut 10 s).
- SEND_WORKER_BATCH : nombre de jobs traités par tick.
- Warm-up domaine : limite progressive d'envois/jour si warmup_max_per_day configuré sur le domaine.
API & clés d'accès
API REST v1 sous /api/v1 : réservée aux plans Pro et Business. Authentification : JWT (interface web) ou clé API mpx_live_… / mpx_test_… (Bearer ou header X-API-Key).
Scopes : read (GET), write (POST/PATCH/DELETE), send (envois). Créez les clés dans le menu API.
- Documentation OpenAPI : GET /api/v1/docs et /api/v1/openapi.json
- Guide HTML : GET /api/v1/guide
- Rate limit : 120 req/min par clé API.
- SDK npm : package mailpilotx (packages/mailpilotx/) : client.send(slug, { to, variables }).
- Upsert + send : POST /api/v1/inbound/contacts/upsert-and-send : ajoute un contact à une liste et envoie un mail en une requête.
import { MailPilotX } from 'mailpilotx'
const client = new MailPilotX({
apiKey: process.env.MPX_KEY,
baseUrl: 'https://votre-api.com'
})
await client.send('bienvenue', {
to: 'user@example.com',
variables: { prenom: 'Alex' }
})Webhooks sortants
Configurez des URLs pour recevoir des événements en temps réel. Signature HMAC-SHA256 dans le header X-MailPilotX-Signature.
Gestion dans le menu API → section Webhooks. Test ping disponible par endpoint.
- transactional.sent : mail transactionnel envoyé
- transactional.failed : échec d'envoi transactionnel
- campaign.completed : campagne terminée
- contact.unsubscribed : désinscription confirmée
- send.bounced : bounce enregistré
{
"id": "uuid-delivery",
"event": "transactional.sent",
"created_at": "2026-06-19T12:00:00Z",
"data": { "send_id": "…", "slug": "bienvenue", "to": "…" }
}MailPilotX Sync
Sync relie vos outils (HubSpot, Shopify, WooCommerce, Typeform, Zapier…) à une liste MailPilotX via une URL webhook secrète. Pas d’OAuth store : l’outil envoie un POST JSON, le contact est upsert dans la liste.
Réservé aux plans Pro et Business. Menu Sync dans l’app. Option : envoyer un mail transactionnel (slug) à chaque réception.
- Création : POST /api/v1/sync (JWT) avec provider, team_id, list_id
- Réception : POST /api/v1/sync/hooks/:id/:secret (sans JWT, secret dans l’URL)
- JSON minimum : { "email": "…", "name": "…" }. Shopify, Typeform et HubSpot sont parsés nativement
- Rate limit : 120 requêtes / minute / connecteur
POST /api/v1/sync/hooks/<id>/<secret>
Content-Type: application/json
{ "email": "contact@entreprise.fr", "name": "Alex Martin" }Désinscription (RGPD)
Chaque email campagne/transactionnel peut inclure {{unsubscribe_url}}. Le lien mène à une page publique de confirmation one-click.
Les adresses désinscrites sont stockées par équipe (team_unsubscribes) et exclues des prochains envois automatiquement.
- Page publique : GET/POST /api/public/unsubscribe/:token
- Liste des désinscrits : API segments/unsubscribes ou via votre CRM via webhook contact.unsubscribed.
Listes, contacts & segments
Listes rattachées à une équipe et optionnellement à un projet. Import CSV : colonnes custom → metadata contact.
Segments dynamiques : règles JSON (metadata, liste, ouverture campagne) recalculées à l'envoi. Builder dans le détail d'une liste.
- Statuts contact : active, bounced, complained, unsubscribed : exclusion auto à l'envoi.
- Automatisations : trigger contact.added_to_list → envoi transactional différé.
Automatisations
Scénarios simples : trigger + délai + action. Interface Automatisations dans le menu.
- contact.added_to_list → envoyer mail slug X après N heures
- campaign.sent → relance si pas ouvert (J+N, configurable)
- Exécution via send_jobs (type automation)
Équipes & rôles
Travaillez en équipe avec rôles owner, admin, editor, viewer. Pro : jusqu’à 3 membres ; Business : jusqu’à 10. Menu Équipes : création, invitation par email, gestion des membres.
Sélecteur d'équipe active (persisté) pour filtrer projets et ressources. Clés API peuvent être limitées à une équipe.
Domaines & délivrabilité
Vous configurez votre domaine expéditeur + SMTP (hôte, port, identifiants chiffrés). Vérification DNS MailPilotX et test SMTP intégrés.
Score délivrabilité : lookup SPF, DKIM, DMARC + état SMTP + bounces. Warm-up optionnel pour monter en volume progressivement.
- GET /api/domains/:id/deliverability : score et détail DNS
- POST /api/v1/inbound/bounce : remontée bounces depuis votre infra SMTP
- Conseil : configurez SPF, DKIM et DMARC sur le domaine expéditeur réel, pas seulement le token MailPilotX.
Médias & URLs signées
Images et vidéos uploadées dans l'éditeur (asset:uuid). À l'envoi, remplacées par des URLs signées publiques temporaires (7 jours par défaut).
Route publique : GET /api/public/assets/:token : pas de JWT requis dans le mail reçu.
Bibliothèque
Modèles d'email complets et sections réutilisables.
Modèles complets → nouveau projet dans l'éditeur. Sections → bloc de modules prêt à personnaliser.
API : GET /api/library?kind=project|section · POST /api/library/:id/import
Abonnement & quotas
Plan gratuit (Starter) avec quota mensuel. Alerte dashboard à 80 % du quota, blocage plan gratuit à 100 %.
Plans payants : au-delà du quota Pro, passer au plan Business. Équipes multi-utilisateurs sur les plans Pro et Business.
Variables d'environnement (API)
Principales variables côté serveur (voir api/.env.example) :
- APP_SECRET : chiffrement SMTP (min. 32 caractères)
- API_BASE_URL : tracking, désinscription, assets signés
- SEND_VIA_JOBS / SEND_WORKER_* : file d'envoi
- ASSET_SIGN_SECRET : signature URLs assets (défaut APP_SECRET)
- STORAGE_DRIVER=local|s3 : stockage médias (S3 optionnel)
- SCHEDULER_* : worker planification campagnes
Ressources & support
API interactive : lien « Guide API » depuis le menu API. Logs structurés (Pino) avec X-Request-Id pour corréler les requêtes.
- Health check : GET /api/health et /api/health/db
- Audit admin : révocation clés API et actions sensibles journalisées