Slim LARIBI
Cours CRM, atelier e-commerce : introduction

Avant de brancher, comprendre

Trois actes pour poser le décor : le problème qu'on veut régler, les quatre outils qui vont travailler ensemble, et les quatre mots qu'on va utiliser tout l'atelier.

La boutique WooCommerce

Commande n° 1048
Amira Ben Salah
Cuisine · 1 250 TND
aucun lien

Le commercial

Qui a commandé ?
commandes_a_recopier.xlsx⌨️ saisie manuelle
N°ClientEmailMontant
1046Youssef T.youssef@…480
1047Youssef T.youssef@…480
1048Amira B.amira@gmal.com1 250
1049???
Quelqu'un recopie chaque commande, à la main, tous les jours.
🔁 Youssef saisi deux fois
✍️ Faute dans l'email d'Amira
🕳️ Commande 1049 oubliée
⏱️ Le client attend son appel
Et si chaque commande arrivait toute seule dans le CRM ?

WooCommerce

La caisse

Elle enregistre chaque vente : qui, quoi, combien.

ta boutique WordPress

n8n

Le facteur

Il récupère l'information et la livre au bon endroit, sans jamais se tromper d'adresse.

n8n.wescaleup.tech

HubSpot

Le carnet client

Il se souvient de qui a acheté quoi, et quand. Le commercial y travaille.

le CRM

GA4

Le compteur

Il sait d'où viennent les ventes, mais ne connaît aucun nom.

déjà branché hier
WooCommerce→n8n→HubSpot· et à côté, sans données personnelles :GA4

Webhook

= la sonnette
Sans webhook🚪 « Nouvelle commande ? » Non.Non.Oui !
Avec webhook WooCommerce sonne chez n8n dès la commande.

Workflow

= la recette
1 Recevoir→2 Trier→3 Contact→4 Transaction

Toujours les mêmes étapes, dans le même ordre, à chaque commande.

Clé de service

= le badge d'accès
🔓 lire les contacts
🔓 écrire les contacts
🔓 lire les transactions
🔓 écrire les transactions
🔒 données sensibles
🔒 structure du CRM

Test / Production

= répétition et spectacle
🎭 Test URLMarche seulement quand tu cliques sur « Execute workflow », pendant 2 minutes.
🎬 Production URLAprès « Publish » : tourne tout seul, 24 h/24, à chaque commande.

Maintenant, suivons la commande d'Amira dans les deux tuyaux

✓ Le problème ✓ Les 4 personnages ✓ Les 4 mots
·

© Slim LARIBI
Cours CRM, atelier e-commerce

Une commande, deux tuyaux

Quand Amira passe commande sur la boutique, deux outils doivent être informés. GA4 doit savoir ce qui s'est passé. Le CRM doit savoir qui l'a fait. On ne les nourrit pas par le même chemin, et c'est tout le sujet de cet atelier.

Commande validée
n° 1048
2 produits, 1 250 TND
paiement à la livraison
Tuyau 1 : le navigateur (le comportement)
merci
Tuyau 1 · navigateur
dataLayer.push
event : purchase
montant, produits
aucun nom
lit
Tuyau 1 · navigateur
GTM
déclencheur purchase
→ balise GA4
envoie
Tuyau 1 · navigateur
GA4
achat : 1 250 TND
quoi et combien
transaction_id 1048
Tuyau 2 : le serveur (le client)
webhook
Tuyau 2 · serveur
WooCommerce
« Commande créée »
toute la commande
reçoit
Tuyau 2 · serveur
n8n
crée ou met à jour
le contact par email
crée
Tuyau 2 · serveur
HubSpot CRM
contact Amira Ben Salah
+ transaction associée
Commande 1048
🔑 Clé commune aux deux outils : 1048
·

© Slim LARIBI

Ce que chaque outil reçoit

Même commande, deux fiches très différentes. GA4 reçoit l'achat sans la personne. Le CRM reçoit la personne et son achat.

GA4 : l'événement purchase

via dataLayer → GTM
  • transaction_id1048
  • value1250
  • currencyTND
  • itemsMitigeur Inox, Hotte 60 cm
  • nom, email, téléphoneinterdit

HubSpot : contact + transaction

via WooCommerce → n8n
  • ClientAmira Ben Salah
  • Email, téléphoneamira@… / 22 ••• •••
  • TransactionCommande 1048
  • Produits1 x Mitigeur Inox, 1 x Hotte 60 cm
  • Montant, étape1 250 TND, commande reçue
