# Practice mail

Werkmail treats typical practice outbound as first-class kinds — not generic marketing.

## Kinds and channels

| Kind | Channel | Default tracking | Legal basis hint |
| --- | --- | --- | --- |
| `termin` | `termin` | off | contract |
| `recall` | `recall` | off | contract |
| `doi` | `newsletter` | off | consent |
| `newsletter` | `newsletter` | on | consent |
| `transactional` | `transactional` | off | contract |
| `quality` | `transactional` | off | contract |

`GET /api/practices/{id}/practice-semantics` returns the same table plus default channel preferences.

## Compliance check

`POST /api/practices/{id}/practice-mail/check`

```json
{ "kind": "termin", "subject": "Ihre Terminbestätigung", "text": "…", "html": "…" }
```

Returns kind hints plus issues (`error` / `warn` / `info`). This is a vertical review on top of the inbox-risk score (`POST …/send/score`). Appointment mail must not mix discounts; recall stays clinical; DOI asks for confirmation.

## Presets

`POST /api/practices/{id}/presets/seed` writes German starters (tracking off except newsletter). Re-run is safe.

## Practice-management systems (PVS)

There is no vendor SDK. Connect the systems you already run:

1. **ICS** — pass `calendar` on send, or use Send → Integrations → Test Termin + ICS
2. **Inbound send hook** — `POST /api/public/hooks/{id}/send` with `message_kind` and `X-Werkmail-Hook-Secret`
3. **Recipes** — `docs/integrations` (n8n form → DOI, calendar → Termin, bounce → Slack)

That is the vertical moat: kinds + consent + presets + checks + hooks, not a locked-in PVS connector.
