Salesforce

Connectez vos agents ElevenLabs à Salesforce CRM

Vue d’ensemble

Connectez vos agents IA ElevenLabs à Salesforce CRM pour accéder aux données client, gérer les leads et créer des opportunités. Cette intégration permet à vos agents de récupérer les fiches client existantes, de créer de nouveaux leads et contacts, et d’interroger les objets Salesforce pendant les conversations.

Fonctionnalités

FonctionnalitéPrise en charge
Mode zéro rétention (ZRM)Non pris en charge
Pièces jointes dans les déclencheursNon prises en charge, les pièces jointes aux commentaires de cas et emails entrants ne sont pas transmis à l’agent
Pièces jointes dans les outilsNon prises en charge, les outils fonctionnent uniquement avec du texte

Configuration

Cette intégration utilise les identifiants client Salesforce OAuth 2.0 pour l’authentification. Vous devez créer une application cliente externe dans Salesforce.

1

Créer une application cliente externe

  1. Connectez-vous à votre organisation Salesforce en tant qu’administrateur
  2. Accédez à Setup > External Client App Manager
  3. Cliquez sur New External Client App
  4. Renseignez les champs External Client App Name (par exemple, ElevenLabs Agents), API Name et Contact Email
  5. Sous API (Enable OAuth Settings) :
    • Cochez Enable OAuth et Enable Client Credentials Flow
    • Callback URL : https://api.elevenlabs.io/oauth/callback
    • OAuth Start URL : https://api.elevenlabs.io/oauth/start
    • Selected OAuth Scopes : ajoutez les portées suivantes :
      • Full access (full)
      • Perform requests on your behalf at any time (refresh_token, offline_access)
      • Manage user data via api
  6. Cliquez sur Create
  7. Sur la page de l’application, ouvrez l’onglet Settings, accédez à OAuth Settings, puis cliquez sur Consumer Key and Secret
  8. Copiez la Consumer Key et le Consumer Secret, ils seront nécessaires pour l’authentification
2

Configurer le flux OAuth Client Credentials

Le flux Client Credentials est recommandé pour les intégrations de serveur à serveur ne nécessitant aucune interaction utilisateur. Vérifiez que votre administrateur Salesforce a activé ce flux.

  1. Dans votre application cliente externe, cliquez sur Edit
  2. Cochez Enable Client Credentials Flow, un champ Run As apparaît
  3. Définissez Run As sur votre utilisateur administrateur ou un compte de service dédié, cela détermine les autorisations pour tous les appels API
  4. Définissez Permitted Users sur Admin approved users are pre-authorized
  5. Cliquez sur Save

L’utilisateur Run As détermine les autorisations de tous les appels API. Choisissez un utilisateur doté d’un profil System Administrator ou d’un profil personnalisé ayant accès à l’API et aux objets dont votre agent a besoin (Contact, Lead, Account, etc.). L’autorisation API Enabled doit être cochée dans la fiche utilisateur.

3

Trouver votre domaine Salesforce

Votre domaine Salesforce est nécessaire pour les appels API.

Méthode 1 : vérifier votre URL actuelle

Lorsque vous êtes connecté à Salesforce, consultez la barre d’adresse de votre navigateur :

  • Lightning Experience : https://acme.lightning.force.com/
  • My Domain : https://acme.my.salesforce.com/

Méthode 2 : Setup > Company Information

Accédez à Setup > Company Information et recherchez l’URL de votre My Domain ou les informations sur votre organisation.

Méthode 3 : Setup > Domain Management

Accédez à Setup > Domain Management > My Domain. Votre domaine s’affiche en haut de la page.

Formats de domaine courants :

  • https://acme.my.salesforce.com (My Domain)
  • https://acme.lightning.force.com (Lightning)
  • https://acme.develop.my.salesforce.com (Sandbox)
Utilisez le domaine complet, sans barre oblique finale.
4

Se connecter dans ElevenLabs

Dans la configuration de l’intégration ElevenLabs, saisissez le nom d’hôte de l’instance Salesforce (par exemple, acme.my.salesforce.com), le Client ID (Consumer Key) et le Client Secret (Consumer Secret).

Vidéo de démonstration

Cette démonstration utilise des outils webhook hérités. Si vous utilisez l’intégration Salesforce native, les outils sont configurés automatiquement, aucune configuration manuelle de webhook n’est nécessaire.

Démonstration de l'intégration Salesforce

Fonctionnement

1

Demande initiale du client

L’agent recueille les informations du client et pose des questions pertinentes pour identifier ses besoins métier et ses difficultés actuelles.

2

Recherche des données client

L’agent vérifie les fiches existantes avec salesforce_search_records afin de trouver des contacts, comptes ou prospects. Il récupère les informations complètes avec salesforce_get_record et les utilise pour personnaliser la conversation.

3

Qualification des prospects