GA4 apprend ce qui s'est passé. Le CRM apprend qui l'a fait. Les données personnelles ne passent jamais par le navigateur.

Pourquoi pas tout par le dataLayer ?

C'est la première idée qui vient : mettre le nom et l'email dans le dataLayer, et laisser GTM les envoyer au CRM. Regarde ce qui se passe.

dataLayer
nom : Amira
email : amira@…
tél : 22 ••• •••
lit tout
Pixel Meta
a accès
aux données perso
lit tout
Scripts tiers
chat, widgets…
aussi
bloqué
Bloqueur de pub
GTM ne se charge pas
rien
CRM
commande perdue
·

© Slim LARIBI

Données exposées

Le dataLayer est lisible par toutes les balises de la page. Et Google interdit d'envoyer des données personnelles à GA4.

Commandes perdues

Bloqueur de pub, page merci fermée trop vite, connexion coupée : le navigateur n'est pas un tuyau fiable pour le CRM.

Pas de mise à jour

Une commande annulée ou remboursée ne repasse jamais par la page merci. Seul le serveur connaît le vrai statut.

Ce qu'il faut faire

Neuf étapes : deux pour le tuyau GA4, sept pour le tuyau HubSpot. Fais-les dans l'ordre et teste chaque tuyau séparément.

Tuyau 1 · navigateur

WordPress → GTM → GA4

L'achat part vers GA4, sans aucune donnée personnelle.

1

Pousser purchase dans le dataLayer

WordPress › WPCode
Tuyau 1 · navigateur
  1. Code Snippets › + Ajouter un snippet › Ajouter votre code personnalisé, type Extrait PHP, nommé « dataLayer purchase ».
  2. Colle ce code, choisis l'insertion Exécuter partout, active le snippet et enregistre.
    Extrait PHP (WPCode)
    add_action( 'woocommerce_thankyou', 'sl_datalayer_purchase', 20 );
    function sl_datalayer_purchase( $order_id ) {
        if ( ! $order_id ) return;
        $order = wc_get_order( $order_id );
        // Une seule fois par commande : pas de doublon si la page merci est rechargée
        if ( ! $order || $order->get_meta( '_sl_dl_purchase_sent' ) ) return;
    
        $items = array();
        foreach ( $order->get_items() as $item ) {
            $product = $item->get_product();
            $items[] = array(
                'item_id'   => $product ? ( $product->get_sku() ?: (string) $product->get_id() ) : '',
                'item_name' => $item->get_name(),
                'price'     => (float) $order->get_item_total( $item, false ),
                'quantity'  => (int) $item->get_quantity(),
            );
        }
    
        $data = array(
            'event'     => 'purchase',
            'ecommerce' => array(
                'transaction_id' => (string) $order->get_order_number(),
                'value'          => (float) $order->get_total(),
                'tax'            => (float) $order->get_total_tax(),
                'shipping'       => (float) $order->get_shipping_total(),
                'currency'       => $order->get_currency(),
                'items'          => $items,
            ),
        );
    
        $order->update_meta_data( '_sl_dl_purchase_sent', 'yes' );
        $order->save();
    
        echo '<script>window.dataLayer = window.dataLayer || [];'
           . 'window.dataLayer.push({ ecommerce: null });'
           . 'window.dataLayer.push(' . wp_json_encode( $data ) . ');</script>';
    }

    Remarque : aucun nom, email ni téléphone dans ce code. Le { ecommerce: null } vide l'objet e-commerce précédent, comme recommandé par Google.

2

Créer la balise GA4 purchase

Google Tag Manager
Tuyau 1 · navigateur
  1. Déclencheurs › Nouveau
    DéclencheurÉvénement - purchase
    Type de déclencheurÉvénement personnalisé
    Nom de l'événementpurchase
  2. Variables › Nouvelle › Variable de couche de données, nommée DLV - transaction_id, nom de la variable ecommerce.transaction_id. Elle sert à vérifier en mode Aperçu.
  3. Balises › Nouvelle › Google Analytics › Événement GA4
    BaliseGA4 - purchase
    ID de mesureG-XXXXXXXXXX
    Nom de l'événementpurchase
    Plus de paramètres › E-commercecocher « Envoyer des données d'e-commerce », source : Couche de données
    DéclenchementÉvénement - purchase

    Pourquoi cette case : elle demande à GTM de reprendre automatiquement tout l'objet ecommerce du dataLayer (transaction_id, value, currency, items). Pas besoin de créer une variable par paramètre.

