ZWEI KANÄLE, EIN ENDPUNKT. `channel` ist `EMAIL` oder `SMS` und wird beim Anlegen festgelegt. E-Mail-Vorlagen haben `name`, `subject`, `preheader` (Vorschautext) und `blocks`; SMS-Vorlagen `name` und `smsText`. Felder des anderen Kanals sind ein Fehler: beim Anlegen scheitert das Schema, beim Ändern kommt 400 mit `reason: "marketing-template-channel-mismatch"` und `fields`. Den Kanal zu wechseln geht nicht — `channel` ist im `PATCH` nur lesbar; legen Sie eine neue Vorlage an.
BLÖCKE sind dieselben wie im E-Mail-Editor des Dashboards (`heading`, `text`, `image`, `button`, `divider`, `spacer`, `grid` …), höchstens 60, mindestens einer. Den Reservierungsblock (`reservation-details`) gibt es in Marketing-Vorlagen nicht — eine Werbemail hat keine Reservierung. Abmeldelink, Absenderangaben und Adresse des Betriebs hängt der Versand AUTOMATISCH an; sie gehören nicht in die Vorlage.
PLATZHALTER stehen als `{{name}}` in Betreff, Vorschautext, Blöcken und SMS-Text: `firstName`, `guestName`, `restaurantName`, `bookingUrl`, `unsubscribeUrl` und die Restaurantdaten aus dem Branding; in Automatisierungen zusätzlich die Reservierungsdaten (`reservationDate`, `reservationTime`, `reservationPartySize`, `reservationAreaName`). Ein unbekannter Platzhalter ist 400 — er käme beim Gast als Rohtext oder als kaputter Link an. Die Platzhalter der Reservierungsmails (etwa `{{websiteUrl}}`) sind ein anderer Katalog und werden hier ebenfalls abgelehnt.
SMS-LÄNGE: höchstens 480 Zeichen Text. Der Versand hängt „Abmelden: <Link>" an (rund 35 Zeichen) und rechnet in SMS-Teilen (GSM-7 bzw. Unicode); mehr als vier Teile nimmt der Versand nicht an. Umlaute und Emojis können einen Text in Unicode kippen und damit die Teilezahl verdoppeln.
LÖSCHEN IST GESCHÜTZT. Solange eine geplante, laufende oder pausierte Kampagne oder eine aktive bzw. pausierte Automatisierung die Vorlage nutzt, ist `DELETE` 409 (`reason: "marketing-template-in-use"`, `usage` nennt Kampagnen und Automatisierungen). Entwürfe verlieren beim Löschen nur ihre Vorlagenauswahl — `detachedDrafts` sagt, wie viele. Versendete Kampagnen behalten ihren eingefrorenen Inhalt.
INHALT EINER VERWENDETEN VORLAGE ÄNDERN IST VERSAND. Automatisierungen lesen die Vorlage bei jedem Versand neu, und eine pausierte Kampagne friert sie beim Fortsetzen neu ein. Betreff, Vorschautext, Blöcke oder SMS-Text einer Vorlage zu ändern, die gerade verwendet wird (dieselben Nutzer wie beim Löschschutz), verlangt deshalb zusätzlich `action:marketing.send` — sonst 403 `forbidden_action` mit `reason: "marketing-template-live"` und `usage`. Den Namen ändern darf jeder Schlüssel mit `marketing:write`.