Skip to main content

Refunds & Notifications · Article 6.1

Alle E-Mails, die Clozo versendet, in einer Tabelle

Clozo versendet 13 verschiedene Transaktions-E-Mails über den Angebots- und Änderungslebenszyklus. Diese Seite listet jede einzelne auf — wer sie auslöst, wer sie empfängt und was beigefügt ist.

Clozos E-Mail-Schicht ist für zwei Zielgruppen konzipiert: Ihren Kunden (der Klarheit und einen klaren nächsten Schritt benötigt) und Sie (der den Prüfpfad und eine Kopie in Ihrem Archiv benötigt). Jede E-Mail dient einem einzigen Statuswechsel — ein Angebot wechselt zu Gesendet, eine Anzahlung geht ein, eine Änderung wird gegengezeichnet. Das nachfolgende Inventar ist der Hauptindex; jede Zeile verlinkt auf einen eigenen Artikel mit dem Auslöser, dem Inhalt, den Anhängen und dem Wiederherstellungsablauf.

Why this works this way

Drei Eigenschaften gelten für alle E-Mails, die Clozo versendet:

1. Idempotenz durch Design. Jedes Senden ist in das _claim_email_field()-Muster eingebettet ([D-070]). Bevor der Task eine Nachricht zusammenstellt, setzt er atomar einen Zeitstempel pro Zeile von NULL auf now(). Wenn ein Celery-Wiederholungsversuch, ein Webhook-Replay oder ein manueller Neuauslöser eintrifft, nachdem das Feld bereits beansprucht wurde, beendet der zweite Versuch stillschweigend — Ihr Kunde erhält niemals ein Duplikat.

2. Anhänge kommen aus R2, nicht aus dem Speicher. PDFs werden einmal gerendert (wenn das zugrundeliegende Ereignis ausgelöst wird) und in unveränderlichen Cloudflare-R2-Speicher hochgeladen. Der E-Mail-Task lädt die Bytes bei Versand aus R2; wenn R2 kurz nicht erreichbar ist, wiederholt der Task mit exponentiellem Backoff bis zu dreimal. Diese Trennung bedeutet, dass ein langsames Gotenberg-Rendering nie die E-Mail-Warteschlange aufhält.

3. Locale wird einmalig auf dem Angebot aufgelöst. Wenn ein Kunde erstmals unterzeichnet (oder wenn Sie die Angebotssprache festlegen), wird die Locale im Angebotsdatensatz festgelegt. Jede nachfolgende E-Mail — Erinnerung, Rückerstattung, Änderung — schlägt denselben Wert nach, sodass ein Kunde nie eine englische Anzahlungsrechnung gefolgt von einer deutschen Schlussrechnungserinnerung erhält.

Troubleshooting

Keep reading