Tuyau 2 · serveur

WooCommerce → n8n → HubSpot

Le parcours ci-dessous a été réalisé et testé de bout en bout. Les captures sont celles du vrai test.

3

Créer la clé de service HubSpot

HubSpot › Paramètres ⚙️
Tuyau 2 · serveur

C'est la clé qui autorise n8n à écrire dans ton HubSpot. Sur les comptes HubSpot récents, les « applications privées » n'existent plus : on utilise une clé de service.

  1. Crée un compte gratuit sur hubspot.com si ce n'est pas déjà fait, puis clique sur la roue dentée ⚙️ en haut à droite.
  2. Dans le menu de gauche, ouvre Intégrations › Clés de service.
    Menu Intégrations de HubSpot avec l'entrée Clés de service
    Le menu Intégrations : Clés de service, Applications privées, Applications héritées.

    Ne passe pas par « Applications privées » ni « Applications héritées » : sur un compte neuf, HubSpot affiche « Les applications héritées ne sont pas disponibles sur ce compte ».

    Message HubSpot : applications héritées indisponibles
    Le message qu'on obtient en passant par les applications héritées.
  3. Clique sur Créer une clé de service, en haut à droite.
    Page Clés de service vide avec le bouton Créer une clé de service
    Développement › Clés › Clés de service.
  4. Champ Nom : n8n atelier. Puis clique sur + Ajoutez un nouveau champ d'application.
  5. Recherche contact et coche crm.objects.contacts.read et crm.objects.contacts.write. Efface, recherche deals et coche crm.objects.deals.read et crm.objects.deals.write. Clique sur Mettre à jour.
    Fenêtre de sélection des domaines contacts
    Ne coche pas les lignes avec un triangle ⚠️ (données sensibles) ni les lignes schemas.
    Les quatre domaines sélectionnés
    Le résultat attendu : exactement 4 domaines sélectionnés.
  6. Clique sur Créer (bouton blanc en haut à droite), puis sur Copier à côté de la clé. Elle commence par pat-eu1-. Garde-la dans un bloc-notes.
    Clé de service créée avec ses domaines
    La clé est créée. Elle a été floutée ici : c'est un mot de passe, ne la partage jamais.
4

Importer le workflow dans n8n

n8n › nouveau workflow
Tuyau 2 · serveur

