Aller au contenu

Formulaire d'adhésion (HubSpot)

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.

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} ─────── │ │

Les champs suivants sont collectés directement depuis la saisie du formulaire par l’utilisateur et envoyés dans la requête POST.

ChampSource
companySaisie utilisateur — nom de l’entreprise
phoneSaisie utilisateur — numéro de téléphone
emailSaisie utilisateur — adresse e-mail
zipSaisie utilisateur — code postal
citySaisie utilisateur — ville
n__pdl___prmSaisie utilisateur — référence PDL (Point de Livraison)
plant_idAutomatique — identifiant de la centrale sélectionnée

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.

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é :

  1. 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, tariff et perimeter sont exclus.

  2. 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.

  3. Vérification du nonce — La soumission du formulaire nécessite un nonce WordPress valide pour prévenir les attaques CSRF.

  4. 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.

ParamètreValeur
Point d’accès APIhttps://api.hsforms.com/submissions/v3/integration/submit/{portalId}/{formId}
AuthentificationPortal ID et Form ID intégrés dans l’URL
RéponseChamp inlineMessage transmis au client
  • Échec du noncewp_send_json_error() avec erreur d’authentification
  • Centrale introuvablewp_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èswp_send_json_success() avec le message inline de HubSpot