Menú de la documentación

SDK de servidor: el consentimiento en el backend

Lee la decisión de consentimiento en tu código de servidor y verifica los webhooks firmados.

Ver como Markdown
Actualizado el

Por qué

El banner bloquea el navegador, pero la mitad de los tratamientos salen del servidor: GA4 Measurement Protocol, sincronización con el CRM, cookies de atribución. @flowconsent/server-sdk lee la cookie first-party colocada por el banner (contrato v1, versionado) y devuelve una decisión tipada — rechazo por defecto si la cookie falta, es ilegible o está caducada.

Instalación

sh
npm install @flowconsent/server-sdk

Cero dependencias, compatible con edge (Vercel, Cloudflare Workers, Node ≥ 18).

Leer la decisión

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

decision.can('google-analytics') también funciona por servicio. Pasa expectedConfigHash (el de tu banner) para invalidar automáticamente las elecciones anteriores a un cambio de configuración.

Verificar los webhooks

Los webhooks de consentimiento van firmados (HMAC-SHA256, cabecera X-FlowConsent-Signature, al estilo Stripe):

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

El secreto solo se muestra una vez, al crear el webhook (app o MCP configure_consent_webhook).