Comment pouvons nous vous aider ? 👋

Intégration du panier abandonné

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.

Notion image

Fonctionnement de l'automation

Exemple de l'objectif Abandon de panier :

  1. Mise à jour du panier
    1. Premier envoi des données → Création de l’automation

      Envois suivants → Mise à jour de l’automation

  1. Attente pendant 1h
    1. La durée de l'attente peut être configurée.

  1. Condition : Le profil a commandé ?
    1. Oui → Fin de l'automation
    2. Non → Envoi de l'email
      1. L'email est envoyé selon les conditions suivantes :

        • Consentements acceptés (configuré dans le bloc email)
        • Profil existant dans la CRM
Notion image

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:

Notion image

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

Notion image
 

Fonctionnement de l'automation


Exemple de l'objectif Abandon de panier :

  1. Mise à jour du panier
    1. Premier envoi des données → Création de l’automation

      Envois suivants → Mise à jour de l’automation

  1. Attente pendant 1h
    1. La durée de l'attente peut être configurée.

  1. Condition : Le profil a commandé ?
    1. Oui → Fin de l'automation
    2. Non → Envoi de l'email
      1. L'email est envoyé selon les conditions suivantes :

        • Consentements acceptés (configuré dans le bloc email)
        • Profil existant dans la CRM
Notion image

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.

⚠️
La fonction Round ne permet pas de retirer les chiffres après la virgule !

Exemples d’utilisation

  1. Si le produit coûte 34.77 avec la précision 0, le prix affiché dans l'email sera 35.0.
  1. Si le produit coûte 58.12 avec la précision 1, le prix affiché dans l'email sera 58.1. Si le produit coûte 65.88 avec la précision 1, le prix affiché dans l'email sera 65.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.

⚠️
La fonction 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

  1. Ajoutez un bloc Conditions sur la langue du profil,
  1. Ajoutez un email par langue.

Exemple pour un email français et un email anglais

Cliquez sur l'image pour agrandir
Cliquez sur l'image pour agrandir

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
 
 
🆘
Si vous avez d’autres questions sur ce sujet, vous pouvez contacter le support. 💬
Cela a-t-il répondu à votre question ?
😞
😐
🤩