
« Vous l’avez acheté chez nous ? » Cette question, un vélociste la pose souvent — surtout quand un client revient pour un SAV deux ans après la vente. Et la réponse est souvent floue : un bon d’achat papier perdu, une facture Sage exportée puis classée dans un dossier introuvable, un Excel vaguement à jour. CRM Cycles traite la fiche client comme la mémoire commerciale long terme du magasin — chaque devis, chaque facture, chaque OR atelier, chaque vélo, chaque relance, chaque crédit, tout est rattaché à la fiche et reste accessible des années plus tard.
Une fiche client, sept onglets, zéro contexte perdu
La fiche client de CRM Cycles est organisée en sept onglets thématiques :
- Informations — coordonnées, type (particulier / professionnel / association), SIRET et N° TVA si pro, consentements RGPD (email, SMS, téléphone), groupe tarifaire
- Adresses — adresses multiples (facturation / livraison), une définie par défaut
- Documents — tous les devis, commandes, factures, avoirs du client, triés par date décroissante, avec badge de type et statut
- Correspondance — chronologie des emails et SMS envoyés (type, sujet, statut, canal)
- Crédits — solde créditeur actuel + historique des mouvements
- Parc vélos — liste des vélos achetés (avec N° série, FNUCI, date)
- Historique — vue chronologique unifiée toutes activités confondues
Côté action : depuis la fiche, le commerçant peut créer en un clic un devis, une commande, une facture, un OR atelier, un SAV ou une offre de reprise — toujours avec le client déjà pré-rempli.
Parc vélos : alimenté tout seul par les factures
L’onglet Parc vélos est probablement le plus différenciant. Il liste tous les vélos qu’un client a acheté en magasin, avec :
- la référence vélo (marque, modèle, année)
- le numéro de série (cadre)
- le FNUCI (Fichier National Unique des Cycles Identifiés, gravé sur le cadre depuis 2021 — voir l’article à venir sur le livre de police)
- la date d’acquisition
- le type (Vente / Échange / Don / Autre)
- le lien vers les ordres de réparation de ce vélo
Le bénéfice opérationnel : quand un client revient en SAV trois ans plus tard, le technicien tape les deux premières lettres du nom dans la barre d’OR, l’autocomplete affiche le client, et la liste de ses vélos s’ouvre directement. Plus de « vous l’avez acheté chez nous ? » — la réponse est dans la fiche, avec l’historique des révisions associées.
Important côté implémentation : l’ajout est automatique. À chaque validation de facture (cf article 1 sur le pipeline de vente), les lignes contenant un produit vélo avec numéro de série déclenchent un CustomerBike::create() dans le parc du client facturé. Aucune saisie manuelle, aucun oubli.
Correspondance : traçabilité RGPD-compliant des contacts
Tout email ou SMS envoyé depuis CRM Cycles à un client est tracé dans son onglet Correspondance : date, canal, type (devis, facture, notification atelier prêt, relance), sujet, statut d’envoi (en attente / envoyé / erreur). C’est utile pour deux raisons :
- Conformité RGPD : en cas de demande d’accès aux données du client, on a une liste complète des messages échangés.
- Respect des consentements : chaque envoi vérifie les opt-in/opt-out spécifiques (email marketing, SMS de service, appel commercial). Un client qui a coché « pas de SMS commerciaux » ne reçoit pas la campagne de relance, même si un commerçant la déclenche par erreur — la requête SMS est filtrée à l’envoi côté serveur.
Crédits clients : les avoirs qui ne se perdent pas
Quand un client retourne un produit ou bénéficie d’un geste commercial, CRM Cycles peut générer un crédit client : un solde positif rattaché à sa fiche, utilisable sur n’importe quelle facture future. L’onglet Crédits affiche le solde actuel + l’historique des mouvements (date, type, description, montant, solde après opération, lien vers le document associé).
À la caisse, quand on encaisse une facture, le mode « Avoir client » devient disponible si le client a du crédit. La transaction décrémente automatiquement le solde, l’historique trace tout. Plus de note volante « à ré-utiliser sur sa prochaine venue » qui finit oubliée.
Documents commerciaux : la timeline qui dit tout
L’onglet Documents regroupe en une seule vue chronologique tous les devis, commandes, factures et avoirs d’un client. Chaque ligne : type (badge coloré : devis bleu, commande orange, facture verte, avoir rouge), numéro, date, montant TTC, statut. Clic sur la ligne → ouverture du document.
C’est utile au quotidien pour : répondre à « qu’est-ce que j’ai dépensé chez vous cette année ? » en deux secondes, ou retrouver le devis de l’an dernier que le client veut convertir en commande.
Groupes clients : tarification différenciée automatique
Pour les professionnels, clubs, collectivités ou partenaires, CRM Cycles propose un système de groupes tarifaires. Chaque groupe peut définir une ou plusieurs remises :
- Remise globale (ex. : -10 % sur tout le catalogue pour le Comité d’Entreprise X)
- Remise par catégorie de produit (ex. : -15 % sur les accessoires, prix net sur les vélos)
Côté usage : dès qu’un commerçant crée un devis, une commande ou une facture pour un client appartenant à un groupe, les remises s’appliquent automatiquement sur les lignes éligibles. Plus besoin de mémoriser « ah oui, Mathieu c’est le CE Bricorama, il a -10 % ». L’erreur tarifaire est éliminée.
Tickets de support : le portail client externalise le SAV
CRM Cycles est doublé d’un portail client (sous-domaine dédié : portail.magasin.fr par exemple) où le client peut se connecter par mot de passe ou code SMS. Il y voit ses factures, son parc vélo, ses OR en cours, et peut ouvrir un ticket de support.
Un ticket de support :
- Numéro unique format
TK-AAAAMM-XXXX - Catégorie : Général, Atelier, Vente, Facturation
- Vélo concerné (optionnel) — sélectionné dans son parc
- Sujet + description
Côté magasin, l’équipe gère les tickets depuis le back-office : assignation à un technicien, fil de discussion type chat, notes internes invisibles pour le client, changement de statut (Ouvert → En cours → Résolu → Fermé). Le passage à « En cours » est automatique dès la première réponse de l’équipe. Un client qui répond à un ticket résolu le réouvre automatiquement — pratique pour les pannes intermittentes qui reviennent.
Sous le capot
- Modèle principal :
Customeravec ses relationshasMany:addresses,documents(devis/cmd/factures/avoirs viaCustomerDocument),correspondence,credits,bikes(CustomerBike),tickets. - Onglet Documents : requête unifiée sur la table polymorphe
customer_document(cf article 1) filtrée parcustomer_id, triéeORDER BY document_date DESC. Une seule jointure suffit pour les 4 types. - Ajout auto au parc vélos : hook
afterValidatesur le modèleInvoice(en faitCustomerDocumenten mode « validation finale ») — il itère lesDocumentLineayant unproduct_serial_idnon nul, et fait unCustomerBike::firstOrCreate()avec le triplet (customer_id, product_serial_id, acquisition_date). - Correspondance + consentements : chaque envoi passe par un service
NotificationDispatcherqui vérifie$customer->consent_emailou$customer->consent_smsavant l’appel à l’API mail/SMS. Refus = enregistrementCorrespondenceavec statut « blocked_consent » pour traçabilité (utile en cas d’audit RGPD : on prouve qu’on a essayé puis bloqué). - Groupes tarifaires : relation
belongsTo CustomerGroupsurCustomer. À chaque création d’unDocumentLine, unPricingRuleResolverapplique les remises actives du groupe en cascade (remise produit > remise catégorie > remise globale > tarif catalogue). - Tickets portail : app Yii2
frontenddédiée (sous-domaine), authentification client paridentity_cookieou OTP SMS. Endpoints/portal/tickets/create,/portal/tickets/<id>. Côté back-office, les tickets sont rendus dans le menu Plesk classique de Yii2. - Verrouillage concurrent : même mécanisme
locked_by+locked_atque sur les OR atelier (cf article précédent).
Ce qu’on gagne au quotidien
- SAV imbattable : l’historique vélo + parc client transforme « vous l’avez acheté chez nous ? » en « je vois que vous avez fait votre dernière révision le 12 juin, le Lapierre Crosshill, on regarde ? »
- Tarification pro sans erreur : les groupes appliquent les remises automatiquement. Le commerçant peut se concentrer sur le conseil, pas sur les calculs.
- RGPD intégré : consentements + traçabilité des envois. En cas d’audit ou de demande client, tout est exportable.
- Plus de bons d’achat perdus : les crédits sont rattachés à la fiche, utilisables à la caisse, tracés à vie.
- SAV asynchrone via le portail : le client ouvre un ticket à 22h depuis son canapé, l’équipe traite le lendemain matin. Moins d’appels téléphoniques, plus de trace écrite.
Le prochain article couvrira le catalogue produits : produits standards vs vélos sérialisés, marques, fournisseurs et les tags BLE qui géolocalisent un vélo en rayon en quelques secondes via Bluetooth.

