Destinations
Systèmes externes qui reçoivent les inscriptions en temps réel. Le Vault conserve toujours sa copie, donc une destination indisponible retarde une transmission — elle ne perd jamais une inscription.
Intégrer un système externe
Le Vault envoie une requête POSTen JSON à l'URL configurée, à chaque nouvelle inscription correspondant à la portée de la destination.
Corps de la requête
{
"version": "lead.v1",
"id": "<identifiant Vault de l'inscription>",
"deliveredAt": "2026-08-12T09:31:00.000Z",
"lead": {
"idempotencyKey": "…",
"submittedAt": "2026-08-12T09:30:58.000Z",
"brand": { "slug": "range-rover", "name": "Range Rover" },
"page": { "slug": "salon-mars-2026", "title": "Salon de mars" },
"event": { "type": "salon", "label": "Salon" },
"variant": "booking",
"contact": { "firstName": "…", "lastName": "…", "email": "…", "phone": "…" },
"booking": { "vehicle": "Range Rover", "day": "2026-03-14", "time": "14:30" },
"fields": [ { "label": "Société", "value": "…" } ],
"consents": [ { "text": "Recevoir des offres", "value": "yes" } ],
"sourcePath": "/p/salon-mars-2026",
"utm": {}
}
}Vérifier l'authenticité (HMAC)
Deux en-têtes accompagnent la requête : x-neubauer-timestamp (horodatage Unix) et x-neubauer-signature. La signature couvre <horodatage>.<corps brut>— inclure l'horodatage permet de rejeter une requête rejouée.
const signed = `${timestamp}.${rawBody}`;
const expected = "sha256=" + crypto
.createHmac("sha256", SECRET).update(signed).digest("hex");
// Comparer en temps constant, puis refuser un horodatage
// vieux de plus de ~5 minutes.Réponses attendues
- 2xx— l'inscription est marquée transmise.
- 5xx, 408, 429 — nouvelle tentative automatique (1 min, 5 min, 30 min, 2 h, 6 h, 24 h).
- autres 4xx — refus définitif, aucune nouvelle tentative : la requête est considérée comme invalide côté destinataire.
Le même idempotencyKeypeut être reçu plusieurs fois (rejeu manuel, incident réseau) : traitez-le comme une clé d'unicité de votre côté.