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.

Halten Sie Ihren Key geheim

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:

FeldBeschreibung
statusBei Erfolg immer "queued"
transactionalEmailIdDie ID des Sendedatensatzes — nutzen Sie sie zur Zuordnung von Zustellungs-Webhooks
emailDie Empfängeradresse
slugDer verwendete Slug
contactIdDer zugehörige Kontakt (gefunden oder angelegt)
contactCreatedtrue, wenn für diesen Empfänger ein neuer Kontakt angelegt wurde
languageDie 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.

StatusBedeutungHäufige Ursachen
400Ungültige EingabeFehlerhaftes Payload, fehlendes email/slug oder eine Datenvariable, deren Wert nicht dem an der E-Mail deklarierten Typ entspricht
401Nicht authentifiziertFehlender oder ungültiger API-Key
403VerbotenDas Konto wurde gesperrt, oder dem API-Key fehlt der erforderliche Scope (transactional:send)
404Nicht gefundenKeine transaktionale E-Mail passt zum angegebenen Slug oder zur angegebenen ID
422Ungültiger ZustandDie 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)
429RatenbegrenztMehr als 10 Anfragen/Sekunde auf diesem Key — drosseln und erneut versuchen
500ServerfehlerNach kurzer Wartezeit erneut versuchen

Eine fehlende oder falsch typisierte Datenvariable ergibt einen 400, keinen 422422 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