Auth0 + CRM (HubSpot, Salesforce) : synchroniser identité et pipeline commercial
Enrichir votre CRM avec les données d'authentification Auth0 : créer des contacts au signup, tracker les logins, identifier les churns et personnaliser les campagnes.
Par Auth0.Expert · 2025-02-28 · 10 min de lecture
Auth0 + CRM : synchroniser identité et commercial
TL;DR
Les données d'authentification sont précieuses pour le commercial et le marketing : date de première connexion, fréquence d'usage, plan actuel, dernière activité. Ce guide connecte Auth0 à HubSpot et Salesforce.
---
Données d'identité utiles pour le CRM
Voici les principales données Auth0 qui peuvent enrichir vos process CRM pour mieux qualifier et engager vos clients.
| Donnée Auth0 | Usage CRM | |-------------|-----------| | Email vérifié | Qualification du contact | | Date signup | Début du trial | | Nombre de logins | Score d'engagement | | Dernière connexion | Détection churn | | Méthode auth (Google/SAML) | Indique une organisation | | app_metadata.plan | Segmentation des clients |
---
HubSpot : créer un contact au signup
Ce code permet de créer ou mettre à jour automatiquement un contact HubSpot à chaque enregistrement d'utilisateur sur Auth0, afin de garantir que chaque nouvel utilisateur est suivi dès son premier jour.
// Action: Post User Registration
exports.onExecutePostUserRegistration = async (event, api) => {
const hubspotToken = event.secrets.HUBSPOT_ACCESS_TOKEN;
// Créer/mettre à jour le contact HubSpot
await fetch('https://api.hubapi.com/crm/v3/objects/contacts', {
method: 'POST',
headers: {
Authorization: `Bearer ${hubspotToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
properties: {
email: event.user.email,
firstname: event.user.given_name,
lastname: event.user.family_name,
auth0_user_id: event.user.user_id,
signup_date: new Date().toISOString(),
auth_method: event.connection.strategy, // 'google-oauth2', 'auth0', etc.
lifecyclestage: 'lead',
hs_lead_status: 'NEW',
source_app: event.client.name,
},
}),
}).catch(err => {
// Ne jamais bloquer le login si HubSpot est down
console.error('HubSpot error (non-blocking):', err.message);
});
};
Ce code automatise la création du contact HubSpot lors d'un nouveau signup Auth0 et centralise l'info client dans le CRM.
---
HubSpot : tracker les connexions
Ici, vous pouvez envoyer des mises à jour de login à HubSpot pour suivre l'activité de vos utilisateurs, tout en évitant une surcharge des appels API grâce à une limitation à une fois par jour.
// Action: Post Login
exports.onExecutePostLogin = async (event, api) => {
const hubspotToken = event.secrets.HUBSPOT_ACCESS_TOKEN;
// Ne tracker que 1 fois par jour (éviter les appels excessifs)
const lastTrack = event.user.app_metadata?.last_hs_track;
const today = new Date().toISOString().slice(0, 10);
if (lastTrack === today) return;
// Trouver le contact HubSpot par email
const searchRes = await fetch(
'https://api.hubapi.com/crm/v3/objects/contacts/search',
{
method: 'POST',
headers: { Authorization: `Bearer ${hubspotToken}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
filterGroups: [{
filters: [{ propertyName: 'email', operator: 'EQ', value: event.user.email }]
}],
properties: ['hs_object_id'],
}),
}
);
const { results } = await searchRes.json();
if (!results?.length) return;
const contactId = results[0].id;
// Mettre à jour les propriétés d'engagement
await fetch(`https://api.hubapi.com/crm/v3/objects/contacts/${contactId}`, {
method: 'PATCH',
headers: { Authorization: `Bearer ${hubspotToken}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
properties: {
last_login_date: new Date().toISOString(),
total_logins: (event.stats.logins_count || 1).toString(),
current_plan: event.user.app_metadata?.plan || 'free',
},
}),
});
api.user.setAppMetadata('last_hs_track', today);
};
Ce bloc gère la synchronisation quotidienne des logins pour chaque utilisateur connecté, maintenant ainsi vos données d'engagement à jour dans HubSpot.
---
Salesforce : intégration via Apex ou REST API
Dans cette section, découvrez comment automatiser la création d’un lead dans Salesforce à chaque inscription Auth0, grâce à l’API REST et OAuth2.
// Action: créer un Lead Salesforce au signup
exports.onExecutePostUserRegistration = async (event, api) => {
// Obtenir un token Salesforce via OAuth2 Client Credentials
const sfTokenRes = await fetch(
`https://login.salesforce.com/services/oauth2/token`,
{
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: event.secrets.SF_CLIENT_ID,
client_secret: event.secrets.SF_CLIENT_SECRET,
}),
}
);
const { access_token, instance_url } = await sfTokenRes.json();
// Créer le Lead
await fetch(`${instance_url}/services/data/v58.0/sobjects/Lead/`, {
method: 'POST',
headers: {
Authorization: `Bearer ${access_token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
Email: event.user.email,
FirstName: event.user.given_name || 'Unknown',
LastName: event.user.family_name || event.user.email.split('@')[0],
Company: event.user.email.split('@')[1],
LeadSource: 'Web Signup',
Auth0_User_ID__c: event.user.user_id, // Custom field
Status: 'Open - Not Contacted',
}),
});
};
Cette opération lie vos nouveaux inscrits Auth0 à des leads Salesforce, assurant ainsi un suivi commercial sans perte d’information.
---
Détection churn : utilisateurs inactifs
Le script ci-dessous identifie automatiquement les clients Pro inactifs depuis 30 jours dans Auth0 et signale le risque de churn dans HubSpot pour aider les équipes à réagir rapidement.
# Script de détection churn : Auth0 → HubSpot
# À exécuter quotidiennement (cron)
async def sync_churn_signals():
# 1. Récupérer les utilisateurs inactifs depuis 30 jours
cutoff = (datetime.utcnow() - timedelta(days=30)).isoformat()
inactive_users = await auth0_search(
f'last_login:[* TO {cutoff}] AND app_metadata.plan:pro'
)
for user in inactive_users:
# 2. Mettre à jour HubSpot avec signal de churn
await hubspot_update_contact(user['email'], {
'churn_risk': 'high',
'days_since_last_login': (datetime.utcnow() - datetime.fromisoformat(user['last_login'])).days,
'lifecycle_stage': 'customer',
'hs_lead_status': 'AT_RISK',
})
Ce script assure la détection proactive de churn côté Auth0-CRM afin d’automatiser vos campagnes de rétention.
---
Segmentation marketing basée sur Auth0
Cette logique de segmentation permet de créer des listes ciblées dans HubSpot à partir des informations Auth0, facilitant des campagnes marketing et commerciales personnalisées.
// Segments à créer dans HubSpot basés sur les données Auth0:
const segments = {
"Free Power Users": {
filter: "plan == 'free' AND total_logins > 50",
action: "Proposer upgrade Pro"
},
"Churn Risk Pro": {
filter: "plan == 'pro' AND days_since_last_login > 21",
action: "Déclencher séquence email rétention"
},
"Enterprise Ready": {
filter: "plan == 'pro' AND auth_method == 'waad'",
action: "Outreach commercial Enterprise"
},
"Trial Expiring": {
filter: "plan_status == 'trialing' AND trial_end < 3 days",
action: "Séquence conversion urgente"
}
};
On segmente ainsi automatiquement les contacts pour maximiser la personnalisation et l'efficacité marketing.
---
> 📊 Intégration CRM Auth0 : nous automatisons la synchronisation Auth0↔CRM pour alimenter votre pipeline commercial avec des données d'engagement temps réel.
Autres articles
- Auth0 et OAuth 2.0 : architecture complète pour comprendre les flux d'autorisation
- OpenID Connect sur Auth0 : ID Token, UserInfo et discovery endpoint expliqués
- Configurer SAML 2.0 avec Auth0 : guide complet pour l'entreprise
- Migrer des Rules vers les Auth0 Actions : guide pas à pas
- Architecture multi-tenant avec Auth0 : organisations, isolation et bonnes pratiques
- Validation des JWT Auth0 : RS256 vs HS256, JWKS et pièges communs
- Concevoir son architecture de tenants Auth0 : dev, staging, prod
- Configurer un domaine personnalisé Auth0 : login.votredomaine.com étape par étape