Si le client est nouveau, l’agent collecte ses coordonnées, évalue ses besoins métier et détermine le processus commercial ou le routage approprié.

4

Création de fiche

L’agent crée la fiche appropriée (prospect, contact ou opportunité) avec salesforce_create_record, confirme sa création au client et explique les étapes suivantes.

L’autorisation des outils peut être gérée avec Workplace Auth Connections, qui assure automatiquement le renouvellement des jetons. Les outils renvoient des noms et des descriptions lisibles plutôt que des identifiants techniques afin d’améliorer la qualité des conversations.

Configurations des outils

Trois outils webhook sont disponibles : salesforce_search_records, salesforce_get_record et salesforce_create_record. Configurez l’autorisation de chacun avec une Workplace Auth Connection.

Autorisation : connexion OAuth2 Workplace

1

Accéder à Workplace Auth Connections

Dans votre Dashboard ElevenLabs, accédez à Agents > Workplace Auth Connections, puis cliquez sur Add Auth.

2

Configurer la connexion Salesforce

Renseignez les champs suivants pour votre intégration Salesforce :

Nom de connexion : Salesforce CRM

Client ID

  • Votre Consumer Key de l’application cliente externe
  • Exemple : 3MVG9JJlvRU3L4pRiOu8pQt5xXB4xGZGm0yW...

Client Secret

  • Votre Consumer Secret de l’application cliente externe
  • Exemple : 1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF...

URL du jeton

  • Le point de terminaison OAuth de jeton de votre domaine Salesforce
  • Format : https://{domain}.my.salesforce.com/services/oauth2/token
  • Exemple : https://acme.my.salesforce.com/services/oauth2/token

Portées (facultatif)

  • Portées OAuth pour l’accès à l’API Salesforce
  • Recommandé : full, api, refresh_token
  • Laissez vide pour utiliser les portées par défaut de votre application cliente externe

Paramètres supplémentaires (JSON)

  • Paramètres OAuth supplémentaires propres à votre configuration
  • Exemple pour le flux Client Credentials :
{
"grant_type": "client_credentials"
}
4

Créer une connexion d'authentification

Cliquez sur Create auth connection pour ajouter votre configuration.

5

Utiliser dans les configurations d'outils

Une fois la connexion établie, enregistrez-la et référencez-la dans les configurations de vos outils webhook, dans la section Authentication.

Workplace Auth Connections gère automatiquement le renouvellement des jetons, vous n’avez donc pas besoin de les gérer manuellement.

Configurations des outils webhook

Ajoutez une Workplace Auth Connection (OAuth2) à chaque outil dans la section Authentication. Utilisez les onglets ci-dessous pour consulter la configuration de chaque outil.

Nom : salesforce_search_records Description : Recherche des fiches existantes dans Salesforce à l’aide de requêtes SOQL. Renvoie toujours des informations lisibles, y compris les noms, et pas uniquement des identifiants. Méthode : GET URL : https://acme.my.salesforce.com/services/data/v58.0/query/?q={soql_query}

En-têtes :

  • Content-Type : application/json

Paramètres de requête :

  • q : chaîne de requête SOQL (par exemple, “SELECT Id, Name, Email FROM Contact WHERE Email = ‘example@email.com’”)

JSON de l’outil :

{
"type": "webhook",
"name": "salesforce_search_records",
"description": "Searches for existing records in Salesforce using SOQL queries. Always returns human-readable names and details, not just IDs.",
"api_schema": {
"url": "https://acme.my.salesforce.com/services/data/v58.0/query/",
"method": "GET",
"path_params_schema": [],
"query_params_schema": [
{
"id": "q",
"type": "string",
"description": "SOQL query string to search for records. Always include Name fields and other human-readable information. Example: SELECT Id, Name, Email, Phone, Company FROM Contact WHERE Email = 'customer@example.com'. For Opportunities, include: SELECT Id, Name, StageName, Amount, CloseDate, Account.Name FROM Opportunity",
"dynamic_variable": "",
"constant_value": "",
"required": true,
"value_type": "llm_prompt"
}
],
"request_body_schema": null,
"request_headers": [
{
"type": "value",
"name": "Content-Type",
"value": "application/json"
}
]
},
"response_timeout_secs": 30,
"dynamic_variables": {
"dynamic_variable_placeholders": {}
}
}

Objets Salesforce courants

ObjetObjectifChamps courants
LeadClients potentiels non encore qualifiésFirstName, LastName, Email, Phone, Company, Industry, Status
ContactPersonnes qualifiées associées à des comptesFirstName, LastName, Email, Phone, AccountId, Title
AccountOrganisations ou entreprisesName, Type, Industry, Phone, BillingAddress
OpportunityOpportunités commerciales en coursName, StageName, Amount, CloseDate, AccountId
CaseDemandes de service clientSubject, Description, Status, Priority, ContactId

Requêtes SOQL courantes

