Formulaire d'adhésion (HubSpot)
Vue d’ensemble
Section intitulée « Vue d’ensemble »Lorsqu’un utilisateur est éligible à l’autoconsommation collective à proximité d’une centrale, il peut soumettre un formulaire d’adhésion. Les données du formulaire sont envoyées au CRM HubSpot avec des métadonnées de la centrale enrichies côté serveur, garantissant que les champs sensibles ne sont jamais exposés au client.
Flux de soumission
Section intitulée « Flux de soumission »Browser WordPress REST HubSpot API │ │ │ ├── POST /submit-join-form ─────> │ │ │ {plant_id, company, phone, │ │ │ email, zip, city, pdl, nonce} │ │ │ │ │ │ ├── Verify nonce │ │ │ ├── Validate plant exists │ │ │ ├── Retrieve plant meta: │ │ │ │ work_id, project_name, │ │ │ │ SPV, address, PRM, │ │ │ │ lat/lng, power, tariff, │ │ │ │ perimeter, status │ │ │ ├── Compute: department_code, │ │ │ │ active_ou_a_venir │ │ │ │ │ │ │ ├── Build 21-field payload ──────────── POST ──────────> │ │ │ (client + server fields) │ /submissions/v3/ │ │ │ │ integration/submit/ │ │ │ │ {portalId}/{formId} │ │ │ │ │ │ │<─────────────────────────── inlineMessage ──────────── │ │<── {success, message} ─────── │ │Champs soumis par le client (7)
Section intitulée « Champs soumis par le client (7) »Les champs suivants sont collectés directement depuis la saisie du formulaire par l’utilisateur et envoyés dans la requête POST.
| Champ | Source |
|---|---|
company | Saisie utilisateur — nom de l’entreprise |
phone | Saisie utilisateur — numéro de téléphone |
email | Saisie utilisateur — adresse e-mail |
zip | Saisie utilisateur — code postal |
city | Saisie utilisateur — ville |
n__pdl___prm | Saisie utilisateur — référence PDL (Point de Livraison) |
plant_id | Automatique — identifiant de la centrale sélectionnée |
Champs enrichis côté serveur (14)
Section intitulée « Champs enrichis côté serveur (14) »Ces champs sont récupérés côté serveur depuis les métadonnées de l’article (post meta) de la centrale et ne sont jamais exposés au client. Ils couvrent la localisation de la centrale, les détails techniques et les identifiants de projet — 14 champs au total, incluant des valeurs calculées telles que le code département et le statut d’activité de la centrale.
Modèle de sécurité
Section intitulée « Modèle de sécurité »La séparation entre les champs client et serveur est intentionnelle. La soumission du formulaire utilise un modèle d’enrichissement côté serveur pour la sécurité :
-
API GeoJSON publique — N’expose que les données non sensibles des centrales (nom, ville, code postal, région, puissance, statut). Les champs comme
work_id,SPV,PRM,address,tariffetperimetersont exclus. -
Récupération côté serveur — Lors de la soumission du formulaire, le serveur récupère les métadonnées sensibles de la centrale directement depuis la base de données en utilisant le
plant_id. -
Vérification du nonce — La soumission du formulaire nécessite un nonce WordPress valide pour prévenir les attaques CSRF.
-
Soumission HubSpot — Le payload combiné de 21 champs est envoyé côté serveur à l’API Forms de HubSpot, de sorte que l’utilisateur ne voit jamais les données enrichies.
Intégration HubSpot
Section intitulée « Intégration HubSpot »| Paramètre | Valeur |
|---|---|
| Point d’accès API | https://api.hsforms.com/submissions/v3/integration/submit/{portalId}/{formId} |
| Authentification | Portal ID et Form ID intégrés dans l’URL |
| Réponse | Champ inlineMessage transmis au client |
Gestion des erreurs
Section intitulée « Gestion des erreurs »- Échec du nonce →
wp_send_json_error()avec erreur d’authentification - Centrale introuvable →
wp_send_json_error()avec erreur de centrale invalide - Erreur HTTP HubSpot → Vérification du code de statut (200 = succès), message d’erreur transmis au client
- Succès →
wp_send_json_success()avec le message inline de HubSpot