Pour mettre en place l'abandon de panier, votre boutique en ligne doit communiquer à SPREAD les paniers abandonnés ainsi que leurs contenus.
Plugins
Mise à jour du plugin
Si la version actuelle du plugin installé ne comporte pas la mécanique de l'abandon de panier, vous devez mettre à jour votre plugin.
Fonctionnement du plugin
À chaque mise à jour du panier et si l'utilisateur est connecté à votre boutique, le panier et son contenu seront envoyés à SPREAD.
Si le panier est vidé, l'automation pour ce client sera arrêtée.
Fonctionnement de l'automation
Exemple de l'objectif Abandon de panier :
- Mise à jour du panier
Premier envoi des données → Création de l’automation
Envois suivants → Mise à jour de l’automation
- Attente pendant 1h
La durée de l'attente peut être configurée.
- Condition : Le profil a commandé ?
- Oui → Fin de l'automation
- Non → Envoi de l'email
- Consentements acceptés (configuré dans le bloc email)
- Profil existant dans la CRM
L'email est envoyé selon les conditions suivantes :
Comment construire l'email de rappel de panier ?
Dans l'email, vous pouvez utiliser toutes les données envoyées par le plugin ainsi que certaines données sur le profil et sur votre site.
Liste complète des variables disponibles :
Variables du profil
{{ var:profile.customer_name }} -> Nom
{{ var:profile.customer_firstname }} -> Prénom
{{ var:profile.customer_email }} -> Email
{{ var:profile.customer_birthday }} -> Anniverssaire
{{ var:profile.customer_gender }} -> Genre
{{ var:profile.customer_address }} -> Adresse
{{ var:profile.customer_cp }} -> Code postal
{{ var:profile.customer_city }} -> Ville
{{ var:profile.customer_country }} -> Pays
{{ var:profile.customer_tel }} -> Téléphone
{{ var:profile.customer_mobile }} -> Téléphone portable
{{ var:profile.customer_lang }} -> Langue
{{ var:profile.customer_company }} -> Entreprise
{{ var:profile.customer_fonction }} -> Fonction
Variables du site
{{ var:site.id }} -> Identifiant du site
{{ var:site.name }} -> Nom du site
{{ var:site.url }} -> Url du site
{{ var:site.urlTwitter }} -> Url du compte Twitter
{{ var:site.urlFacebook }} -> Url du compte Facebook
{{ var:site.urlInstagram }} -> Url du compte Instagram
{{ var:site.urlLogo }} -> Url du logo de votre site
Variables du panier
{{var:data.store_id}} -> Identifiant du panier
{{var:data.cart_creationDate}} -> Date de création du panier (2020-03-10 15:51:15)
{{var:data.cart_updateDate}} -> Date dernière maj du panier (2020-03-10 15:51:15)
{{var:data.is_active}} -> Panier actif ?
{{var:data.cart_products_count}} -> Nombre de produits
{{var:data.cart_currency_code}} -> Monnaie utilisée dans le panier
{{var:data.customer_group_id}} -> Id du groupe du client
{{var:data.coupon_code}} -> Si code promo utilisé sinon vide
{{var:data.coupon_code_name}} -> Label du code promo
{{var:data.cart_url}} -> Url du panier
{{var:data.cart_fdp}} -> Frais de port
{{var:data.cart_fdm}} -> Frais de manutention
{{var:data.cart_subTotal}} -> Prix sans frais de port
{{var:data.cart_subTotalWithDiscount}} -> Prix sans frais de port mais avec réduction
{{var:data.cart_grandTotal}} -> Le prix total à payer avec frais de port
{{var:data.products}} -> Tableau contenant les produits
Variables des produits
{% for product in var:data.products %}
{{ product.idProduct }} -> Identifiant du produit
{{ product.name }} -> Nom du produit
{{ product.description_short }} -> Description courte
{{ product.available_now }} -> Est-il disponible ?
{{ product.available_date }} -> Date de disponibilité
{{ product.price_without_reduction }} -> Prix sans réduction
{{ product.price_with_reduction }} -> Prix avec réduction
{{ product.price_without_reduction_without_tax }} -> Prix sans réduction et sans taxe
{{ product.price_with_reduction_without_tax }} -> Prix avec réduction mais sans taxe
{{ product.additional_shipping_cost }} -> Frais de port supplémentaires
{{ product.quantity }} -> Quantité
{{ product.lienProduit }} -> Url du produit
{{ product.lienImage }} -> Url de l'image du produit
{{ product.legend }} -> Légende du produit
{% for attribute in product.attributes %} -> Lister les attributs produit
{{ attribute }}
{% endfor %}
{% for category in product.category %} -> Lister les catégories
{{ category }}
{% endfor %}
{% endfor %}
Ajouter des variables
L'automation est faite pour prendre en compte un tableau de données que vous pouvez tout à fait adapter à vos besoins et ainsi avoir accès à de nouvelles variables.
Pour cela, rendez-vous dans le fichier spread.php à la racine du plugin SPREAD et ajoutez-y la valeur souhaitée dans le tableau de données $product qui se trouve dans le function hookactionCartSave.
Voici un aperçu de la section:
Dans ce tableau, vous pouvez par exemple ajouter un element 'size' => $VOTRE VARIABLE CONTENANT LA VALEUR
Vous aurez ensuite accès dans l'automation à 'product.size' et pourrez l'exploiter comme vous le souhaitez dans l'email de relance de panier.
Comment afficher le nombre de produits dans le panier ?
Vous avez {{ var:data.cart_products_count }} produit(s) dans votre panier.
Comment afficher la liste des produits ?
{% for product in var:data.products %}
{{ product.name }}
{% endfor %}
API
Quand ?
À chaque mise à jour du panier mais seulement si le visiteur de votre boutique est connecté.
Comment ?
En utilisant les endpoints API liés à l'abandon de panier.
Quoi ?
Vous pouvez nous transmettre toutes les données que vous souhaitez.
Cependant certaines données sont obligatoire :
key
: doit contenir un tableau clé / valeur avec en clécartId
et en valeur l'id du panier.
customerEmail
: L'email du client
Schéma d'explication
Fonctionnement de l'automation
Exemple de l'objectif Abandon de panier :
- Mise à jour du panier
Premier envoi des données → Création de l’automation
Envois suivants → Mise à jour de l’automation
- Attente pendant 1h
La durée de l'attente peut être configurée.
- Condition : Le profil a commandé ?
- Oui → Fin de l'automation
- Non → Envoi de l'email
- Consentements acceptés (configuré dans le bloc email)
- Profil existant dans la CRM
L'email est envoyé selon les conditions suivantes :
Comment construire l'email de rappel de panier ?
Dans l'email, vous pouvez utiliser les données suivantes :
Variables du profils
{{ var:profile.customer_name }} -> Nom
{{ var:profile.customer_firstname }} -> Prénom
{{ var:profile.customer_email }} -> Email
{{ var:profile.customer_birthday }} -> Anniverssaire
{{ var:profile.customer_gender }} -> Genre
{{ var:profile.customer_address }} -> Adresse
{{ var:profile.customer_cp }} -> Code postal
{{ var:profile.customer_city }} -> Ville
{{ var:profile.customer_country }} -> Pays
{{ var:profile.customer_tel }} -> Téléphone
{{ var:profile.customer_mobile }} -> Téléphone portable
{{ var:profile.customer_lang }} -> Langue
{{ var:profile.customer_company }} -> Entreprise
{{ var:profile.customer_fonction }} -> Fonction
Variables du site
{{ var:site.id }} -> Identifiant du site
{{ var:site.name }} -> Nom du site
{{ var:site.url }} -> Url du site
{{ var:site.urlTwitter }} -> Url du compte Twitter
{{ var:site.urlFacebook }} -> Url du compte Facebook
{{ var:site.urlInstagram }} -> Url du compte Instagram
{{ var:site.urlLogo }} -> Url du logo de votre site
- Les données du panier que vous nous avez transmise par API
Exemple
Envoi API - mise à jour panier
$publicKey = 'xxxxx'; // À modifier
$privateKey = 'xxxxx'; // À modifier
$data = [
"key" => ["cart_id" => 90]
"customerEmail" => "johndoe@mail.tld"
"data" => [
"cart_products_count" => 1
"cart_url" => "http://www.exemple.tld/panier"
"cart_grandTotal" => 32.74
"products" => [
"0" => [
"name" => "Mon Produit"
"description_short" => "Ma description Courte."
"price_total" => 43.08
"quantity" => 1
"lienProduit" => "http://ps17.spreadfamily.fr/2-sweater.html"
"lienImage" => "ps17.spreadfamily.fr/21-home_default/brown-sweater.jpg"
]
]
]
]
$ch = curl_init('https://social-sb.com/api/v3/automations/trigger/abandoned_cart');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $publicKey . ":" . $privateKey);
$result = curl_exec($ch);
Utilisation des variables dans l'email
Bonjour {{ var:profile.customer_firstname }},
Vous avez {{var:data.cart_products_count}} produit(s) dans votre panier.
Liste des produits :
{% for product in var:data.products %}
{{ product.name }}
{% endfor %}
Pour afficher le prix avec deux décimales après la virgule, il faut utiliser la variable :
{{ FormatNumber(".00", product.price_with_reduction) }}€
Arrondir le prix affiché dans l'email
La fonction Round(variable, précision)
permet d’arrondir un nombre avec la précision donnée.
Cette méthode arrondit à l’entier le plus proche en fonction des décimales.
Round
ne permet pas de retirer les chiffres après la virgule ! Exemples d’utilisation
- Si le produit coûte
34.77
avec la précision0
, le prix affiché dans l'email sera35.0
.
- Si le produit coûte
58.12
avec la précision1
, le prix affiché dans l'email sera58.1
. Si le produit coûte65.88
avec la précision1
, le prix affiché dans l'email sera65.9
.
Arrondir sur le nombre entier
{{ Round(product.price_with_reduction, 0) }} €
Arrondir sur le 1er chiffre après la virgule
{{ Round(product.price_with_reduction, 1) }} €
Afficher un nombre entier
La fonction Int(variable)
permet d’extraire la partie entière d'un nombre.
Int
ne fait pas d'arrondi ! Exemples d’utilisation
Si le produit coûte 52.32
, le prix affiché dans l'email sera 52
.
Si le produit coûte 34.78
, le prix affiché dans l'email sera 34
.
{{ Int(product.price_with_reduction) }} €
Afficher un nombre entier arrondi
Vous pouvez cumuler les fonctions Int()
et Round()
pour arrondir et afficher uniquement la partie entière d'un nombre.
Exemples d'utilisation
Si le produit coûte 58.12
avec la précision 0
, le prix affiché dans l'email sera 58
.
Si le produit coûte 65.88
avec la précision 0
, le prix affiché dans l'email sera 66
.
{{ Int(Round(product.price_with_reduction, 0)) }} €
Panier abandonné sur un site multilingue
- Ajoutez un bloc Conditions sur la langue du profil,
- Ajoutez un email par langue.
Exemple pour un email français et un email anglais
Renseigner l'URL du panier dans les emails
Dans le plugin SPREAD pour Prestashop, le champ URL du panier permet d'utiliser la variable {{var:data.cart_url}}
dans les emails de vos automations SPREAD.
Lors de l'envoi de l'email, cette variable sera automatiquement remplacée par l'URL du panier renseigné dans le plugin.
Dans le plugin, ajoutez l'URL du panier de la langue principale de votre site.
Par exemple, https://www.mon-site.com/fr/panier
Sur les emails traduits en d'autres langues, vous devez remplacer la variable du bouton d'accès au panier {{var:data.cart_url}}
par le lien du panier de chaque langue.
Exemples
- Anglais : https://www.mon-site.com/en/cart?action=show
- Allemand : https://www.mon-site.com/de/einkaufswagen?action=show