Debug : lien {followup} vide dans le mail in_transit de PrestaShop

PrestaShop
  • Accueil
  • Blog
  • Debug : lien {followup} vide dans le mail in_transit de PrestaShop

Tout est dans le titre ! Vous avez tout configuré comme il se doit dans les transporteurs et les mails de PrestaShop mais pour une raison inconnue, le lien de tracking de colis contenu dans le mail envoyé au client est erroné. Comment peut-on corriger cela ?

Lien de suivi de colis avec PrestaShop

Avant de répondre à la problématique du billet, on va voir comment offrir un numéro de suivi de colis à vos clients dans PrestaShop.
Plusieurs étapes sont nécessaires avec une configuration dans le back office :

  1. dans Livraison > Transporteurs : il faut créer un transporteur puis indiquer une url de tracking contenant la variable @ remplacée par le numéro de colis lors de l’envoi du mail (liste des numéros de tracking utilisés par PrestaShop ci-après)
  2. dans le détail d’une commande : dans l’onglet Livraison, il faut cliquer sur le bouton « modifier » puis indiquer le numéro de suivi puis cliquer sur « mettre à jour » ce qui déclenche l’envoi du mail avec le lien {followup} de suivi au client

Liste des numéros de tracking utilisés par PrestaShop

La liste n’est pas exhaustive mais couvrira les demandes fréquentes à mon avis – d’ailleurs n’hésitez pas à soumettre dans les commentaires d’autres urls si vous en avez :

Transporteurs français :

Courrier et de colis (Colissimo et Chronopost) Particulier : http://www.laposte.fr/particulier/outils/suivre-vos-envois?code=@
Colissimo Particulier : http://www.colissimo.fr/portail_colissimo/suivre.do?colispart=@
Colis Pro : http://www.colissimo.fr/portail_colissimo/suivre.do?m=12003010&colispro=@
Lettre MAX : http://www.csuivi.courrier.laposte.fr/suivi/index?id=@
Chronopost France : http://www.chronopost.fr/expedier/inputLTNumbersNoJahia.do?listeNumeros=@
Chronopost International : http://www.ci.chronopost.com/web/en/tracking/suivi_inter.jsp?listeNumeros=@
Fedex : http://fedex.com/Tracking?ascend_header=1&clienttype=dotcomreg&cntry_code=f r&language=french&tracknumbers=@ (Pour traduire la page : language=french/english)
TNT : http://www.tnt.fr/public/suivi_colis/recherche/visubontransport.do?radiocho ixrecherche=BT&bonTransport=@
UPS : http://wwwapps.ups.com/etracking/tracking.cgi?InquiryNumber1=@&loc=fr_FR&Ty peOfInquiryNumber=T (Pour traduire la page : loc=fr_FR/en_US)
DHL France : http://suivimessagerie.dhl.fr/track_pod.php?referenceCOLIS=@&TypeLV=C&CpDes t=&PaysDest=&DateExp=&NumCpt=&LANGUE=FR (Pour localiser la page : loc=FR/EN)
Kelia : http://www.kiala.fr/tnt/order/@/0123456789 (Remplacer 0123456789 par l’identifiant marchand fournie par Kelia)
Ciblex : http://www.ciblex.fr/extranet/client/corps.php?module=colis&colis=@
Exapaq : http://e-trace.ils-consult.fr/exa- webtrace/Webtrace.aspx?sdgnrs=@&cmd=SDG_MULTI_SEARCH&sprache=&trans=exapaq (Pour traduire le commentaire : sprache= (vide)/de)

Transporteurs à l’international :

