Email & MJML
La pile email d'Inklura a trois pièces mobiles : un compositeur MJML qui
produit du HTML compatible email, un pont Mautic qui le livre réellement, et
deux routers tRPC sur l'API company-manager pour la
gestion des campagnes (campaigns) et le reporting (emailAnalytics).
Le compositeur MJML
Les mail designers (maildesigner.inklura.fr / mail.inklura.fr) construisent
du HTML compatible email avec un miroir MJML conservé à côté pour l'édition.
Un chat de construction assisté par IA diffuse sa sortie via Server-Sent Events :
GET /api/builder/stream/<chatId>
Le rôle du compositeur est de produire le HTML ; l'envoi est une étape distincte.
Livraison — le pont Mautic
L'email n'est pas envoyé directement. La livraison est confiée à une instance
Mautic auto-hébergée sur infra.wd29.net via un pont à deux endpoints. Le
secret du pont est uniquement côté serveur — n'appelez jamais ces endpoints
depuis le navigateur.
Mettre un message en file pour livraison :
POST https://infra.wd29.net/api/mautic/queue/enqueue
Content-Type: application/json
{
"html": "<…rendered email HTML…>",
"subject": "…",
"tag": "…",
"slugs": ["…"],
"tenantId": "…",
"userId": "…",
"scheduledFor": "…",
"segmentId": "…"
}
| Champ | Requis | Notes |
|---|---|---|
html |
oui | Le HTML rendu, compatible email. |
subject |
oui | Ligne d'objet. |
tag |
oui | Tag de campagne/segment. |
slugs |
oui | Liste de slugs cibles. |
tenantId |
non | Portée du tenant. |
userId |
non | Acteur. |
scheduledFor |
non | Heure d'envoi différé. |
segmentId |
non | Segment Mautic. |
Vérifier le statut d'un élément mis en file :
POST https://infra.wd29.net/api/mautic/queue/status
Content-Type: application/json
{ "id": "<queue-item-id>" }
CRUD & envoi de campagnes — le router campaigns
Le cycle de vie des campagnes vit dans le router tRPC campaigns. Appelez-le à
/api/trpc/campaigns.<procedure> en suivant les
conventions tRPC standard :
| Procédure | Rôle |
|---|---|
getCampaigns |
Lister les campagnes. |
getCampaignById |
Récupérer une campagne. |
createCampaign |
Créer une campagne. |
createCampaignWizard |
Créer via le flux d'assistant guidé. |
updateCampaign |
Mettre à jour une campagne. |
deleteCampaign |
Supprimer une campagne. |
sendCampaign |
Envoyer une campagne. |
pauseCampaign |
Mettre en pause une campagne en cours d'envoi. |
resumeCampaign |
Reprendre une campagne en pause. |
duplicateCampaign |
Cloner une campagne. |
getCampaignActivity |
Lire l'activité d'une campagne. |
getCampaignTags |
Lister les tags de campagne. |
createCampaignTag |
Créer un tag de campagne. |
Analytics — le router emailAnalytics
Le reporting est un router distinct, emailAnalytics. Chaque procédure est un
permissionProtectedProcedure(["analytics:read"]), donc l'appelant a besoin d'une
session portant la permission analytics:read (voir
Procédures tRPC).
| Procédure | Retourne |
|---|---|
getDashboardMetrics |
Les métriques phares du tableau de bord. |
getCampaignAnalytics |
Les analytics par campagne. |
getCampaignRevenue |
Le chiffre d'affaires attribué à une campagne. |
getTopCampaigns |
Les campagnes les plus performantes. |
getEngagementTrends |
L'engagement dans le temps. |
getProviderPerformance |
La performance du fournisseur de livraison. |
exportAnalytics |
Exporter les données d'analytics. |
getUnsubscribeAnalytics |
Les métriques de désabonnement. |
getUnsubscribeFunnel |
Le tunnel de désabonnement. |
getHealthStatus |
La santé du pipeline d'analytics. |
Ces procédures délèguent à un service HTTP d'analytics externe à
QUEUE_MANAGER_URL (par défaut http://localhost:8085). Lorsque ce service est
injoignable, le router se dégrade proprement au lieu de faire échouer l'appel
— ne traitez donc pas une réponse vide ou de repli comme une erreur bloquante.
Suivi des ouvertures & clics
La plateforme sert un pixel de suivi et une redirection de clic qui font proxy vers le même service d'analytics :
${QUEUE_MANAGER_URL}/track/email/<id>/open
${QUEUE_MANAGER_URL}/track/email/<id>/click
Une ouverture est enregistrée quand le pixel se charge ; un clic est enregistré lorsque la redirection fait passer le lecteur vers la destination.
Voir aussi
- Procédures tRPC — comment appeler
campaigns.*etemailAnalytics.* - Journeys marketing — l'étape
EMAILd'un journey, la seule action de journey qui envoie réellement - Vue d'ensemble des intégrations — la carte des deux mondes