# Server-SDK: Einwilligung im Backend

Die Einwilligungsentscheidung im Servercode lesen und signierte Webhooks prüfen.

> Canonical: https://www.flowconsent.com/de/doc/server-sdk
> Last updated: 2026-07-29
## Warum

Das Banner blockiert den Browser, aber die Hälfte der Verarbeitungen startet serverseitig: GA4 Measurement Protocol, CRM-Synchronisation, Attributions-Cookies. `@flowconsent/server-sdk` liest das vom Banner gesetzte First-Party-Cookie (versionierter Vertrag v1) und liefert eine typisierte Entscheidung — **Ablehnung als Standard**, wenn das Cookie fehlt, unlesbar oder abgelaufen ist.

## Installation

```sh
npm install @flowconsent/server-sdk
```

Null Abhängigkeiten, edge-kompatibel (Vercel, Cloudflare Workers, Node ≥ 18).

## Die Entscheidung lesen

```ts
import { readConsent } from '@flowconsent/server-sdk'

const decision = readConsent(request)
if (decision.can('analytics')) {
  // das GA4-Measurement-Protocol-Event senden
}
// decision.reason: 'ok', 'no_cookie', 'expired', 'version_mismatch'…
```

`decision.can('google-analytics')` funktioniert auch pro Dienst. Übergeben Sie `expectedConfigHash` (den Ihres Banners), um Entscheidungen von vor einer Konfigurationsänderung automatisch zu invalidieren.

## Webhooks prüfen

Einwilligungs-Webhooks sind signiert (HMAC-SHA256, Header `X-FlowConsent-Signature`, im Stripe-Stil):

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

Das Secret wird nur einmal angezeigt, bei der Erstellung des Webhooks (App oder MCP `configure_consent_webhook`).
