Jump to content

Identification automatique des visiteurs via une Newsletter


Recommended Posts

Je cherchais une astuce pour lutter contre les paniers abandonnés.

 

J'ai remarqué qu'après chaque mailing auprès de mes clients ayant un compte sur mon site, les paniers abandonnés augmentaient. J'ai un module de relance de paniers abandonnés, mais celui-ci ne fonctionne que si les visiteurs sont identifiés AVANT de quitter ma boutique.

 

J'ai donc eu l'idée de fournir dans mon mailing, au lieu des traditionnels liens vers les pages produits mis en avant, des liens personnalisés qui provoquent l'identification automatique des clients. Les deux variables dans le lien sont sid et uid  L'adresse email sid est codée en base64. J'ai rajouté un jeton de vérification le uid de Prestashop our éviter qu'un petit malin se fasse passer pour un autre client.

 

Les liens vers les pages de ma boutique sont donc sur le modèle :

http://www.maboutique.com/categorie/mon_produit.html?sid=XXXXXXXXXX&uid=XX

Les variables  sid et uid sont produites à partir de l'adresse email du client et de son ID Prestashop :

$sid = base64_en​code(trim(strtolower($email)));
$uid = [ID Prestashop];

J'ai modifié le fichier «/index.php» à la racine gérant l'ensemble des pages  :

require(dirname(__FILE__).'/config/config.inc.php');
Dispatcher::getInstance()->dispatch();

En rajoutant des procédures de vérification, de redirection et d'identification :

require(dirname(__FILE__).'/config/config.inc.php');

// Les variables d'identification uid et sid sont présentes ?
if(isset($customer) && !$customer->id && isset($_REQUEST['uid']) && isset($_REQUEST['sid'])) {

  // Récupérer le client
  $customer = new Customer();
  $customer->getByEmail(trim(base64_decode($_REQUEST['sid'])));

  // Le jeton de vérification est-il valide ?
  if(isset($customer->id) && $customer->id==$_REQUEST['uid']) {

    $ctx = Context::getContext();
    $ctx->cookie->id_customer = (int)($customer->id);
    $ctx->cookie->customer_lastname = $customer->lastname;
    $ctx->cookie->customer_firstname = $customer->firstname;
    $ctx->cookie->logged = 1;
    $customer->logged = 1;

    // Récupération de l'ID guest
    // Guest::setNewGuest($ctx->cookie);
    $guest = new Guest(Guest::getFromCustomer($customer->id));
    $guest->userAgent();
    $guest->save();
    $customer->id_guest = $guest->id;
    $ctx->cookie->id_guest = $guest->id;

    // Mise à jour de la dernière visite
    //$connection = new Connection();// Methode 1
    //$connection->setPageConnection($ctx->cookie);

    //Connection::setPageConnection($ctx->cookie); // Methode 2
    /* 
    Db::getInstance()->insert('connections', array(
        'id_guest' => (int)$customer->id_guest,
        'id_page' => Page::getCurrentId(),
        'ip_address' => (Tools::getRemoteAddr() ? (int)ip2long(Tools::getRemoteAddr()) : ''),
        'id_shop' = Context::getContext()->shop->id,
        'id_shop_group' = Context::getContext()->shop->id_shop_group,
        'date_add' = date('Y-m-d H:i:s'),
        'http_referer' => 'http://example.com/'
    ), false, true, Db::INSERT_IGNORE);
    */

    $ctx->cookie->is_guest = $customer->isGuest();
    $ctx->cookie->passwd = $customer->passwd;
    $ctx->cookie->email = $customer->email;
    $ctx->customer = $customer;
    $ctx->cookie->write();
    header('Location: '.str_replace('uid=','nid=',$_SERVER['REQUEST_URI'])); exit;

  }
}

Dispatcher::getInstance()->dispatch();

Chaque client recevant mon mailing et cliquant sur un lien de sa lettre personnalisée est désormais automatiquement identifié sur ma boutique. Ses paniers abandonnés peuvent être relancés.

 

J'espère que cette astuce aidera certains vendeurs.

 

[Limitations : je n'arrive pas à faire fonctionner la mise à jour de la dernière visite. J'ai essayé (et désactivé) trois méthodes.]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...