Transaktionale E-Mails einrichten
Transaktionale E-Mails wie Passwort-Resets und Bestellbestätigungen über die Owlat-API und die SDKs einrichten und versenden.
Transaktionale E-Mails werden durch eine Benutzeraktion ausgelöst — ein Passwort-Reset, eine Bestellbestätigung, eine Willkommensnachricht nach der Registrierung. Anders als Marketing-Kampagnen gehen sie an einen einzelnen Empfänger zu einem bestimmten Zeitpunkt, und die Empfänger erwarten sie sofort. Diese Anleitung führt durch das Erstellen einer transaktionalen E-Mail, das Erzeugen eines API-Keys und den Versand aus Ihrer Anwendung.
Für den konzeptionellen Überblick (transaktional vs. Marketing, Slugs, Anhänge, Monitoring) siehe Transaktionale E-Mails. Diese Seite konzentriert sich auf die Integrationsschritte.
Häufige Beispiele:
- Links zum Zurücksetzen des Passworts
- Willkommens-E-Mails nach der Registrierung
- Bestellbestätigungen und Belege
- Versandbenachrichtigungen
- E-Mails zur Kontoverifizierung
Eine transaktionale E-Mail erstellen
Transaktionale E-Mails sind eine eigenständige Entität, getrennt von Marketing-Vorlagen — jede hat einen eindeutigen Slug, den Ihre Anwendung beim Versand referenziert.
Mail > Transaktional öffnen
Gehen Sie in Ihrem Dashboard zu Mail > Transaktional. Die Listenseite (Titel „Transaktionale E-Mails“) zeigt alles, was Sie angelegt haben.
Die E-Mail anlegen
Klicken Sie auf Neue transaktionale E-Mail. Geben Sie im Dialog einen Namen (z. B. „Bestellbestätigung“) und einen eindeutigen Slug (z. B. order-confirmation) ein. Der Slug besteht aus Kleinbuchstaben, Ziffern und Bindestrichen und ist die Kennung, über die Ihr Code bestimmt, welche E-Mail versendet wird — wählen Sie ihn sorgfältig und ändern Sie ihn nicht mehr, sobald er im Einsatz ist.
Den Inhalt gestalten
Sie gelangen in den E-Mail-Editor. Bauen Sie das Layout genauso auf wie bei jeder anderen E-Mail. Überall dort, wo Sie dynamische Inhalte benötigen, fügen Sie mit dem Befehl /var eine Datenvariable ein — zum Beispiel eine Variable customerName, orderNumber oder total. Die Werte für diese Variablen liefern Sie beim Versand.
Veröffentlichen
Eine transaktionale E-Mail muss veröffentlicht sein, bevor sie versendet werden kann. Klicken Sie im Editor auf Veröffentlichen. Bis dahin werden Sendeanfragen abgelehnt (siehe Fehlerbehandlung). Wenn der Content-Scanner die E-Mail markiert, wechselt sie in den Zustand Prüfung ausstehend, statt sofort live zu gehen.
Verwenden Sie sprechende Variablennamen wie orderNumber statt generischer wie var1. Das macht Ihre API-Aufrufe selbsterklärend und leichter zu debuggen. Im gerenderten HTML werden daraus {{orderNumber}}-Platzhalter, aber Sie tippen die geschweiften Klammern nie selbst — der Befehl /var fügt sie für Sie ein.
Einen API-Key erzeugen
Für transaktionale Sendevorgänge benötigen Sie einen API-Key zur Authentifizierung.
Einstellungen > API öffnen
Gehen Sie in Ihrem Dashboard zu Einstellungen > API (Route /dashboard/admin/team/api). Die Verwaltung von API-Keys steht Eigentümern und Administratoren der Organisation zur Verfügung.
Den Key erstellen
Klicken Sie auf API-Key erstellen und vergeben Sie einen sprechenden Namen (z. B. „Production“) sowie mindestens einen Scope. Keys folgen dem Prinzip der minimalen Rechte — für transaktionale Sendevorgänge wählen Sie transactional:send. (Weitere verfügbare Scopes: contacts:read, contacts:write, events:write, topics:write.)
Den Key kopieren
Kopieren Sie den erzeugten Key. Er beginnt mit lm_live_ und wird nur ein einziges Mal angezeigt.
Ein Owlat-API-Key trägt nur die Scopes, die Sie ihm gewähren — ein transaktionaler Versand benötigt transactional:send. Behandeln Sie ihn wie ein Passwort: Speichern Sie ihn in einer Umgebungsvariablen oder einem Secrets-Manager, committen Sie ihn nie in die Versionskontrolle und geben Sie ihn niemals in clientseitigem Code preis. Der Key wird ausschließlich bei der Erstellung angezeigt.
Versand über das TypeScript-SDK
Installieren Sie das Owlat-SDK und versenden Sie Ihre erste transaktionale E-Mail:
import { Owlat } from '@owlat/sdk-js'
const owlat = new Owlat('lm_live_...')
const result = await owlat.transactional.send({
email: 'user@example.com',
slug: 'order-confirmation',
dataVariables: {
orderNumber: '#12345',
customerName: 'Jane',
total: '$49.99',
},
})
// result.transactionalEmailId — the send-record id, use it to track delivery
Das SDK übernimmt Authentifizierung, Serialisierung und Fehlerbehandlung für Sie. Übergeben Sie im Objekt dataVariables alle Datenvariablen, die Ihre E-Mail erwartet. Sie können eine E-Mail über slug oder über transactionalId adressieren.
Versand über das Java-SDK
Owlat owlat = new Owlat("lm_live_...");
owlat.transactional().send(
SendTransactionalParams.builder("user@example.com")
.slug("order-confirmation")
.dataVariables(Map.of(
"orderNumber", "#12345",
"customerName", "Jane",
"total", "$49.99"
))
.build()
);
Der Builder nimmt die Empfängeradresse als einziges Positionsargument entgegen; den Slug setzen Sie mit .slug(...) und alle Variablen übergeben Sie auf einmal mit .dataVariables(Map).
Versand über cURL
Wenn Sie die API lieber direkt aufrufen:
curl -X POST https://your-deployment.convex.site/api/v1/transactional \
-H "Authorization: Bearer lm_live_..." \
-H "Content-Type: application/json" \
-d '{
"slug": "order-confirmation",
"email": "user@example.com",
"dataVariables": {
"orderNumber": "#12345",
"customerName": "Jane",
"total": "$49.99"
}
}'
Eine erfolgreiche Anfrage liefert den Status 202 Accepted — die E-Mail wird zur Zustellung eingereiht, nicht synchron versendet. Der Response-Body enthält:
| Feld | Beschreibung |
|---|---|
status | Bei Erfolg immer "queued" |
transactionalEmailId | Die ID des Sendedatensatzes — nutzen Sie sie zur Zuordnung von Zustellungs-Webhooks |
email | Die Empfängeradresse |
slug | Der verwendete Slug |
contactId | Der zugehörige Kontakt (gefunden oder angelegt) |
contactCreated | true, wenn für diesen Empfänger ein neuer Kontakt angelegt wurde |
language | Die für den Versand verwendete Sprache |
API-Code im Dashboard ansehen
Sie müssen den Aufruf nicht von Hand schreiben. In der Liste Transaktional hat jede E-Mail die Aktion API-Code anzeigen (das Symbol < >, ebenfalls im Menü der Zeile), die einen fertigen Sende-Codeausschnitt in cURL, JavaScript und Python öffnet — bereits mit dem Slug der E-Mail vorbelegt. Kopieren, Ihren API-Key einsetzen, und schon versenden Sie.
Fehlerbehandlung
Schlägt ein transaktionaler Versand fehl, gibt die API einen der unten aufgeführten kategorisierten Status zurück. Richten Sie Ihre Retry-Logik am Statuscode aus, nicht am Meldungstext.
| Status | Bedeutung | Häufige Ursachen |
|---|---|---|
400 | Ungültige Eingabe | Fehlerhaftes Payload, fehlendes email/slug oder eine Datenvariable, deren Wert nicht dem an der E-Mail deklarierten Typ entspricht |
401 | Nicht authentifiziert | Fehlender oder ungültiger API-Key |
403 | Verboten | Das Konto wurde gesperrt, oder dem API-Key fehlt der erforderliche Scope (transactional:send) |
404 | Nicht gefunden | Keine transaktionale E-Mail passt zum angegebenen Slug oder zur angegebenen ID |
422 | Ungültiger Zustand | Die E-Mail ist nicht veröffentlicht, hat keinen Inhalt, die Versanddomain ist nicht verifiziert, oder der Empfänger ist blockiert (früherer Bounce/frühere Beschwerde) |
429 | Ratenbegrenzt | Mehr als 10 Anfragen/Sekunde auf diesem Key — drosseln und erneut versuchen |
500 | Serverfehler | Nach kurzer Wartezeit erneut versuchen |
Eine fehlende oder falsch typisierte Datenvariable ergibt einen 400, keinen 422 — 422 ist Zustandsproblemen wie einer unveröffentlichten E-Mail oder einer unverifizierten Domain vorbehalten. Verschlucken Sie Sendefehler nicht stillschweigend: Protokollieren Sie Fehlschläge und alarmieren Sie Ihr Team. Eine fehlgeschlagene Passwort-Reset-E-Mail bedeutet einen ausgesperrten Benutzer.
Bei den Fehlern 429 und 500 sollten Sie in Ihrer Retry-Logik einen exponentiellen Backoff implementieren. Transaktionale E-Mails sind wichtig für Ihre Benutzer — bauen Sie daher Resilienz in Ihren Sendecode ein.
Nächste Schritte
- Transactional API — vollständige Endpunkt- und Feldreferenz
- TypeScript-SDK — komplette SDK-Referenz
- Java-SDK — Referenz zum Java-SDK
- Webhooks — lassen Sie sich in Echtzeit über Zustellereignisse benachrichtigen