Menu de la documentation

SDK serveur : le consentement côté backend

Lire la décision de consentement dans votre code serveur et vérifier les webhooks signés.

Voir en Markdown
Mis à jour le

Pourquoi

La bannière bloque le navigateur, mais la moitié des traitements partent du serveur : GA4 Measurement Protocol, synchronisation CRM, cookies d'attribution. @flowconsent/server-sdk lit le cookie first-party posé par la bannière (contrat v1, versionné) et rend une décision typée — refus par défaut si le cookie est absent, illisible ou périmé.

Installation

sh
npm install @flowconsent/server-sdk

Zéro dépendance, compatible edge (Vercel, Cloudflare Workers, Node ≥ 18).

Lire la décision

ts
import { readConsent } from '@flowconsent/server-sdk'
 
const decision = readConsent(request)
if (decision.can('analytics')) {
  // envoyer l'événement GA4 Measurement Protocol
}
// decision.reason : 'ok', 'no_cookie', 'expired', 'version_mismatch'…

decision.can('google-analytics') fonctionne aussi par service. Passez expectedConfigHash (celui de votre bannière) pour invalider automatiquement les choix antérieurs à un changement de configuration.

Vérifier les webhooks

Les webhooks de consentement sont signés (HMAC-SHA256, en-tête X-FlowConsent-Signature, style Stripe) :

ts
import { verifyWebhookSignature } from '@flowconsent/server-sdk'
const check = await verifyWebhookSignature(rawBody, signatureHeader, secret)
if (!check.valid) return new Response('invalid', { status: 400 })

Le secret n'est montré qu'une fois, à la création du webhook (app ou MCP configure_consent_webhook).