Ajoutez Fin Messenger à votre site Salesforce Experience Cloud (portail) et contrôlez les données utilisateur connectées envoyées à Fin uniquement via la configuration, sans modification Apex.
Note : Ce qui a changé (juin 2026) : Ce guide demandait auparavant de modifier la classe Apex JwtGenerator pour choisir l’identifiant utilisateur et les attributs à envoyer. Ce n’est pas possible en production (Salesforce n’autorise pas la modification Apex via Setup en production, et les classes packagées sont écrasées lors des mises à jour). Vous configurez désormais tout cela dans Fin Messenger Settings (paramètre personnalisé), avec une interface Apex optionnelle pour les cas avancés (voir Étape 6).
Installer Fin Messenger sur une page Salesforce
1. Installer le package dans Salesforce
Pour installer Fin Messenger sur une page Salesforce, nous avons créé un package à installer, qui crée simplement une définition de paramètre personnalisé.
Vous devez installer le package dans votre environnement Salesforce avant de suivre les étapes ci-dessous.
Ou
2. Configurer les paramètres Fin Messenger dans Salesforce
Le package ajoute un paramètre personnalisé Fin Messenger Settings qui stocke votre App ID, le secret JWT, et (nouveau) la configuration des données utilisateur.
A) Ouvrir les paramètres
Allez dans Setup > Custom Settings.
Ouvrez Fin Messenger Settings.
Cliquez sur Manage.
Cliquez sur New (ou Edit) sur la Default Organization Level Value.
B) App ID — dans Fin, Settings > General ; saisissez-le dans le champ App Id.
C) JWT Secret Key — dans Fin, Settings > Fin Messenger ; saisissez-le dans le champ JWT Secret Key.
Ces deux valeurs sont les seules obligatoires. Le reste (Étape 6) est optionnel.
3. Configurer la politique de sécurité du contenu (CSP)
Setup > Digital Experiences > All Sites > (votre site) > Builder > Settings > Security & Privacy.
Réglez le Security Level sur Relaxed CSP.
Sous Trusted Sites for Scripts, ajoutez
https://widget.intercom.ioethttps://js.intercomcdn.com.Sous Setup → Trusted URLs, ajoutez les URL/directives CSP d’Intercom, avec CSP Context = All ou Experience Builder Sites.
4. Ajouter le script de démarrage Fin Messenger à votre portail
<script>
window.addEventListener('finMessengerData', function (e) {
var data = e.detail || {};
window.intercomSettings = {
api_base: 'https://api-iam.intercom.io', // regional base — see table
app_id: data.appId,
intercom_user_jwt: data.jwt // omitted/null → boots logged-out
};
window.Intercom && window.Intercom('boot', window.intercomSettings);
});
</script>
Région |
|
US |
|
EU |
|
Australie |
|
5. Ajouter le composant Fin Messenger à votre page
Setup > Digital Experiences > All Sites > (votre site) > Builder.
Faites glisser le composant Fin Messenger sur la page du portail.
Publiez le site.
6. Configurer les données utilisateur envoyées à Fin
Tout est prêt dans l’enregistrement Fin Messenger Settings (Étape 2) — aucun changement de code. Laissez un champ vide pour conserver la valeur par défaut.
Champ | Ce qu’il contrôle | Valeur par défaut si vide |
Champ Id Utilisateur | Le champ Utilisateur dont la valeur devient le |
|
Champs d’attributs | Attributs supplémentaires à envoyer (format ci-dessous). | aucun |
Champ Id Société | Le champ Utilisateur envoyé comme | omis |
Classe Fournisseur | Avancé : une classe Apex retournant des attributs personnalisés. | non utilisé |
Format des Champs d’attributs
Paires intercomKey:UserField séparées par des virgules :
À gauche des deux-points — le nom de l’attribut Intercom (clé reçue par Fin).
À droite des deux-points — le nom API du champ Utilisateur Salesforce pour lire la valeur.
Un nom de champ simple utilise le nom du champ en minuscules comme clé Intercom.
Les champs personnalisés utilisent leur nom API (
__c). Les champs inconnus sont ignorés.
Exemple : phone:Phone, job_title:Title, Department, plan:Account_Tier__c produit :
{ "phone": "(555) 123-4567", "job_title": "Account Executive", "department": "Sales", "plan": "Enterprise" }Note : name, email et user_id sont toujours envoyés (ne les listez pas ici).
Avancé : attributs personnalisés via Apex
Pour les valeurs que vous ne pouvez pas exprimer par un seul champ Utilisateur, implémentez FinAttributeProvider dans votre propre classe Apex (modifiable, dans votre org), puis indiquez son nom dans Classe Fournisseur :
global class MyFinAttributes implements finmessenger.FinAttributeProvider {
global Map<String, Object> injectFinCustomAttributes(User currentUser) {
Map<String, Object> attrs = new Map<String, Object>();
attrs.put('locale', currentUser.LanguageLocaleKey);
attrs.put('is_internal',
currentUser.Email != null && currentUser.Email.endsWith('@acme.com'));
// currentUser only has the configured fields — query anything else yourself
Contact c = [
SELECT AccountId, Account.Name, Account.Subscription_Tier__c
FROM Contact WHERE Id = :currentUser.ContactId LIMIT 1
];
attrs.put('plan', c.Account.Subscription_Tier__c);
attrs.put('company', new Map<String, Object>{
'company_id' => c.AccountId, 'name' => c.Account.Name
});
return attrs;
}
}Doit être
global(appelé dans tout l’espace de noms du package).currentUserne contient que les champs configurés à l’Étape 6 — interrogez tout autre champ.La map du fournisseur est fusionnée en dernier, ses clés priment sur les Champs d’attributs.
Gardez-le léger — il s’exécute à chaque démarrage du messenger (les erreurs sont capturées ; les requêtes lentes ralentissent le démarrage).
FAQ
Comment trouver mon Fin App ID ?
Allez dans Settings > General. Votre App ID est listé dans la section Détails de l’application.
Où trouver la clé secrète JWT ?
Dans Settings > Fin Messenger, copiez votre JWT Secret Key.
Que faire si le messenger ne se charge pas ?
Vérifiez vos paramètres CSP. Assurez-vous que les URL de scripts de confiance et les URL de confiance sont correctement configurées et que le niveau de sécurité est réglé sur Relaxed CSP.
Puis-je restreindre les données utilisateur envoyées à Fin ?
Oui, c’est l’Étape 6. Configurez Champ Id Utilisateur, Champs d’attributs, Champ Id Société et Classe Fournisseur dans Fin Messenger Settings. Seuls name, email, user_id et ce que vous listez dans Champs d’attributs sont envoyés. Effacez les champs pour en envoyer moins.
Dois-je modifier Apex ?
Non, la configuration standard à l’Étape 6 ne nécessite aucun changement de code. Apex n’est requis que si vous optez pour le hook avancé Classe Fournisseur, qui utilise une classe que vous écrivez dans votre propre org (pas l’Apex packagé).
Comment résoudre les erreurs de compilation Apex ?
Le package Salesforce repose sur des objets et champs standard, donc une erreur de compilation peut être due à des classes Apex orphelines dans l’organisation Salesforce.
Dans ce cas, cliquez sur l’accordéon Options avancées lors de l’installation.
Sélectionnez Compiler uniquement l’Apex du package puis cliquez sur Installer.



