Contexte
Une PME à Nyon utilisait WordPress pour la génération de leads, avec plusieurs formulaires (contact, demande d’offre, téléchargement). Les demandes arrivaient parfois par e-mail, parfois via un export manuel, et le suivi commercial se faisait dans HubSpot de manière inconstante. Résultat: des leads se perdaient, et l’équipe ne pouvait pas relier clairement les demandes aux pages d’entrée et aux actions marketing.
Objectifs
- Centraliser les leads dans HubSpot, sans manipulations manuelles.
- Uniformiser les formulaires et améliorer l’expérience mobile.
- Ajouter un tracking GA4 utile: envoi formulaire, type de demande, source.
- Mettre en place des automatisations simples: tags, notifications, attribution.
- Rendre le système robuste: anti-spam discret, logs, tests et maintenance.
Diagnostic initial
- Formulaires : champs variables d’un formulaire à l’autre, messages de confirmation peu clairs.
- CRM : imports irréguliers, doublons, historique incomplet côté HubSpot.
- Mesure : GA4 présent, mais conversion non standardisée selon le formulaire.
- Fiabilité : spam ponctuel et absence de log centralisé.
Solution mise en place
1) Standardisation des formulaires
- Champs harmonisés: nom, e-mail, téléphone (optionnel), type de demande, message.
- Micro-copies rassurantes: délai de réponse, confidentialité, étapes suivantes.
- Validation claire: succès, erreurs, et état de soumission visible.
2) Connexion à HubSpot
- Envoi des leads via API ou connecteur officiel selon le formulaire utilisé.
- Création de propriétés: type de demande, page d’origine, campagne, consentement.
- Déduplication côté HubSpot (e-mail) et règles d’attribution.
3) Automatisations simples
- Attribution de tags selon le type de demande (p. ex. « offre », « support », « partenariat »).
- Notification interne (e-mail ou Slack) uniquement pour les demandes qualifiées.
- Création d’une tâche commerciale automatique pour les leads à forte intention.
4) Tracking GA4 et qualité des données
- Événement GA4 unique (lead_submit) + paramètre (lead_type).
- Contrôle des pages d’entrée et des chemins via rapports GA4.
- Vérification Search Console: pages qui génèrent du trafic utile.
5) Anti-spam et exploitation
- Protection anti-spam discrète (honeypot, rate limit, reCAPTCHA selon cas).
- Logs de soumission (statut, timestamp, type) pour diagnostiquer rapidement.
- Routine de contrôle mensuel (formulaires, intégration, taux d’erreur).
Exemple technique : événement GA4 unique + paramètre (lead_type)
Objectif: un seul événement, lisible et exploitable.
<script>
function ccTrackLeadSubmit(leadType){
if (typeof window.gtag !== 'function') return;
window.gtag('event', 'lead_submit', {
event_category: 'Conversion',
lead_type: String(leadType || 'unknown')
});
}
// Exemple d'appel après succès formulaire:
// ccTrackLeadSubmit('offre');
</script>
Exemple technique : envoi HubSpot via webhook (serveur)
Version minimaliste. À intégrer dans un endpoint sécurisé côté serveur (jamais en front).
<?php
// Exemple: endpoint WordPress (REST) pour relayer vers HubSpot.
// À sécuriser (nonce, token, rate limit).
add_action('rest_api_init', function () {
register_rest_route('cc/v1', '/hubspot', [
'methods' => 'POST',
'callback' => function (WP_REST_Request $req) {
$body = $req->get_json_params();
if (empty($body['email'])) {
return new WP_REST_Response(['ok' => false, 'error' => 'missing_email'], 400);
}
$payload = [
'properties' => [
['property' => 'email', 'value' => sanitize_email($body['email'])],
['property' => 'firstname', 'value' => sanitize_text_field($body['firstname'] ?? '')],
['property' => 'lastname', 'value' => sanitize_text_field($body['lastname'] ?? '')],
['property' => 'message', 'value' => sanitize_textarea_field($body['message'] ?? '')],
['property' => 'lead_type', 'value' => sanitize_text_field($body['lead_type'] ?? 'unknown')],
['property' => 'page_url', 'value' => esc_url_raw($body['page_url'] ?? '')],
],
];
// IMPORTANT: stocker la clé API dans une variable d'environnement, pas en dur.
$hubspotUrl = 'https://api.hubapi.com/contacts/v1/contact?hapikey=' . getenv('HUBSPOT_HAPIKEY');
$resp = wp_remote_post($hubspotUrl, [
'headers' => ['Content-Type' => 'application/json'],
'body' => wp_json_encode($payload),
'timeout' => 12,
]);
if (is_wp_error($resp)) {
return new WP_REST_Response(['ok' => false, 'error' => $resp->get_error_message()], 500);
}
return new WP_REST_Response(['ok' => true], 200);
},
'permission_callback' => '__return_true',
]);
});
Exemple technique : honeypot simple (anti-spam)
Discret et efficace contre les bots basiques.
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label for="company">Company</label>
<input id="company" name="company" tabindex="-1" autocomplete="off">
</div>
Résultats observés
- Leads centralisés dans HubSpot, avec moins de pertes et moins de tâches manuelles.
- Suivi GA4 plus utile: conversion par type de demande et page d’entrée.
- Automatisations simples qui accélèrent la prise en charge commerciale.
- Formulaires plus clairs, donc meilleure qualité des demandes et moins d’aller-retours.
Points clés à retenir
- Un CRM apporte de la valeur quand les données sont standardisées et fiables.
- Un seul événement GA4 bien défini vaut mieux que dix événements confus.
- Les automatisations utiles restent simples: tag, notification, tâche, et c’est tout.