E-mailing ciblé : récupérer les utilisateurs ayant achetés un produit en particulier

  • De le 15 juillet 2011
  • Difficulté : 2/4

E-mailing ciblé : récupérer les utilisateurs ayant achetés un produit en particulier Une campagne e-mailing est généralement beaucoup plus efficace lorsque l'on sait à qui s'adresser. Voici un moyen de récupérer dans Magento la liste des clients ayant achetés un produit défini.

Voici une petite méthode permettant de récupérer une liste d'utilisateurs selon un produit acheté préalablement. Cela peut permettre une campagne de cross-selling ciblée, beaucoup plus efficace. Il est nettement plus rentable d'envoyer une newsletter sur un petit échantillon de clients potentiellement intéressés par le produit sur lequel on souhaite communiquer.

Il suffit donc de charger une collection de produits commandés selon le critère souhaité. Dans notre exemple le SKU :

Order Item Collection

/* liste des produits commandés dont le SKU est SKU001 ou SKU002 */
$items = Mage::getModel('sales/order_item')->getCollection()->addFieldToFilter('sku',array('SKU001','SKU002'));

On parcourt ensuite cette liste d'objets, et on extrait la commande ainsi que les informations relatives au client :

Order Item Collection

$items = Mage::getModel('sales/order_item')->getCollection()->addFieldToFilter('sku',array('SKU001','SKU002'));

foreach($items as $item) {
    $order = $item->getOrder();

    $customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
    $address = $order->getBillingAddress();

    /* Accès à l'ensemble des informations client */
    $email = $customer->getEmail();
    $lastname = $customer->getLastname();
    $firstname = $customer->getFirstname();
    $telephone = $address->getTelephone();
    $street = implode($address->getStreet(),', ');
    $city = $address->getCity();
    $postcode = $address->getPostcode();
}

Notez qu'il est possible d'extraire uniquement les clients dont la commande est terminée (pas nécessairement besoin des commandes annulées...) :

Order Item Collection

foreach($items as $item) {
    $order = $item->getOrder();

    if($order->getStatus() == Mage_Sales_Model_Order::STATE_COMPLETE) {
        /* ... */
    }
}

Il ne reste plus qu'à implémenter cela au sein d'un module ! En imaginant par exemple un Controller capable de générer un CSV...

[Edit] J'oubliais, les utilisateurs doivent évidemment être abonnés ;)

Customer is subscribed

$customer = Mage::getModel('customer/customer')->load($order->getCustomerId());

if($customer->isSubscribed()) {
    /* ... */
}
commentaires

Commentez cet article : E-mailing ciblé : récupérer les utilisateurs ayant achetés un produit en particulier