Utilisez ces requêtes SOQL comme points de départ pour personnaliser le prompt système de votre agent. Toutes les requêtes renvoient des informations lisibles plutôt que des identifiants techniques :

Rechercher des contacts par email

SELECT Id, Name, Email, Phone, Title, Account.Name, Account.Type FROM Contact WHERE Email = 'customer@example.com'

Rechercher des prospects par email ou téléphone

SELECT Id, Name, Email, Phone, Company, Industry, Status, LeadSource, Title FROM Lead WHERE Email = 'customer@example.com' OR Phone = '+1234567890'

Rechercher des comptes par nom

SELECT Id, Name, Type, Industry, Phone, BillingCity, BillingState, Website FROM Account WHERE Name LIKE '%Company Name%'

Rechercher des opportunités récentes

SELECT Id, Name, StageName, Amount, CloseDate, Account.Name, Account.Type, Owner.Name, Description FROM Opportunity WHERE CreatedDate = THIS_MONTH

Rechercher des opportunités par compte

SELECT Id, Name, StageName, Amount, CloseDate, Probability, NextStep, Owner.Name FROM Opportunity WHERE Account.Name LIKE '%Company Name%'

Tester l’intégration

Après avoir configuré votre application cliente externe et connecté l’intégration, testez-la avant le déploiement en production :

  1. Fonction de recherche : demandez à votre agent de rechercher des contacts existants.
  2. Création de fiche : demandez à votre agent de créer un prospect ou un contact.
  3. Récupération de données : vérifiez que votre agent peut récupérer des informations client détaillées.

Déclencheur de commentaire de cas : réponses par email pour Email-to-Case

Si vous avez activé le déclencheur Salesforce Case Comment (réponse automatique de l’agent aux cas Service Cloud), les réponses aux cas comportant au moins un email entrant sont renvoyées au client sous la forme d’un véritable email avec fil de discussion, et non uniquement comme commentaire de cas interne. Cela dépend de la présence d’un email entrant dans le cas, et non de la valeur de la liste déroulante Origin du cas. Le fonctionnement reste donc correct si votre organisation utilise une valeur Origin personnalisée telle que « Email - Returns » plutôt que la valeur exacte « Email ». Les cas sans email entrant continuent d’être publiés sous forme de commentaire de cas public, sans modification. Toute adresse mise en copie dans l’email initial du client est également automatiquement mise en copie dans la réponse, comme le ferait la fonction « Répondre à tous » d’un agent humain, à l’exception des adresses de routage Email-to-Case de votre organisation, volontairement exclues de la copie afin que la réponse ne soit pas réintégrée par Email-to-Case et ne redéclenche pas l’agent sur son propre message.

L’envoi de réponses par email nécessite une configuration supplémentaire par rapport aux seuls commentaires de cas :

  • Le profil ou l’ensemble d’autorisations de l’utilisateur Run As doit inclure l’autorisation système Send Email (Setup > Users > Profiles, sous System Permissions), en plus de l’autorisation API Enabled déjà requise pour l’intégration.
  • Le paramètre Email Deliverability de votre organisation (Setup > Email > Deliverability) doit autoriser les emails externes. Les Sandboxes utilisent par défaut un paramètre restrictif, qui bloque silencieusement les emails sortants.
  • Si vous souhaitez que les réponses soient envoyées depuis un alias de support plutôt que depuis la boîte mail de l’utilisateur Run As, définissez le champ Org-Wide Email Address Id du déclencheur sur l’Id d’une Organization-Wide Email Address (Setup > Organization-Wide Addresses > cliquez sur l’adresse > copiez l’Id depuis l’URL). Laissez ce champ vide pour envoyer depuis l’adresse de l’utilisateur Run As.
  • Définissez le champ Email-to-Case Routing Address(es) du déclencheur sur les adresses Email-to-Case de votre organisation (séparées par des virgules s’il y en a plusieurs, Setup > Email-to-Case). Sans cela, l’intégration essaie de deviner l’adresse de routage à partir de l’email du client (son adresse To), ce qui ne fonctionne pas lorsque votre adresse de routage était seulement en copie plutôt que destinataire principale. La remettre en copie dans une réponse dans ce cas redéclencherait l’agent sur son propre message.

Si l’organisation d’un client n’a pas configuré ces éléments, un échec d’envoi d’email entraîne la publication d’un commentaire de cas public. Ainsi, aucune réponse n’est perdue silencieusement, mais le client ne la recevra pas par email tant que la configuration ci-dessus n’est pas effectuée.

Considérations de sécurité

  • Utilisez des points de terminaison HTTPS pour tous les appels API.
  • Vérifiez que la sécurité au niveau des champs est correctement configurée dans Salesforce.
  • Les autorisations de l’utilisateur Run As déterminent les données auxquelles l’intégration peut accéder, définissez-les de manière appropriée.
  • Auditez régulièrement l’accès à l’API et son utilisation.

Liens utiles