L'agence web & print qui vous révèle

Mini héro à la rescousse !

Mautic pour le développeur

lundi 19 février 2018

Utiliser une application open-source comme Mautic a ses contraintes par rapport à une application cloud. Il faut savoir l’installer et en faire la maintenance.
Voici ce retour d’expérience sur la solution open source de marketing automation MAUTIC que nous avons choisi d’utiliser au sein de l’agence Apparaître.

Sommaire

  1. Introduction
  2. Mautic pour l’agence marketing
  3. Mautic pour le client
  4. Mautic pour le développeur

Installation de Mautic

Mautic est développée sur une base de symfony 2.8 ça tombe bien je suis développeur Symfony.

  1. Téléchargement des sources
    Mautic s’installe donc facilement en téléchargeant les sources sur github qu’il faudra dézipper : https://github.com/mautic/mautic/archive/master.zip
    Pour une utilisation en production il vaudra mieux installer la version stable téléchargeable ici : https://www.mautic.org/download
  2. Installation des dépendances
    Il est indispensable de se connecter au shell pour installer les dépendances via un « composer install » à la racine de Mautic. (Pour installer composer voir : https://doc.ubuntu-fr.org/composer)
  3. Réglage des permissions
    Veillez à ce qu’apache aient les droits en écriture sur les répertoires suivants : app/cache, app/config app/logs, app/config, app/Resources, app/spool, medias et translations.
  4. Installation de la base de données
    Il faut créer maintenant une base de données mysql avec votre méthode préférée.
    Gardez de côté les informations.
  5. Utilisation du configurateur web
    Une fois la base de données mysql créé vous pouvez alors faire pointer votre navigateur web sur le répertoire d’installation afin de poursuivre le paramétrage de Mautic en mode Web.

L’installation de mautic consiste en 3 pages :

  1. Paramétrage de la base de données
  2. Création de l’accès administrateur
  3. Paramétrage de l’envoi des emails

Vous pouvez laisser le paramétrage par défaut, la méthode d’envoi des emails est bien sûr paramétrable dans l’application.
Personnellement et de façon complètement naïve, j’ai tenté l’envoi via phpmail et je vous expliquerai plus loin pourquoi c’est mal !
Et voilà c’est installé et c’est à peine plus compliqué qu’installer un WordPress, bien sûr il faut avoir accès au serveur en ssh pour installer et administrer une instance de Mautic.

Présentation du backend

Le thème du backend ne va pas en dépayser beaucoup car il est basé sur un thème bootstrap dans la lignée d’une interface à la wordpress avec menu latéral gauche de couleur sombre
Une bande fine en haut de page contient le système de notification ainsi que l’accès aux informations du compte personnel et au paramétrage de l’application.
La partie centrale permet le paramétrage des fonctionnalités et la consultation des pages de l’application.

Changement de la langue par défaut de Mautic

L’application est présentée en anglais et Mautic se charge de télécharger automatiquement les traductions dans le répertoire « translations » sur le serveur, assurez-vous seulement que ce répertoire est accessible en écriture à l’utilisateur apache.
Voir ici la procédure pour changer la langue : https://mautic.org/docs/fr/translations/index.html
En ce qui me concerne la langue s’est bien téléchargée dans son répertoire mais elle n’a pas été mise à jour dans l’interface.
Mautic est une application symfony, un cache est donc géré sur le serveur dans le répertoire app/cache. On peut le vider via la console en exécutant à la racine de Mautic la commande : php app/console cache:clear
Selon la puissance du serveur le vidage peut mettre plus ou moins de temps à s’effectuer.
Penser à vider le cache navigateur également et voilà le tour est joué.

Mise en place des taches cron

Qui dit automatisation dit exécution de taches cron, mautic dispose d’un certain nombre de commandes qui permettent de déclencher les actions de campagnes, envoyer les emails et autres, elles peuvent être déclenchées manuellement à fin de test ou bien elles peuvent être placées dans la table cron, voici la mienne :

0,10,20,30,40,50 * * * * php /app/console mautic:webhooks:process 2>&1 >> /app/logs/mautic.webhooks.txt
0,15,30,45 * * * * php /app/console mautic:segments:update 2>&1 >> /app/logs/mautic.segments.txt
5,20,35,50 * * * * php /app/console mautic:campaigns:rebuild 2>&1 >> /app/logs/mautic.campaings.rebuild.txt
10,25,40,55 * * * * php /app/console mautic:campaigns:trigger 2>&1 >> /app/logs/mautic.campaigns.trigger.txt
*/1 * * * * php /app/console mautic:emails:send 2>&1 >> /app/logs/mautic.emails.send.txt
5 0 * * * php /app/console mautic:email:fetch 2>&1 >> /app/logs/mautic.emails.fetch.txt
6 0 * * * php /app/console mautic:iplookup:download 2>&1 >> /app/logs/mautic.iplookup.txt
0,15,30,45 * * * * php /app/console mautic:social:monitoring 2>&1 >> /app/logs/mautic.social.monitoring.txt
3,18,33,48 * * * * php /app/console mautic:broadcasts:send 2>&1 >> /app/logs/mautic.broadcasts.send.txt

Bien sûr les chemins doivent être adaptés à votre serveur.

Prise en main de Mautic et première campagne d’email

Ma première campagne a été un peu ratée. Il faut dire, c’était une sorte de galop d’essai en grandeur nature. J’ai envoyé un email de contact aux clients d’une agence qu’Apparaître a racheté il y a peu. Le but était de créer du lien sur une campagne avec peu d’automatisation.
J’avais pris toutes mes précautions, bien sûr pour optimiser la délivrabilité.
J’ai installé opendkim (http://opendkim.org/ ) sur mon serveur, il permet de signer les emails avec un certificat et ainsi d’authentifier mon serveur mail. Au niveau des DNS, les enregistrements DKIM et SPF étaient bien paramétrés (voir ce tuto http://lea-linux.org/documentations/DKIM_SPF_Postfix) et pour ceux que ça intéresse, des informations supplémentaire ici : http://blog.francoisfauglas.fr/index.php/2016/04/14/spf-dkim-a-quoi-ca-sert-comment-ca-fonctionne-mise-en-oeuvre/
Je teste ma configuration avec cet outil : http://www.appmaildev.com/fr/dkim en envoyant via mon instance de mautic un email à l’adresse temporaire délivré par celui-ci.
L’outil réceptionne l’email envoyé et m’indique qu’il est bien conforme, DKIM et SPF sont bien activés et paramétrés.
J’avais, pensais-je donc, paré à tous les problèmes de délivrabilité et je lance donc mon envoi.
Les emails partent et je commence à checker les logs de postfix, le serveur d’emails que j’utilise.
Evidemment les opérateurs n’ont pas du tout apprécié que je les bombarde ainsi et je me suis fait aussitôt blacklisté par orange, wanadoo, gmail et un peu free qui m’ont demandé gentiment de baisser le débit de mes envois. En attendant, j’étais bloqué pour 48H
Après avoir tenté de paramétrer un serveur de queue comme beanstalk et un firewall pour postfix (http://postfwd.org/) qui permet de gérer les débits entrant mais aussi sortant. Après avoir bidouillé la queue de postfix pour remettre les emails en attente dans le pipe d’envoi, je me résigne, je lâche l’affaire pour l’instant et je purge la queue afin qu’il ne reste plus d’emails en transit dans les limbes de mon serveur.
Router un email c’est du sérieux ça demande de fortes compétences et un suivi permanent.
Je me suis résolu à utiliser un routeur externe d’emails, sur les conseils avisés de Pierre Ammeloot, découvert au détour de son initiation au marketing automation : http://pam.ammeloot.fr/inscription-cours-ma et avec qui j’ai eu des discussions intéressantes et une aide précieuse pour la mise au point d’une de mes campagnes.
Pour ma part j’ai choisi sparkmail qui est inclus dans les paramétrages de base de Mautic, mais sont paramétrés par défaut également les smtp de gmail, mailchimp, mandrill, mailjet, amazon SES, sendgrid tout en gardant la possibilité d’utiliser n’importe quel autre smtp privé.

Mise à jour de Mautic

Deux méthodes sont disponibles :
La première, via un lien apparaissant dans le backend, elle n’est pas conseilléecar il vaut mieux avoir la main en ssh pour régler certains problèmes pouvant survenir, liés avant tout à des problèmes de permissions de dossier et fichiers.

La deuxième méthode se fait via SSH, il faut télécharger le script d’upgrade à la racine de Mautic et l’exécuter dans le CLI via la commande :

php upgrade.php

En cas de problème il faudra veiller à bien vérifier la checklist dépannage de John Linhart

Ce que je n’ai pas aimé avec Mautic.

Au niveau de l’installateur web, il n’y a pas de contrôle des permissions des dossiers à autoriser en lecture/écriture pour l’utilisateur d’Apache, même si on se doute que le cache et les logs doivent l’être, il n’était pas évident que le répertoire « translations », par exemple, doivent l’être. Dans le cas contraire l’installation d’une nouvelle langue ne se fait pas et il n’y a pas non plus de message d’erreur au niveau de Mautic.
On peut penser du coup que le package de langue doit être installé manuellement via ftp alors que l’installation est automatique.
En cherchant un peu, on trouve finalement une page récapitulant les droits à accorder aux différents répertoires. Elle se trouve dans paramètres / informations système / Droits des dossiers et fichiers

Dans mautic, il n’y a pas la notion de projet et tout ce que vous allez créer est placé pêle-mêle dans des listes paginées. Au fur et à mesure que vous l’utilisez, vous aurez beaucoup de campagnes et surtout d’emails différents. Il y a bien la possibilité d’affecter une catégorie à n’importe quel objet Mautic. Cela permet de faire un semblant de classement et d’ailleurs j’ai pris l’habitude de taguer mes emails avec le numéro de campagne à laquelle il est affecté cela a amélioré grandement la lisibilité.
Ça devient compliqué si plusieurs projets indépendants cohabitent dans une même instance de Mautic, c’est plus une histoire de lisibilité pour le coup.
Il est bien sûr recommandé d’installer une instance indépendante pour chaque client, mais la notion de projet serait toujours intéressante à implémenter.

Je trouve également que les objets focus pourtant très intéressants à utiliser sont quelque peu bogués. J’ai eu beaucoup de problèmes pour les utiliser, mais je n’ai pas eu le temps de chercher vraiment pourquoi, peut être un mauvais paramétrage, je fouillerai plus à fond un jour prochain.
Un autre bug un peu déconcertant apparaît à la soumission des formulaire ajax. Le spinner d’attente ne se désactive jamais et il n’y a pas de texte de confirmation ou de redirection même si au final le formulaire a bien été soumis.

il s’agit d’un bug dans un fichier js.
Pour le corriger il suffit de rechercher dans le script medias/js/mautic-form.js la chaîne suivant :

if (event.origin !== MauticDomain) return ;

et de la remplacer par celle-ci :

var MauticDomainWithoutPath = MauticDomain.match(/https? :\/\/[^\/]*/) ;
if (event.origin != MauticDomainWithoutPath) return ;

A ma connaissance il n’est toujours pas corrigé officiellement.

Les mises à jours proposent 2 méthodes différentes dont une non conseillée, alors pourquoi la proposer ?

Le système de template

Mautic est livré par défaut avec des thèmes de landing pages, de formulaires et d’emails, il est assez aisé de fabriquer de nouveaux thèmes personnalisés pour le client.
Les pages sont faites avec le système de template de Symfony, Twig qui est assez facile d’accès

Mautic et son système d’extension

Pour finir avec la présentation de Mautic, j’ai gardé pour la fin le système d’extension qui permet d’ouvrir Mautic notamment vers l’extérieur. Par défaut sont livrés de nombreuses passerelles vers facebook, twitter, gmail, mailchimp, sales force, sugar crm, zoho et bien d’autres.
Il est tout à fait possible de développer ses propres extensions. Mautic étant développé avec le framework symfony cela ne devrait pas poser de problème particulier.

Ce que j’ai apprécié avec Mautic

Passé les tâtonnements du début et des bugs dû à des permissions incorrectes sur des répertoires. Travailler avec Mautic, c’est avant tout être libre de ne pas devoir payer un abonnement mensuellement alors que je n’en ai pas forcément besoin tout le temps.
C’est être également libre de ne pas dépendre d’un seul fournisseur de solution mais de pouvoir choisir librement son prestataire en hébergement, en infogérance et en routage d’emails. Dans mon cas je me charge de l’infogérance de la plateforme interne à apparaître le serveur est hébergé chez scaleway, ce qui me permet de changer d’adresse IP rapidement en cas de besoin.
Lorsque je proposerais cette solution à mes clients je confierai la mission sans aucun doute à mon infogérant habituel Evolix (http://evolix.com/) qui fait du très bon travail sur mes serveurs.