Le WordPress d'aujourd'hui, décodé pour les développeurs

E-commerce

Automatiser la relance d’un panier abandonné avec Mailjet

Relancer un panier abandonné sans extension propriétaire de plus : la session WooCommerce, une tâche planifiée et l'API Mailjet suffisent à construire un circuit fiable.

Par WordPress Développement • 9 juin 2021 • 4 min de lecture • Aucun commentaire
Automatiser la relance d'un panier abandonné avec Mailjet

Combien de paniers WooCommerce restent abandonnés sur une boutique moyenne avant que quiconque ne s’en aperçoive ? Beaucoup, et la plupart des développeurs répondent à ce constat en installant une énième extension propriétaire de relance de panier. Un service d’emailing transactionnel déjà en place, comme Mailjet, permet pourtant de construire ce circuit sans dépendance supplémentaire.

Le principe repose sur trois briques déjà présentes dans l’écosystème WordPress ou WooCommerce : la capture précoce de l’adresse e-mail du visiteur, une tâche planifiée qui détecte l’inactivité, et l’envoi via l’API du service d’emailing existant.

Capturer l’e-mail avant la validation de la commande

La difficulté principale d’une relance de panier abandonné tient dans la disponibilité de l’adresse e-mail : un visiteur qui abandonne son panier avant d’avoir rempli le formulaire de commande reste anonyme, impossible à relancer. La solution consiste à capturer l’adresse dès qu’elle est saisie, avant même la validation finale, via un événement JavaScript sur le champ e-mail du formulaire de paiement, transmis par une requête AJAX vers un point de terminaison dédié.

document.querySelector( '#billing_email' ).addEventListener( 'blur', function( e ) {
    fetch( wc_ajax_url.toString().replace( '%%endpoint%%', 'capturer_email_panier' ), {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: 'email=' + encodeURIComponent( e.target.value ),
    } );
});

Enregistrer l’e-mail dans la session, pas dans la base tout de suite

Côté serveur, cette adresse se stocke dans la session WooCommerce via WC()->session->set(), associée à un horodatage de dernière activité sur le panier. Rien n’est écrit dans une table dédiée à ce stade : la session suffit, et évite d’accumuler des données personnelles pour des visiteurs qui finiront par valider normalement leur commande dans les minutes qui suivent.

L'essentiel à retenir : L'e-mail du visiteur se capture avant même la validation de la commande ; Une tâche planifiée détecte les paniers restés inactifs après un délai ; L'envoi passe par l'API REST de Mailjet, sans extension supplémentaire

Le rôle d’Action Scheduler

Une tâche planifiée, enregistrée via Action Scheduler (déjà intégré à WooCommerce), tourne périodiquement et parcourt les sessions actives à la recherche de paniers dont la dernière activité dépasse un délai défini, ici vingt-quatre heures, sans commande validée associée à cette session. C’est ce mécanisme qui bascule l’e-mail capturé, jusque-là volatile en session, vers un enregistrement persistant en base, uniquement pour les paniers réellement abandonnés.

Envoyer la relance via l’API Mailjet

Une fois un panier identifié comme abandonné, une requête wp_remote_post() vers l’API transactionnelle de Mailjet déclenche l’envoi de l’e-mail de relance, avec le contenu du panier injecté dans le corps de la requête pour personnaliser le message (articles restés dans le panier, lien direct vers le tunnel de commande pré-rempli).

wp_remote_post( 'https://api.mailjet.com/v3.1/send', array(
    'headers' => array(
        'Authorization' => 'Basic ' . base64_encode( $cle_api . ':' . $cle_secrete ),
        'Content-Type'  => 'application/json',
    ),
    'body' => wp_json_encode( array(
        'Messages' => array( array(
            'To'      => array( array( 'Email' => $email_client ) ),
            'Subject' => 'Votre panier vous attend encore',
            'HTMLPart'=> construire_contenu_relance( $panier ),
        ) ),
    ) ),
) );
  • Capture de l’e-mail au champ de saisie, avant validation de la commande
  • Détection de l’abandon par une tâche planifiée basée sur Action Scheduler
  • Envoi de la relance via l’API REST de Mailjet, sans extension propriétaire

Éviter la relance en double

Chaque panier relancé doit être marqué comme traité pour éviter qu’une exécution suivante de la tâche planifiée ne déclenche un second envoi identique. Une métadonnée simple, horodatée au moment de l’envoi de la relance, suffit pour que la requête de sélection des paniers abandonnés exclue ceux déjà relancés récemment.

Une relance envoyée deux fois au même client agace plus qu’elle ne convainc : le marquage de l’envoi n’est pas un détail, c’est la moitié de la fiabilité du dispositif.

Ce que ce dispositif ne couvre pas

La segmentation avancée des clients selon leur historique d’achat, leur valeur moyenne de panier ou leur fréquence de visite reste hors du périmètre de cet article. Le circuit décrit ici se limite à une relance simple, déclenchée par l’inactivité, sans logique de personnalisation poussée selon le profil du client.

Pour aller plus loin

Ce montage évite l’ajout d’une extension propriétaire supplémentaire tout en couvrant l’essentiel du besoin : capturer, détecter, relancer. Le vrai travail se situe dans le réglage fin du délai avant relance et dans la qualité du contenu de l’e-mail envoyé, deux paramètres à ajuster selon le comportement réel observé sur la boutique.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi