Aller au contenu

Website Lead Notification

Le workflow Website Lead Notification notifie instantanément les admins sur Telegram dès qu’un visiteur remplit le formulaire de contact Odoo. L’opportunité CRM est créée automatiquement côté Odoo, et N8N envoie un message formaté avec les détails du prospect.

ÉtapeComposantAction
1Formulaire OdooVisiteur soumet le formulaire contactus
2Odoo CRMCrée automatiquement une opportunité
3Automated ActionDétecte le nouveau lead (medium=Website)
4Webhook OdooEnvoie les données à N8N (réseau interne)
5N8N WorkflowFormate et route vers Telegram

ProblèmeSans ce workflowAvec ce workflow
Délai de réponseDécouverte du lead le lendemainNotification instantanée
Leads manquésOubli de vérifier le CRMPush sur le mobile
Contexte perduRetourner dans Odoo pour voir les détailsToutes les infos dans Telegram
ApprocheAvantageInconvénient
Webhook interne (Docker)Sécurisé, pas d’auth nécessaireUniquement pour services Docker
Polling API OdooPlus simple à configurerLatence, charge serveur
Webhook externeAccessible partoutNécessite auth + TLS

Formulaire Web Odoo (contactus)
crm.lead créé (Create an Opportunity)
Automated Action Odoo
(trigger: Lors de l'enregistrement)
(filtre: medium_id = Website)
Webhook intégré Odoo
│ HTTP POST (Docker internal)
N8N Webhook /odoo/website-lead
(http://n8n:5678 - internal only)
Notification Hub → Telegram admins
AspectConfiguration
URL internehttp://n8n:5678/webhook/odoo/website-lead
Accès externeBloqué par Caddy (403 Forbidden)
AuthentificationAucune (trafic interne Docker)

Configuration Caddy :

@internal_webhooks {
path /webhook/notify/*
path /webhook/prometheus/*
path /webhook/odoo/*
}
handle @internal_webhooks {
respond "Forbidden" 403
}

Menu: Settings → Technical → Automation → Automated Actions

ChampValeur
NomN8N: Notify on Website Lead
ModèlePiste/opportunité (crm.lead)
DéclencheurLors de l'enregistrement
Appliquer sur[('medium_id.name', '=', 'Website')]
ActionEnvoyer une notification webhook
URLhttp://n8n:5678/webhook/odoo/website-lead

Champs envoyés :

  • name — Nom de l’opportunité
  • contact_name — Nom du contact
  • email_from — Email
  • phone — Téléphone
  • partner_name — Nom entreprise
  • description — Message du formulaire

Node Format Lead (Code) :

const lead = $json.body;
const message = `👤 Contact: ${lead.contact_name || lead.name || 'Non renseigné'}
🏢 Entreprise: ${lead.partner_name || 'Non renseignée'}
📧 Email: ${lead.email_from || 'Non renseigné'}
📱 Téléphone: ${lead.phone || lead.mobile || 'Non renseigné'}
💬 Message:
${lead.description ? lead.description.substring(0, 500) : 'Aucune description'}
📋 https://odoo.guigpap.com/odoo/crm/${lead._id}`;
return {
json: {
source: "odoo_website_form",
type: "new_lead",
severity: "info",
title: `🌐 Nouvelle opportunité: ${lead.contact_name || lead.name}`,
message: message,
timestamp: new Date().toISOString(),
hasCallback: false
}
};
Fenêtre de terminal
# Test du webhook depuis Odoo
docker exec odoo curl -s -X POST \
"http://n8n:5678/webhook/odoo/website-lead" \
-H "Content-Type: application/json" \
-d '{
"_id": 999,
"_model": "crm.lead",
"name": "Test Lead",
"contact_name": "Jean Dupont",
"email_from": "jean@test.com",
"phone": "+33 6 12 34 56 78",
"partner_name": "Entreprise Test",
"description": "Message de test"
}'
# Attendu: {"status": "ok"} + notification Telegram
# Vérifier la connectivité Docker
docker exec odoo curl -s http://n8n:5678/healthz

LimiteImpactMitigation
Webhook unidirectionnelPas de confirmation de lectureLien vers Odoo dans le message
Pas de réponse depuis TelegramRetour manuel dans OdooPrévu : boutons d’action
Dépendance N8NPas de notif si N8N downMonitoring container N8N

Si besoin de répondre depuis Telegram :

  • Ajouter des boutons inline (Assigner, Qualifier, Appeler)
  • Callback vers Odoo pour mettre à jour le lead
  • Notification de confirmation

Si volume de leads augmente :

  • Filtrage par score lead
  • Rotation des assignations
  • Digest horaire au lieu d’instantané

Si besoin de multi-canal :

  • Ajouter ntfy comme backup
  • Notification email pour leads VIP
  • Intégration Slack si équipe
ProblèmeVérification
Pas de notificationN8N: workflow actif ? Notification Hub exécuté ?
Webhook timeoutdocker exec odoo curl http://n8n:5678/healthz
Données manquantesVérifier champs sélectionnés dans Odoo webhook
Quiet hoursNotification différée si 22h-7h (sauf severity=critical)