Skip to main content

Refunds & Notifications · Article 6.1

Wszystkie e-maile wysyłane przez Clozo w jednej tabeli

Clozo wysyła 13 różnych e-maili transakcyjnych w całym cyklu życia oferty i aneksu. Ta strona wymienia każdy z nich, kto go wyzwala, kto go otrzymuje i co jest załączone.

Warstwa e-mailowa Clozo jest zbudowana dla dwóch odbiorców: Twojego klienta (który potrzebuje jasności i wyraźnego następnego kroku) i Ciebie (który potrzebuje ścieżki audytu i kopii w swoim archiwum). Każdy e-mail obsługuje jedną zmianę stanu — ofertę przechodzącą do stanu Wysłana, wpływającą zaliczkę, podpisywany aneks. Poniższy inwentarz to główny indeks; każdy wiersz prowadzi do dedykowanego artykułu z wyzwalaczem, treścią, załącznikami i przepływem odtworzenia.

Why this works this way

Trzy właściwości dotyczą każdego e-maila wysyłanego przez Clozo:

1. Idempotencja z założenia. Każde wysłanie jest opakowane we wzorzec _claim_email_field() ([D-070]). Przed złożeniem wiadomości przez zadanie, atomowo zmienia się znacznik czasu per-wiersz z NULL na now(). Jeśli ponowna próba Celery, odtworzenie webhooka lub ręczne ponowne wyzwolenie pojawi się po tym, jak pole jest już zajęte, druga próba kończy się po cichu — Twój klient nigdy nie otrzymuje duplikatu.

2. Załączniki pochodzą z R2, nie z pamięci. Pliki PDF są renderowane raz (gdy wyzwala się zdarzenie bazowe) i przesyłane do niezmiennego magazynu Cloudflare R2. Zadanie e-mailowe pobiera bajty z R2 w czasie wysyłki; jeśli R2 jest przez chwilę niedostępny, zadanie ponawia próbę z wykładniczym wycofywaniem do trzech razy. To oddzielenie oznacza, że wolne renderowanie Gotenberg nigdy nie blokuje kolejki e-maili.

3. Ustawienia regionalne są ustalane raz, dla oferty. Gdy klient po raz pierwszy podpisze (lub gdy Ty ustawisz język oferty), ustawienia regionalne są przypinane do rekordu oferty. Każdy kolejny e-mail — przypomnienie, zwrot, aneks — odczytuje tę samą wartość, więc klient nigdy nie otrzymuje angielskiej faktury zaliczkowej po której następuje przypomnienie o fakturze końcowej po niemiecku.

Troubleshooting

Keep reading