Responsable commercial dédié
Cas d'usage donnée personnalisée + relations · Pour les boutiques B2B ou comptes-clés où chaque client est suivi par un responsable commercial attitré. L'objectif : segmenter par responsable, envoyer des campagnes ciblées sur leur portefeuille, et afficher dynamiquement les coordonnées du bon interlocuteur dans tous les messages.
Le besoin métier
Vous avez une équipe de responsables commerciaux (10 à 100 personnes). Chaque client de votre boutique se voit attribuer au plus un responsable commercial qui le suit, le conseille et l'accompagne dans ses commandes.
Vous voulez être en mesure de :
- Segmenter les contacts par responsable commercial (« le portefeuille d'Alice »).
- Envoyer des campagnes bulk ciblées sur le portefeuille d'un responsable.
- Personnaliser les emails et SMS avec les coordonnées du bon responsable (nom, prénom, photo, téléphone, email) — sans logique conditionnelle dans les templates.
La solution ShopiMind
Deux définitions personnalisées qui se chaînent :
- Responsable commercial — référentiel de votre équipe.
- Attribution — lien client ↔ responsable.
L'attribution référence l'entité Contact par id_customer ou par email, sans pré-résolution de l'identifiant ShopiMind.
Le modèle de données
Définition « Responsable commercial »
Le référentiel de votre équipe. Une ligne = un responsable.
responsable_id(texte) — clé d'unicité (votre identifiant interne RH/CRM).first_name,last_name(texte) — pour la signature.email,phone(texte) — pour le contact direct dans les messages.photo_url(texte) — pour les emails avec signature visuelle.
Définition « Attribution »
Le lien client ↔ responsable. Un client peut avoir 0 ou 1 responsable.
contact_id(number) — relation vers l'entité Contact.responsable_id(number) — relation vers la définition Responsable commercial.assigned_at(date) — début de la relation.- Clé d'unicité :
contact_id— un seul responsable actif par client.
Mise en place
1. Créer la définition « Responsable commercial »
curl -X POST 'https://core.shopimind.com/v1/custom-data-definitions' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '{
"name": "ResponsableCommercial",
"description": "Catalogue des responsables commerciaux",
"unique_keys": ["responsable_id"],
"fields": [
{ "name": "responsable_id", "label": "Responsable ID", "type": "text", "required": true },
{ "name": "first_name", "label": "Prenom", "type": "text", "required": true },
{ "name": "last_name", "label": "Nom", "type": "text", "required": true },
{ "name": "email", "label": "Email", "type": "text", "required": true },
{ "name": "phone", "label": "Telephone", "type": "text", "required": false },
{ "name": "photo_url", "label": "Photo URL", "type": "text", "required": false }
]
}'Notez l'id_definition retourné — disons 240.
2. Créer la définition « Attribution »
curl -X POST 'https://core.shopimind.com/v1/custom-data-definitions' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '{
"name": "Attribution",
"description": "Attribution d un responsable commercial à un contact",
"unique_keys": ["contact_id"],
"fields": [
{ "name": "contact_id", "label": "Contact", "type": "number", "required": true },
{ "name": "responsable_id", "label": "Responsable", "type": "text", "required": true },
{ "name": "assigned_at", "label": "Affecte le", "type": "date", "required": false }
],
"relationships": [
{ "sourceField": "contact_id", "targetSchemaType": "system", "targetSchema": "contacts", "targetField": "id_contact" },
{ "sourceField": "responsable_id", "targetSchemaType": "custom", "targetSchema": "240", "targetField": "responsable_id" }
]
}'id_definition retourné : 241.
3. Pousser le catalogue des responsables
À chaque embauche, départ ou mise à jour côté votre CRM/RH :
curl -X POST 'https://core.shopimind.com/v1/custom-data-records/240' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '[
{
"responsable_id": "COM-001",
"first_name": "Alice",
"last_name": "Durand",
"email": "alice.durand@maboutique.com",
"phone": "+33 1 23 45 67 89",
"photo_url": "https://maboutique.com/team/alice.jpg"
},
{
"responsable_id": "COM-002",
"first_name": "Jean",
"last_name": "Martin",
"email": "jean.martin@maboutique.com",
"phone": "+33 4 56 78 90 12",
"photo_url": "https://maboutique.com/team/jean.jpg"
}
]'L'upsert se fait sur responsable_id (clé d'unicité). On référencera ensuite chaque responsable par sa valeur responsable_id (par exemple COM-001 pour Alice, COM-002 pour Jean) dans les attributions.
4. Pousser les attributions
L'API accepte trois identifiants pour désigner le contact cible : id_contact, email, ou id_customer (votre identifiant client côté boutique). Pas besoin de récupérer l'id_contact ShopiMind avant d'écrire — le serveur résout la cible automatiquement.
Par id_customer — typique d'une synchronisation depuis votre CRM ou ERP qui possède déjà l'identifiant client de la boutique :
curl -X POST 'https://core.shopimind.com/v1/custom-data-records/241' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '[
{
"contact_id": { "by": "id_customer", "value": "CUST-A4521" },
"responsable_id": "COM-001",
"assigned_at": "2024-03-15"
},
{
"contact_id": { "by": "id_customer", "value": "CUST-A4522" },
"responsable_id": "COM-001",
"assigned_at": "2025-09-20"
},
{
"contact_id": { "by": "id_customer", "value": "CUST-A4523" },
"responsable_id": "COM-002",
"assigned_at": "2025-11-08"
}
]'Par email — utile pour un trigger basé sur un export e-mail ou un import CSV :
curl -X POST 'https://core.shopimind.com/v1/custom-data-records/241' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '[
{
"contact_id": { "by": "email", "value": "marie.dupont@example.com" },
"responsable_id": "COM-001",
"assigned_at": "2024-03-15"
}
]'Mélanger les identifiants dans un même batch
Vous pouvez combiner les trois formats (id_contact, email, id_customer) dans un même appel. Voir Référencer un contact pour le détail des règles de résolution.
5. Exploiter les attributions côté ShopiMind
Segmenter par responsable
Dans l'éditeur de segments, créez un segment dynamique avec le critère :
Donnée personnalisée →
Attribution.responsable_idégal àCOM-001(Alice)
Le segment s'actualise automatiquement à mesure que vous poussez ou modifiez des attributions. Il est immédiatement utilisable dans une campagne bulk ciblée sur le portefeuille d'Alice, dans un filtre de scénario, ou comme déclencheur.
Personnaliser le contenu des messages
Dans un email ou un SMS, vous pouvez injecter dynamiquement les données du responsable rattaché au contact :
Bonjour {var=contact.first_name},
(votre contenu)
Votre conseiller dédié reste à votre écoute :
{var=Attribution.responsable.first_name} {var=Attribution.responsable.last_name}
📞 {var=Attribution.responsable.phone}
✉️ {var=Attribution.responsable.email}ShopiMind résout la chaîne de relations (Contact → Attribution → Responsable commercial) à la volée. Aucune logique conditionnelle dans le template — chaque contact reçoit un message personnalisé avec les coordonnées de son responsable.
Aller plus loin
Réaffectation en masse
Un responsable part ? Récupérez son portefeuille via listCustomDataRecords (filtre responsable_id = X), puis bulk-upsert vers son remplaçant — la clé d'unicité contact_id garantit que les attributions existantes sont mises à jour, pas dupliquées :
curl -X POST 'https://core.shopimind.com/v1/custom-data-records/241' \
-H 'spm-api-key: VOTRE_CLE_API' \
-H 'Content-Type: application/json' \
--data '[
{ "contact_id": { "by": "id_customer", "value": "CUST-A4521" }, "responsable_id": "COM-005", "assigned_at": "2026-05-08" },
{ "contact_id": { "by": "id_customer", "value": "CUST-A4522" }, "responsable_id": "COM-005", "assigned_at": "2026-05-08" }
]'Tous les segments suivent automatiquement.
Désaffecter un client
Pour retirer le responsable d'un contact, supprimez la ligne d'attribution correspondante via deleteCustomDataRecord. Le contact n'apparaîtra plus dans aucun segment de portefeuille tant qu'aucune nouvelle attribution n'aura été poussée.
Récapitulatif
| Étape | Endpoint | Quand |
|---|---|---|
| Créer définition Responsable commercial | createCustomDataDefinition | Une fois |
| Créer définition Attribution (avec 2 relations) | createCustomDataDefinition | Une fois |
| Sync responsables | saveCustomDataRecords | À chaque embauche/départ/modif |
| Sync attributions | saveCustomDataRecords | À chaque modification CRM |
| Désaffecter un contact | deleteCustomDataRecord | Ponctuel |