Carnet est un gestionnaire de relation client conçu pour les boutiques de luxe — chaque client, achat et interaction est consigné pour que votre équipe offre une expérience personnalisée à chaque visite.
👤
Clients
Un registre VIP à dix niveaux. Chaque préférence, achat et conversation conservés contre le nom — et rappelés au moment où ils entrent.
📊
Ventes
Enregistrez dans huit devises. Voyez qui dépense, ce qui les motive, et quels clients portent discrètement la saison.
💬
Campagnes
Contactez par courriel, téléphone, SMS ou WhatsApp. Chaque ouverture, réponse et retour retracés jusqu'au message qui l'a mérité.
📅
Rendez-vous
Essayages, consultations et présentations privées — réservés en harmonie avec votre calendrier, sans double réservation.
🏢
Multi-emplacement
Gérez plusieurs boutiques depuis un seul tableau de bord Siège social.
📊
Rapports
Rapports de ventes et campagnes, exportables en CSV.
Intégration
Connectez votre système
Trois façons d'envoyer vos ventes dans Carnet. Choisissez celle qui correspond à votre configuration — aucun appel nécessaire.
🔗
Webhook direct
Votre app envoie un POST JSON à Carnet à chaque vente. Idéal si vous avez un développeur ou un système sur mesure.
⚡
Zapier / Make
Connectez Shopify, Square, WooCommerce, Lightspeed et d'autres sans code. Zapier ou Make fait la traduction entre votre plateforme et Carnet.
📥
Import CSV
Exportez depuis n'importe quel système et importez dans Carnet (Siège social → Import). Parfait pour les données historiques.
Compatibilité par plateforme
Shopify
Zapier / Make
Déclencheur : Nouvelle commande
Square
Zapier / Make
Déclencheur : Nouveau paiement
WooCommerce
Zapier / Make
Déclencheur : Nouvelle commande
Lightspeed
Zapier / Make
Déclencheur : Nouvelle vente
Clover
Zapier / Make
Déclencheur : Nouvelle commande
App sur mesure
Webhook direct
Votre développeur configure le POST JSON
Tout autre système
CSV import
Exportez → importez dans le Siège social
Exemple pas à pas — Shopify via Zapier
💡Le même principe s'applique à Square, WooCommerce, Lightspeed, etc. — seul le déclencheur change.
1
Déclencheur
Zapier : « New Order in Shopify »
2
Action
Webhooks by Zapier → Custom Request → POST
3
URL
carnet-crm.ca /webhooks/sales/ YOUR_TOKEN
4
Champs
Associez les données Shopify aux champs Carnet
Correspondance des champs (étape 4)
// Champ Carnet Valeur Shopify (Zapier)"customer_email"→Customer Email"customer_name"→Customer Name"product_name"→Line Items Name"amount"→Total Price"currency"→Currency"date"→Created At"reference"→Order Number"location_name"→Location Name"staff_reference"→Staff / User ID"staff_name"→Staff / Cashier Name
👤Mappez le vendeur (staff_reference = identifiant employé du POS) pour que chaque vente soit attribuée à la bonne personne. S'il n'existe pas encore dans Carnet, il est créé automatiquement (rattaché à location_name) et les ventes suivantes lui sont attribuées. Sans ce champ, les ventes reviennent au propriétaire du compte.
⚠️Trouvez votre token dans Carnet → Siège social → Intégrations. Ne le partagez jamais — quiconque le possède peut créer des ventes sur votre compte.
Intégration
Webhook — ventes entrantes
Envoyez une requête POST depuis votre caisse ou votre boutique en ligne à chaque vente. Carnet associe automatiquement l'achat au profil client correspondant et met à jour son historique.
1
Votre caisse
Caisse, boutique en ligne, app sur mesure
2
POST /webhooks/sales
JSON envoyé avec votre token
3
Carnet enregistre
Vente créée, client associé ou créé automatiquement
Point de terminaison
POST https://carnet-crm.ca/webhooks/sales/YOUR_TOKEN
⚠️Remplacez YOUR_TOKEN par le jeton webhook affiché dans les paramètres de votre Siège social sous Intégrations. Gardez ce jeton secret — toute personne qui le possède peut publier des ventes sur votre compte.
En-têtes
Content-Type: application/json
Corps (JSON)
{
// Client — email ou téléphone requis"customer_email":"jane.doe@example.com","customer_phone":"+15141234567","customer_name":"Jane Doe",// Produit — requis"product_name":"Classic Flap Bag","amount":1250.00,"reference":"TXN-00412",// required; retries are safe// Détails optionnels"currency":"CAD","brand":"Chanel","sku":"A01112Y01864","color":"Black","size":"Medium","quantity":1,"category":"handbag","payment_method":"credit_card","date":"2024-09-15","location_name":"Montreal Boutique","notes":"Gift wrap requested",// Personnel — optionnel, dans l'ordre de priorité"staff_reference":"EMP-042","staff_email":"sophie@boutique.com","staff_name":"Sophie Martin"
}
👥Attribution du personnel : staff_reference → staff_email → staff_name (correspondance exacte, insensible à la casse). Si aucun vendeur ne correspond, il est créé automatiquement (rattaché à location_name) et la référence POS est mémorisée — ainsi les ventes suivantes du même vendeur lui sont attribuées automatiquement. Le propriétaire n'est utilisé que si aucun vendeur n'est indiqué.
Voir tous les champs
Requis (au moins un identifiant client + produit + montant)
customer_email
Email du client. Prioritaire sur le téléphone. string
customer_phone
Téléphone. Utilisé si pas d'email. string
product_name
Nom du produit ou service. string
amount
Total de la vente en décimal. number
reference
Référence de transaction POS unique et requise. Une nouvelle tentative retourne la vente originale. string
Optionnels
customer_name
Prénom et nom — crée un profil si aucun match. string
currency
Code ISO 3 lettres. Défaut : CAD. string
brand
Marque du produit. string
sku
Référence article. string
color
Couleur. string
size
Taille. string
quantity
Quantité. Défaut : 1. integer
category
Catégorie produit. string
payment_method
Moyen de paiement. string
date
Date de transaction (AAAA-MM-JJ). Défaut : aujourd'hui. string
notes
Notes libres. string
location_name
Nom de la boutique. string
staff_reference
Référence POS du vendeur (prioritaire). string
staff_email
Email du vendeur. string
staff_name
Nom du vendeur (insensible à la casse). string
Réponse (201)
{
"ok":true,"purchase_id":4821,"client_id":992,"client_name":"Jane Doe","staff_name":"Sophie Martin","staff_matched":"matched",// 'matched', 'created' ou 'fallback_to_owner'"amount":1250.0,"created_at":"2024-09-15T14:30:00.000Z"
}
API REST
Points de terminaison
Utilisez l'API REST pour lire ou écrire des clients, des achats, des campagnes et plus encore depuis n'importe quelle application ou script externe.
Authentification
Authorization: Bearer YOUR_API_TOKEN
🔒Votre jeton API est disponible dans le Siège social sous Intégrations → Jeton API. Incluez-le dans l'en-tête Authorization à chaque requête. Tous les points de terminaison utilisent HTTPS uniquement.
Clients
carnet-crm.ca/clients/992
JD
Jane Doe ★ VIP
jane.doe@example.com · +1 514 123 4567
Active
Tailles
Bague 52·Chaussure 38·Vêtements S
Préférences
Cuir classique, tons neutres
🎉 15 septembre·🏴️ CA·Avocate
Profil retourné par GET /api/v1/clients/:id
GET/api/v1/clients
Lister tous les clients. Supporte ?query= pour la recherche.
GET/api/v1/clients/:id
Récupérer un profil complet avec historique.
POST/api/v1/clients
Créer un client.
PATCH/api/v1/clients/:id
Mettre à jour les champs d'un client.
DELETE/api/v1/clients/:id
Supprimer définitivement un client.
Voir tous les champs (POST / PATCH)
first_name
Prénom. string
last_name
Nom de famille. string
email
Email (unique par tenant). string
phone
Téléphone. string
birthday
Date de naissance (AAAA-MM-JJ). string
gender
Genre. string
occupation
Profession. string
country_code
Code pays (ex. CA, FR, US). string
contact_preference
Canal préféré (email, phone, sms…). string
vip
Marquer comme VIP. boolean
status
active ou inactive. string
size
Taille générale. string
ring_size
Pointure bague. string
shoe_size
Pointure chaussure. string
clothing_size
Taille vêtements. string
preferences
Préférences produits. string
hobbies
Loisirs et intérêts. string
vacation
Destinations de vacances. string
notes
Notes libres. string
permission_to_contact_yes
Consentement de contact explicite. boolean
permission_to_contact_no
Refus de contact explicite. boolean
Achats
carnet-crm.ca/purchases/4821
Classic Flap Bag
Chanel · A01112Y01864 · Black · Medium
handbag · credit_card
15 sept. 2024 · Boutique Montréal
Sophie Martin
$1,250.00
CAD
Achat retourné par GET /api/v1/purchases/:id
GET/api/v1/purchases
Lister tous les achats.
GET/api/v1/purchases/:id
Récupérer un achat.
POST/api/v1/purchases
Enregistrer un achat.
Voir tous les champs (POST)
client_id
ID du client. integer
product_name
Nom du produit. string
amount
Total en décimal. number
date
Date (AAAA-MM-JJ). Défaut : aujourd'hui. string
currency
Défaut : CAD. string
brand
Marque. string
sku
Référence article. string
color
Couleur. string
size
Taille. string
quantity
Quantité. Défaut : 1. integer
category
Catégorie. string
payment_method
Moyen de paiement. string
store
Nom de la boutique. string
notes
Notes libres. string
is_return
Marquer comme retour. boolean
staff_id
Attribuer à un membre. Défaut : propriétaire du token. integer
Personnel
GET/api/v1/staffs
Lister tous les membres du personnel.
GET/api/v1/staffs/:id
Récupérer un membre.
POST/api/v1/staffs
Inviter un membre. Managers et propriétaires seulement.
PATCH/api/v1/staffs/:id
Mettre à jour un membre. Managers et propriétaires seulement.
DELETE/api/v1/staffs/:id
Supprimer un membre. Impossible sur son propre compte.
Voir les champs
POST — invitation
name
Nom complet. string
email
Adresse email. string
password
Mot de passe initial. string
store
Boutique attribuée. string
work_email
Email professionnel pour les campagnes. string
PATCH — mise à jour
name
string
email
string
store
string
work_email
string
Campagnes
GET/api/v1/campaigns
Lister toutes les campagnes avec taux de complétion et revenus.
GET/api/v1/campaigns/:id
Récupérer une campagne avec contacts, statistiques et taux de retour.
Interactions
GET/api/v1/interactions
Lister toutes les interactions.
GET/api/v1/interactions/:id
Récupérer une interaction.
POST/api/v1/interactions
Enregistrer une interaction.
Voir les champs (POST)
client_id
ID du client. integer
interaction_type
Type (ex. call, email, visit, note). string
description
Résumé ou notes. string
channel
Canal (ex. phone, in_store, instagram). string
outcome
Résultat (ex. purchased, callback). string
follow_up_date
Date de suivi (AAAA-MM-JJ). string
Token API
POST/api/v1/token/regenerate
Régénère votre token. L'ancien est immédiatement invalidé.
Réponse
{ "api_token":"a3f9c2d1e8b74f60..." }
Importation en masse
Importation CSV
Vous avez déjà des données dans un autre système ? Importez vos clients et votre historique de ventes en bloc grâce à notre importateur CSV — sans aucune programmation. Disponible dans le Siège social sous Importation.
👥 Importer des clients
Les doublons sont détectés par email — les clients existants sont ignorés, pas écrasés.
first_name
last_name
email
phone
birthday
ring_size
shoe_size
clothing_size
notes
Jane
Doe
jane@example.com
+15141234567
1985-04-12
52
38
S
Préfère Chanel
Marc
Dupont
marc@example.com
vide
vide
vide
vide
vide
vide
Colonnes en vert = requises. Les colonnes vides sont simplement ignorées.
🛍 Importer des ventes
Le client est associé par customer_email ou customer_phone. Si aucun profil ne correspond, un nouveau est créé automatiquement.
product_name
amount
customer_email
customer_name
customer_phone
date
brand
sku
color
size
category
payment_method
currency
location_name
staff_reference
staff_name
Sac Classique
1250.00
jane@example.com
Jane Doe
+15141234567
2024-09-15
Chanel
A01112
Black
Medium
handbag
credit_card
CAD
Carnet shop
EMP-042
Sophie Martin
Boucles d'oreilles
380.00
vide
Marc Dupont
+15149876543
2024-09-16
vide
vide
vide
vide
jewellery
cash
CAD
La Canadienne
EMP-017
Marc Fontaine
Colonnes en vert = requises. customer_email ou customer_phone pour associer le client. staff_reference (identifiant employé du POS) attribue la vente au vendeur — créé automatiquement et rattaché à location_name s'il n'existe pas encore.