[Suisse] – La Poste : http://www.post.ch/swisspost-tracking?formattedParcelCodes=@&p_language=fr
[Belgique] – bpost : http://www.bpost.be/etr/light/performSearch.do?searchByItemCode=true&itemCo des=@&oss_language=fr
[Pays-Bas] – La Poste : http://www.postnlpakketten.nl/klantenservice/tracktrace/basicsearch.aspx?la ng=nl&B=@
[Royaume Unis] – Royal Mail : http://www2.royalmail.com/track-trace?track=track&trackNumber=@&gear=track
[Espagne] – Correos : http://www.correos.es/comun/localizador/track.asp?accion=LocalizaUno&ecorre o=&numero=@
[Danemark] – La Poste : http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=@
[USA] – DHL : http://track.dhl-usa.com/TrackByNbr.asp?nav=Tracknbr&ShipmentNumber=@
[USA] – USPS : https://tools.usps.com/go/TrackConfirmAction?qtc_tLabels1=@

Correction du bug du lien followup vide

Il arrive parfois la situation suivante : le mail de suivi de colis affiche le lien {followup} tel quel sans que celui-ci pointe vers la page de suivi du colis.
Vous avez tout configuré comme il faut alors pourquoi cela se produit-il ?
En cherchant un peu plus loin que le back office, dans la base de données et précisément dans la table ps_carrier, on peut s’apercevoir de quelques incohérences et le raisonnement :

  • on peut avoir rentré 2 transporteurs dans le back office et avoir beaucoup plus de lignes dans la table, c’est normal car Prestashop génère un nouvel id_carrier à chaque modification d’un transporteur
  • le champ url est renseigné pour certains de ces id_carrier mais pas tous, c’est là que se situe le problème
  • il faut alors attribuer l’url de tracking colis à tous les id_carrier qui ont le même id_reference et vous serez sûr d’avoir un lien de tracking fonctionnel dans les mails envoyés à vos clients

J’espère que ça en aidera plus d’un et bonnes ventes !
 