Inutile de construire le workflow à la main : il est fourni prêt à l'emploi sous forme de texte JSON.

  1. Clique sur Copier sur le bloc ci-dessous.
    Workflow n8n (JSON)
    {
      "name": "Atelier - Commande WooCommerce vers HubSpot",
      "nodes": [
        {
          "parameters": {
            "httpMethod": "POST",
            "path": "woocommerce-commande-nom-prenom",
            "options": {}
          },
          "name": "Webhook - commande",
          "type": "n8n-nodes-base.webhook",
          "typeVersion": 2,
          "position": [0, 0],
          "webhookId": "7f3c2a10-5b8e-4d6a-9c41-2e7b1f0a8d55"
        },
        {
          "parameters": {
            "assignments": {
              "assignments": [
                { "id": "f1", "name": "email", "value": "={{ $json.body.billing.email }}", "type": "string" },
                { "id": "f2", "name": "prenom", "value": "={{ $json.body.billing.first_name }}", "type": "string" },
                { "id": "f3", "name": "nom", "value": "={{ $json.body.billing.last_name }}", "type": "string" },
                { "id": "f4", "name": "telephone", "value": "={{ $json.body.billing.phone }}", "type": "string" },
                { "id": "f5", "name": "numero", "value": "={{ $json.body.number }}", "type": "string" },
                { "id": "f6", "name": "montant", "value": "={{ Number($json.body.total) }}", "type": "number" },
                { "id": "f7", "name": "produits", "value": "={{ $json.body.line_items.map(i => i.quantity + ' x ' + i.name).join(', ') }}", "type": "string" }
              ]
            },
            "options": {}
          },
          "name": "Préparer",
          "type": "n8n-nodes-base.set",
          "typeVersion": 3.4,
          "position": [240, 0]
        },
        {
          "parameters": {
            "authentication": "appToken",
            "resource": "contact",
            "operation": "upsert",
            "email": "={{ $json.email }}",
            "additionalFields": {
              "firstName": "={{ $json.prenom }}",
              "lastName": "={{ $json.nom }}",
              "phoneNumber": "={{ $json.telephone }}"
            },
            "options": {}
          },
          "name": "HubSpot - Contact",
          "type": "n8n-nodes-base.hubspot",
          "typeVersion": 2,
          "position": [480, 0]
        },
        {
          "parameters": {
            "authentication": "appToken",
            "resource": "deal",
            "operation": "create",
            "stage": "appointmentscheduled",
            "additionalFields": {
              "dealName": "=Commande {{ $('Préparer').item.json.numero }}",
              "amount": "={{ $('Préparer').item.json.montant }}",
              "description": "={{ $('Préparer').item.json.produits }}",
              "associatedVids": "={{ $json.vid }}"
            }
          },
          "name": "HubSpot - Deal",
          "type": "n8n-nodes-base.hubspot",
          "typeVersion": 2,
          "position": [720, 0]
        }
      ],
      "connections": {
        "Webhook - commande": {
          "main": [[{ "node": "Préparer", "type": "main", "index": 0 }]]
        },
        "Préparer": {
          "main": [[{ "node": "HubSpot - Contact", "type": "main", "index": 0 }]]
        },
        "HubSpot - Contact": {
          "main": [[{ "node": "HubSpot - Deal", "type": "main", "index": 0 }]]
        }
      },
      "settings": {}
    }
  2. Dans n8n, crée un nouveau workflow, clique sur la zone vide du canevas et fais Ctrl+V (Cmd+V sur Mac). Les 4 nœuds apparaissent, déjà reliés.
    Workflow importé avec quatre nœuds
    Les triangles rouges sont normaux : il manque encore la connexion à HubSpot (étape 5).
  3. Obligatoire : personnalise l'adresse de ton webhook. Double-clique sur Webhook - commande. Dans le champ Path, remplace woocommerce-commande-nom-prenom par ton nom et ton prénom, par exemple woocommerce-commande-bensalah-amira. Enregistre avec Cmd+S (Ctrl+S sur Windows).

    Pourquoi : toute la classe utilise le même serveur n8n. Si deux étudiants gardent le même chemin, leurs commandes se mélangent et n8n refuse de publier le second workflow. Règles d'écriture : minuscules, sans accents, sans espaces, avec des tirets entre les mots.

NœudCe qu'il fait
Webhook - commandeLa boîte aux lettres : reçoit la commande envoyée par WooCommerce.
PréparerLe tri : garde 7 informations utiles (email, prénom, nom, téléphone, numéro, montant, produits) et leur donne des noms simples.
HubSpot - ContactCherche le client par son email : le met à jour s'il existe, le crée sinon. Jamais de doublon.
HubSpot - DealCrée la transaction « Commande n° … » avec le montant et les produits, et l'accroche au contact.
5

Connecter n8n à HubSpot

n8n › nœuds HubSpot
Tuyau 2 · serveur
  1. Double-clique sur HubSpot - Contact, puis clique sur Connect to HubSpot Service Key.
    Nœud HubSpot Contact avec le bouton Connect to HubSpot Service Key
    Les champs Email, First Name, Last Name et Phone Number sont déjà remplis par l'import.
  2. Colle ta clé pat-eu1-… dans Service Key, laisse « Allowed HTTP Request Domains » sur All, et clique sur Save.
    Fenêtre du credential HubSpot Service Key
    Le credential « HubSpot Service Key account ».
  3. Ouvre HubSpot - Deal. Le credential est déjà sélectionné, mais le champ Deal Stage Name or ID est en rouge.
    Champ Deal Stage en rouge
    L'étape par défaut du fichier n'existe pas dans ton pipeline HubSpot.
  4. Clique sur la flèche ⌄ du champ et choisis la première étape de ton pipeline. Si la liste s'affiche, c'est la preuve que la clé de service fonctionne.
    Liste des étapes du pipeline HubSpot
    Les étapes changent d'un compte à l'autre. Ici, on a pris « Réunion d'introduction ».
  5. Ferme le panneau et enregistre le workflow (Cmd+S). Les triangles rouges ont disparu.

