Automatisation de relance email, ne développez pas !

Dans le cadre de plusieurs projets, hors du pur développement technique, nos clients nous demandent de mettre en place la couche « Technique / Marketing ».
Voici quelques exemples :

  • Relancer une action non terminée
  • Solliciter un utilisateur qui n’a pas complètement rempli son profil à J+5
  • Envoyer une relance pour l’expiration de sa carte bleue tous les mois tant que cette CB n’est pas à jour

Habituellement, nous prenions l’ensemble de ces actions et faisions une tache CRON pour chacunes d’entres elles. L’exécution se faisait pendant la nuit. C’est lourd à maintenir, il faut toujours changer le contenu d’un email, le déclencheur etc.. Bref c’est chiant.

Avec l’ensemble des plates formes SaaS de gestion de mail comme Mailjet ou Mailchimp, on peut simplement faire du Trigger Marketing.

L’idée est la suivante :
Tout ce que je peux éviter de développer et qui est lourd à maintenir, je vais utiliser un service tiers pour cela. Dans le cas de relance automatique d’email, autant bénéficier de l’ensemble de la puissance et des fonctionnalités des rooters de mails qui ont maintenant des briques d’automatisation. Je vais pouvoir mettre à jour mon utilisateur en direct dans la base de données du routeur et c’est lui qui s’occupera d’exécuter des scénarios.

Ainsi il n’y aura plus qu’une action / commande à maintenir en ajoutant ou supprimant des données du tableau envoyé à Mailjet via leur API.
Pour cela, dans un projet Symfony il est nécessaire d’ajouter les ressources suivantes dans votre composer.json :

L’api Mailjet permet d’effectuer simplement les commandes de bases d’envoi de mail, récupérations d’une liste de contacts, ajout d’un contact à une liste, création d’une liste de contact etc. Cependant, il n’est pas encore possible de récupérer les messages d’erreur complet grâce à leur paquet, c’est pourquoi nous utiliserons guzzle en plus, configuré ainsi :

Pensez à créer les paramètres correspondants avec les valeurs que vous trouverez sur la page de gestion des propriétés de votre liste.

Ensuite, voici la commande qui utilise l’API pour synchroniser les utilisateurs. Notez qu’ici l’entité User est basée sur le modèle User du bundle FOSUserBundle.
Avant tout, pensez a créer dans Mailjet les propriétés que vous souhaitez synchroniser. C’est ici : https://app.mailjet.com/contacts/lists/properties

Bien entendu, il est possible de synchroniser un utilisateur en live à la fin d’une action ou sur un événement remonté par l’application.

Maintenant que votre base est à jour, l’ensemble des scénarios automatiques peuvent ainsi être gérés par une personne qui n’est pas forcement développeur et cette personne peut faire des tests, créer de nouveaux scénarios marketing mail automatiques. Bref, un temps précieux gagné pour du développement inutile.

Voici un exemple concret :

Vous avez un site internet sur lequel l’utilisateur peut passer des commandes d’un produit X.

Vous aimeriez automatiser le fait qu’après sa 3ième commande, il soit sollicité pour donner son avis sur les réseaux sociaux et que 30 jours après sa 5ieme commande, il soit considéré comme « Bon client » et reçoive un code de réduction.

Rien de plus simple :

1 – Vous ajoutez une propriété qui peut s’appeler « nb_commandes ».
2 – Vous synchronisez le nombre de commandes de votre utilisateur avec la base de données de votre routeur après chaque validation de commande via l’API

Et c’est fini !

Le déclenchement des emails n’est pas fait chez vous et si demain pour une raison A ou B, l’équipe marketing veut mettre le code de réduction 15 jours après la 5ieme commande, elle a juste a changer le workflow sur la partie automatisation de votre routeur et c’est directement en place.

Si elle souhaite envoyer l’email pour l’avis sur les réseaux sociaux après la 2ieme commande, elle changera les conditions du Workflow. Celui ci peut se déclencher quand la valeur nb_commandes est à 2 non à 3.

 

 

 

Partagez cet article