28 commentaires sur “Debug : lien {followup} vide dans le mail in_transit de PrestaShop

  1. Merci, il faut aussi impérativement utiliser le statut natif de Prestashop
    ‘En cours de Livraison’, cela permet de propager correctement le lien de suivi dans le mail in_transit.
    Bonne soirée 🙂

  2. Bonjour,
    Pour ma part le lien d’exapaq ne fonctionne pas, avez-vous testé ce dernier ?
    Merci pour l’astuce de la table ps_carrier !
    Cordialement

  3. Autant pour moi la copie du lien avait créé une espace et généré au collage un « %20 » non adapté.
    Cordialement

  4. bonjour
    j’ai remplacé l’url de suivi dans phpmyadmin pour le meme id ref et id carrier
    et bah c’est toujours pareil : followup inscrit dans le mail du client et pas le numéro de suivi
    Merci de votre aide

  5. Bonjour, par contre comment je fais si j’ai plusieurs transporteurs comme il s’agit du même mail pour les 3 clients? Je dois mettre l’url:mondial relay, dpd et chronopost?
    Merci
    Sebastien

    1. Bonjour,
      Il n’y a qu’un seul mail avec une variable d’url pour chaque transporteur. Ainsi, le client retrouve dans le mail reçu le lien de suivi du transporteur concerné.
      Vous pouvez changer l’url de suivi transporteur dans l’admin > transport > transporteurs, en éditant le transporteur concerné.

  6. Bonjour,
    J’utilise le mail in_transit.html pour l’état « Commande expédiée ». Cet email est envoyé automatique lors du changement de statut ou bien en utilisant « Renvoyer l’email » depuis l’administration.
    Le lien {followup} n’est jamais remplacé. Avez-vous une idée ?
    Le champ url est bien renseigné ainsi que le numéro de suivi.
    Merci de votre aide !

    1. Bonjour JB,
      Le numéro de tracking du colis est envoyé à la validation du numéro de suivi dans le détail d’une commande.
      Aussi, dans la base de données, est-ce que le lien de suivi est bien indiqué pour tous les transporteurs ? Car PrestaShop ajoute une ligne à chaque modification d’un transporteur.

    2. Merci pour votre réponse.
      Oui le lien de suivi est bien indiqué pour tous les transporteurs.
      Le numéro de tracking du colis « {shipping_number} » est seulement envoyé à la validation du numéro de suivi manuellement dans le détail d’une commande ?

      1. Bonjour,
        Je réponds à tous les commentaires, pas de panique et surtout inutile de relancer 😉
        Quand je demande si le lien de suivi est bien indiqué, il faut qu’il le soit pour toutes les lignes de tous les transporteurs dans la base de données.
        « Le numéro de tracking du colis « {shipping_number} » est seulement envoyé à la validation du numéro de suivi manuellement dans le détail d’une commande ? » ==> Quand vous êtes dans le détails d’une commande dans l’admin de PrestaShop, vous pouvez indiquer un numéro de suivi, lorsque vous validez ce numéro, c’est là que le mail de suivi de colis est envoyé. Logique puisqu’il faut le numéro de suivi pour avoir un suivi du colis.
        Bonne journée 🙂

    3. Bonjour,
      Désolé, il m’a semblé qu’une erreur avait eu lieu au moment de déposer mon commentaire. C’est pour cela que je me suis permis d’ajouter une petite relance.. 😉
      Merci pour toutes vos explications. J’ai réussi via un override.
      Excellente journée.

  7. Merci pour votre réponse.
    Oui le lien de suivi est bien indiqué pour tous les transporteurs.
    Le numéro de tracking du colis « {shipping_number} » est seulement envoyé à la validation du numéro de suivi manuellement dans le détail d’une commande ?

  8. Bonjour,
    Que faut il faire exactement avec le code de JB du 17 janvier 2018 ?
    De mon côté j’ai essayé de le copier & coller dans classes/order/OrderHistory.php mais je n’utilise pas la bonne méthode puisque j’obtiens une page blanche.
    Je vous remercie par avance de détailler un peu plus la méthode à suivre.

    1. Bonjour Samuel,
      Faites une sauvegarde du fichier classes/order/OrderHistory.php puis éditez la fonction SendMail, vous devriez avoir :
      $data = array(
      '{lastname}' => $result['lastname'],
      '{firstname}' => $result['firstname'],
      '{id_order}' => (int)$this->id_order,
      '{order_name}' => $order->getUniqReference()
      );

      à modifier par :
      $data = array(
      '{lastname}' => $result['lastname'],
      '{firstname}' => $result['firstname'],
      '{id_order}' => (int)$this->id_order,
      '{order_name}' => $order->getUniqReference(),
      '{followup}' => str_replace('@', $order->shipping_number, $carrier->url)
      );

      Je n’ai pas testé mais ça devrait le faire.
      Attention à faire un override de cette classe, c’est plus propre.
      Enfin, pensez à supprimer le fichier cache/class_index.php pour vider le cache.
      Bonne journée 🙂

      1. Bonjour,
        J’ai testé votre solution, il y a bien un changement le {followup} disparait, mais du coup j’ai un espace blanc.

      2. Vous pouvez supprimer ou ne pas prendre en compte mon message précédent, tout fonctionne !!! (je ne sais pas pourquoi mais mon N° de suivi sur ma commande test a disparu, ce qui explique l’espace blanc)
        Merci beaucoup !!!!

  9. Bonjour et merci pour cette astuce. cela date de 4 ans mais le problème est encore d’actualité sur prestahop 1.7.5…
    Le mail est bien envoyé quand on renseigne le numéro suivi dans la commande, pas de souci la dessus. Par contre, l’état de la commande ne passe pas en « En cours de livraison ». Du coup quand on change manuellement l’état à « en cours de livraison », cela envoi donc un 2ème mail identique au client.
    Une solution pour ça ?
    Merci

    1. Bonjour,
      Etrange car de tête ce n’est pas le changement de statut qui envoie l’e-mail mais bien la saisie et validation du champ numéro de suivi.
      Je regarderais du côté des modules installés, en les désactivant notamment ceux qui sont sur les hook actionOrderStatus…

Laisser un commentaire

Consultez les autres articles