Ne clique pas sur « Execute step » dans un nœud HubSpot : n8n essaierait d'exécuter le Webhook, qui attendrait une commande. Si le bouton tourne, arrête-le avec le petit carré ⬜.

6

Copier l'URL de test du Webhook

n8n › Webhook - commande
Tuyau 2 · serveur
  1. Double-clique sur Webhook - commande. Reste sur l'onglet Test URL et clique sur l'adresse pour la copier. Elle doit se terminer par ton nom et prénom, par exemple https://n8n.wescaleup.tech/webhook-test/woocommerce-commande-bensalah-amira. La capture montre l'adresse du formateur.
    Nœud Webhook avec la Test URL
    L'adresse de test contient /webhook-test/. On passera à la Production URL à l'étape 9.
7

Créer le crochet web dans WooCommerce

WordPress › WooCommerce › Réglages › Avancé
Tuyau 2 · serveur

Dans la version française de WooCommerce, les webhooks s'appellent Crochets Web.

  1. Va dans WooCommerce › Réglages › Avancé › Crochets Web et clique sur Créer un nouveau crochet web.
    Page Crochets Web de WooCommerce
    Onglet Avancé, lien Crochets Web.
  2. Remplis le formulaire :
    Crochet webCommande vers n8n
    NomCommande vers n8n
    ÉtatActive
    SujetCommande créée
    URL de livraisonta Test URL copiée à l'étape 6 (elle finit par ton nom-prénom)
    Secretne touche pas
    Version de l'APIIntégration WP API REST v3
    Formulaire du crochet web rempli
    Vérifie que l'URL se termine bien par woocommerce-commande-ton-nom-ton-prenom, sans espace.
  3. Clique sur Enregistrer le crochet web.
    Erreur 404 après l'enregistrement du crochet web
    L'erreur 404 est normale : WooCommerce envoie un test, mais n8n n'écoute pas encore. Le crochet web est bien créé. (Secret flouté.)
8

Tester avec une vraie commande

n8n + boutique + WordPress
Tuyau 2 · serveur

n8n n'écoute que pendant 2 minutes environ, et WooCommerce n'envoie pas le crochet web immédiatement. La méthode qui marche à coup sûr : préparer 3 onglets avant de lancer quoi que ce soit.

1n8n

Le workflow, sur le canevas.

2La boutique

Un produit dans le panier, page Checkout remplie, sans valider. En navigation privée.

3Actions planifiées

WooCommerce › État › Actions planifiées

  1. Onglet 1 : clique sur Execute workflow, en bas du canevas. Le Webhook attend.
    n8n en attente sur la Test URL
    « Waiting for you to call the Test URL ».
  2. Onglet 2 : valide la commande. Note son numéro.
    Page de remerciement de la commande 1389
    La commande n° 1389 de notre test (email flouté).
  3. Onglet 3 : actualise, tape webhook dans la recherche et clique sur Rechercher…. Sur la ligne woocommerce_deliver_webhook_async En attente, survole le nom et clique sur Exécuter.
    Page des actions planifiées de WooCommerce
    Les actions planifiées : c'est ici que WooCommerce met ses envois en file d'attente.
  4. Onglet 1 : les 4 nœuds passent au vert, avec « 1 item » entre chacun.
    Les quatre nœuds du workflow au vert
    La commande a traversé tout le workflow.
  5. Dans HubSpot : Contacts, ouvre la fiche du client. Le panneau Transactions, à droite, affiche la commande.
    Fiche contact HubSpot avec la transaction Commande 1389
    « Commande 1389 », 6,00 $US, associée au contact (données personnelles floutées).

Pourquoi tester en navigation privée : si tu es connecté à WordPress, la commande est pré-remplie avec le nom de ton compte administrateur. Dans notre test, elle est arrivée au nom du compte WordPress connecté, pas au nom saisi.

9

Passer en production

n8n + WooCommerce
Tuyau 2 · serveur

Jusqu'ici, le workflow ne marche que si tu cliques sur « Execute workflow ». En production, il traite chaque commande tout seul.

  1. Dans Webhook - commande, clique sur l'onglet Production URL et copie l'adresse : /webhook/ au lieu de /webhook-test/, toujours avec ton nom-prénom à la fin.
    Production URL du Webhook
    La Production URL.
  2. Enregistre, puis clique sur Publish en haut à droite du canevas (sur les anciennes versions de n8n : l'interrupteur Inactive → Active).
    Workflow publié dans n8n
    La pastille verte « Published » : le workflow écoute en permanence.
  3. Dans WooCommerce, ouvre ton crochet web, remplace l'URL de livraison par la Production URL et clique sur Enregistrer le crochet web. Plus d'erreur 404.
    Crochet web mis à jour avec la Production URL
    « Mis à jour le… » et l'URL sans « -test ».
  4. Passe une nouvelle commande sans toucher à n8n, attends environ une minute, puis ouvre l'onglet Executions du workflow : une exécution réussie apparaît.

Bonus : renomme les étapes du pipeline HubSpot pour l'e-commerce (par exemple « Commande reçue », « En préparation », « Livrée », « Annulée ») dans ⚙️ › Objets › Transactions › Pipelines. HubSpot garde les mêmes identifiants internes, donc le workflow continue de fonctionner. Le montant s'affiche en USD si la boutique et HubSpot sont réglés en dollars : tu peux passer en TND dans les réglages de HubSpot.

Pannes rencontrées et solutions

Toutes ces situations sont arrivées pendant le test réel. Si tu bloques, la réponse est presque sûrement ici.

n8n refuse de publier : conflit de webhook (« conflict » ou « already registered »)
Un autre étudiant utilise déjà le même chemin. Ouvre le nœud Webhook, vérifie que le Path contient bien ton nom et prénom, enregistre, puis republie. N'oublie pas de mettre à jour l'URL dans le crochet web WooCommerce.
Ma commande arrive chez un autre étudiant, ou celle d'un autre arrive chez moi
Deux workflows ont le même chemin. Chacun doit avoir un Path unique de la forme woocommerce-commande-nom-prenom, et le crochet web WooCommerce doit pointer exactement vers cette adresse.
« Les applications héritées ne sont pas disponibles sur ce compte »
Ton compte HubSpot est récent : les applications privées ont été remplacées. Utilise une clé de service (étape 3) et, dans n8n, le credential HubSpot Service Key.
Le champ « Deal Stage Name or ID » est en rouge
L'étape prévue dans le fichier n'existe pas dans ton pipeline. Ouvre la liste et choisis une étape de ton compte. Si la liste reste vide ou affiche une erreur, la clé de service est mauvaise ou il manque les domaines deals.
WooCommerce affiche « L'url de livraison a renvoyé le code : 404 »
Avec la Test URL, c'est normal tant que n8n n'écoute pas. Avec la Production URL, vérifie que le workflow est bien publié et que l'URL contient /webhook/ et non /webhook-test/.
n8n reste sur « Waiting for you to call the Test URL », puis s'arrête
WooCommerce envoie ses crochets web en file d'attente, avec du retard. Force l'envoi dans Actions planifiées (recherche webhook, puis Exécuter). Si l'écoute de n8n a expiré entre-temps, la commande est perdue pour le test : recommence avec la méthode des 3 onglets.
Le bouton « Execute step » tourne sans fin dans un nœud
n8n exécute tout le workflow depuis le Webhook, qui attend une commande. Arrête avec le petit carré ⬜. Pour tester, utilise Execute workflow sur le canevas.
Le contact arrive avec un autre nom que celui saisi
Tu étais connecté à WordPress : WooCommerce a pré-rempli la facturation avec ton compte. Teste en navigation privée.
En production, rien n'arrive dans « Executions »
Attends une minute, ou force l'envoi dans Actions planifiées. Vérifie aussi que l'état du crochet web est toujours Active : après plusieurs échecs de suite, WooCommerce peut le désactiver tout seul.

Avant de partir

Coche chaque point. Les deux tuyaux doivent fonctionner.

Mon atelier « deux tuyaux »0 / 8
Les deux tuyaux fonctionnent. GA4 sait ce qui s'est passé, HubSpot sait qui l'a fait.

ET APRÈS ?

Ici, tu as envoyé une commande vers GA4 et vers HubSpot.

Dans la formation 90h, tu construis toute la chaîne sur un vrai projet : tracking, CRM et automatisations n8n.

Voir la formation
Slim LARIBIFormateur · CEO WeScaleUp Academy · eCommerce Director
© 2026 Slim LARIBI. Tous droits réservés. Reproduction et diffusion interdites sans autorisation.
💬 WhatsApp +216 22 354 833