Blazalek.com

Incydenty kolejek, webhooków i niezawodności wysyłki

Na tej stronie

Incydenty kolejek i webhooków występują, gdy zaakceptowane zdarzenie jest opóźnione, powtarzane, źle kierowane albo niebezpiecznie przetwarzane. Oddziel potwierdzenie odbioru od ukończonej pracy w dalszych etapach i zachowaj tożsamość zdarzenia przed ponowieniem, opróżnieniem kolejki lub restartem trasy.

Widoczne objawy

  • Zdarzenia webhooka przychodzą więcej niż raz albo powodują zduplikowane efekty uboczne.
  • E-mail pozostaje w kolejce wysyłkowej, a zaległość rośnie.
  • Inbound Parse nie dociera do endpointu albo trwają ponowienia.
  • Wysyłka wyzwalana lub strumień wychodzący konkretnego dostawcy jest mocno opóźniony.

Grupy przyczyn

Potwierdzenie i idempotencja

  • Dostarczenie co najmniej raz i utracone potwierdzenie mogą spowodować powtórzenie zdarzenia przez dostawcę.
  • Przed każdym efektem ubocznym albo ponowieniem trzeba sprawdzić stabilną tożsamość zdarzenia.

Stan kolejki i kontrola opróżniania

  • Rosnąca liczba gotowych zadań, wiek najstarszej wiadomości i praca w toku wskazują różne wąskie gardła.
  • Opróżnianie w ciemno może powtórzyć trwałe błędy albo wysłać stare wiadomości, które straciły już wartość biznesową.

Trasa dostawcy i zachowanie endpointu

  • Klasy odpowiedzi endpointu, routing DNS, status usługi i stan strumienia dostawcy mogą dotyczyć różnych granic.
  • Akceptacja przez dostawcę lub asynchroniczny sukces API nie dowodzą końcowego przetworzenia ani dostarczenia do odbiorcy.

Pierwsze bezpieczne kontrole

  1. Zapisz identyfikator zdarzenia, wiadomości albo zadania, stan kolejki, wiek najstarszego elementu, liczbę prób, odpowiedź z dalszego etapu i okno czasowe.
  2. Przy duplikatach webhooków udowodnij, że powtarzane stabilne identyfikatory są ignorowane, zanim ponownie włączysz efekty uboczne albo ponowienia.
  3. Przy zaległości kolejki sklasyfikuj pracę tymczasową, trwałe błędy i pracę już ukończoną, zanim zmienisz współbieżność workerów albo uruchomisz ponowienia.
  4. Dla endpointów przychodzących prześledź po kolei DNS, publiczną dostępność, logi żądań, klasę odpowiedzi i zachowanie ponowień dostawcy.

Zasady rozwiązania

  • Używaj jednej trwałej granicy idempotencji dla każdego zdarzenia dostarczanego zewnętrznie.
  • Opróżniaj tylko potwierdzony bezpieczny podzbiór i zapisuj każdą decyzję o ponowieniu.
  • Potwierdź naprawę kontrolowanym zdarzeniem, które kończy pracę w dalszym etapie dokładnie raz.

Wybierz runbook

Wybierz zaobserwowany tryb awarii. Każdy runbook zachowuje granice dowodów i dostawcy dla swojej ścieżki.

Macierz diagnostyczna

ObjawObszarPierwsza kontrola
Dlaczego zdarzenia z webhooków przychodzą więcej niż raz i jak sprawić, by ich przetwarzanie było idempotentne?Idempotencja webhookówZakładaj, że webhooki dostarczają zdarzenia co najmniej raz (at-least-once) i że utracone potwierdzenia odbioru mogą tworzyć duplikaty.
Dlaczego e-maile utknęły w kolejce wysyłkowej i jak rozładować zaległości?Klasyfikacja zaległości kolejkiNie rozładowuj zaległości w ciemno; najpierw ustal, czy rośnie liczba gotowych wiadomości, wiek najstarszej wiadomości czy praca w toku.
Dlaczego SendGrid Inbound Parse nie dostarcza danych do naszego endpointu?Routing Inbound ParsePotraktuj to najpierw jako incydent z routingiem end-to-end i przyjmowaniem żądań po stronie endpointu, a nie jako dowód, że SendGrid zgubił wiadomość.
Dlaczego wysyłki wyzwalane (Triggered Send) w Salesforce Marketing Cloud są mocno opóźnione?Kolejka Triggered SendZanim uznasz opóźnienie za ogólną awarię Salesforce, sprawdź definicję Triggered Send i jej kolejkę.
Jak SendGrid ponawia nieudane dostarczenie webhooka Inbound Parse?Granica ponawiania 5xx Inbound ParseZachowaj status endpointu i log żądania; SendGrid dokumentuje automatyczne ponawianie POST Inbound Parse, które otrzymały odpowiedź 5xx.
Czy pocztę wychodzącą opóźnia incydent usługi Postmark?Status i Activity PostmarkNie zakładaj incydentu obejmującego całą usługę Postmark wyłącznie na podstawie opóźnionej poczty: sprawdź ponownie aktualny status na żywo i przeanalizuj w Activity wiadomości, których dotyczy problem.

Zachowaj dowody zdarzenia i dostarczenia, zmieniaj tylko potwierdzoną granicę i zweryfikuj kontrolowany wynik przed zwiększeniem ruchu albo ponowieniem pracy.

Dlaczego zdarzenia z webhooków przychodzą więcej niż raz i jak sprawić, by ich przetwarzanie było idempotentne?

Poziom ważności: WysokiWstrzymanie wysyłki: Wstrzymaj warunkowo

Zakładaj, że webhooki dostarczają zdarzenia co najmniej raz (at-least-once) i że utracone potwierdzenia odbioru mogą tworzyć duplikaty. Zanim wykonasz efekty uboczne, odsiej duplikaty na podstawie stabilnego identyfikatora zdarzenia od dostawcy — takiego jak sg_event_id czy svix-id. Wstrzymaj nieidempotentne efekty uboczne w dalszych etapach, dopóki powtórzone identyfikatory nie będą bezpiecznie ignorowane.

Pierwsze 15 minut

  1. Porównaj zdublowane ładunki (payload) SendGrid po sg_event_id, gdy to pole jest dołączone.
  2. Sprawdź odpowiedzi Event Webhook inne niż 2xx — to one wyzwalają ponowienia SendGrid nawet przez 24 godziny.
  3. Porównaj duplikaty z Resend po svix-id i potwierdź, że już przetworzone identyfikatory są pomijane.

Teraz

  • Zapisuj i pomijaj powtórzone wartości sg_event_id lub svix-id, zanim wykonasz efekty uboczne w dalszych etapach.

Najbliższe 24 godziny

  • Połącz utrwalanie identyfikatora zdarzenia i sam efekt uboczny w jedną, idempotentną ścieżkę przetwarzania.

Najbliższe 7 dni

  • Używaj znacznika czasu zdarzenia od dostawcy, gdy stan aplikacji zależy od kolejności zdarzeń, bo Resend nie gwarantuje kolejności dostarczania.

Kontrole techniczne

Inżynieria

  • Zapisuj na trwałe wartości sg_event_id z SendGrid i odsiewaj ich duplikaty, gdy są dołączone.
  • Potwierdź, że po udanym przetworzeniu endpoint SendGrid zwraca odpowiedź 2xx, żeby nie wyzwalać ponowień właściwych dla odpowiedzi innych niż 2xx.
  • Gdy musisz odtworzyć kolejność zdarzeń, użyj znacznika czasu created_at z Resend zamiast kolejności ich nadejścia.

Kryteria weryfikacji

  • Ponów ładunki z tym samym sg_event_id i potwierdź, że efekt uboczny w dalszym etapie wykona się tylko raz.
  • Potwierdź, że udane przetwarzanie w SendGrid zwraca 2xx i że nie trwa żadna sekwencja ponowień właściwa dla odpowiedzi innych niż 2xx.
  • Ponów zapisany svix-id z Resend i potwierdź, że zostaje pominięty jako już przetworzony.

Kryteria eskalacji

  • Eskaluj sprawę wewnętrznie, gdy — już po włączeniu lokalnej deduplikacji — powtórzone sg_event_id nie zostaje pominięte i wykonuje efekt uboczny w dalszym etapie.
  • Gdy potwierdzisz, że zapisany svix-id zostaje pominięty, a efekt uboczny w dalszym etapie wykonuje się raz, kolejne dostarczenia tego identyfikatora traktuj jako udokumentowane zachowanie at-least-once, a nie warunek eskalacji.

Zapobieganie

  • Traktuj sg_event_id z SendGrid jako klucz deduplikacji, gdy jest dołączony.
  • Zapisuj wartości svix-id z Resend i pomijaj już przetworzone identyfikatory.
  • Używaj created_at zamiast kolejności nadejścia tam, gdzie kolejność zdarzeń Resend ma znaczenie.

Wpływ na biznes

  • Dostarczanie co najmniej raz (at-least-once) może powtórzyć efekty uboczne w dalszych etapach, gdy utracone potwierdzenie odbioru sprawia, że dostawca ponownie dostarcza to samo zdarzenie.

Uwagi dostawcy

  • SendGrid ponawia żądania POST do Event Webhook po odpowiedziach innych niż 2xx, w rosnących odstępach, nawet przez 24 godziny.
  • Resend dostarcza co najmniej raz (at-least-once) i nie gwarantuje kolejności dostarczania.

Otwarte pytania

  • Nazwy pól z identyfikatorem zdarzenia, harmonogramy ponowień, narzędzia do ponawiania i gwarancje kolejności różnią się w zależności od ESP i konkretnego produktu webhookowego.
  • To, czy obecne duplikaty mają ten sam identyfikator zdarzenia od dostawcy, czy są odrębnymi zdarzeniami upstream, wymaga analizy ładunku i warstwy trwałego zapisu.
  • Moment, w którym obecny handler potwierdza odbiór, oraz jego atomowość względem efektów ubocznych pozostają nieznane, dopóki nie przejrzysz kodu i transakcji bazodanowych.
Źródła (4)
  1. Twilio SendGrid Event Webhook OverviewDuplicate eventsTwilio SendGrid
  2. Twilio SendGrid Event Webhook OverviewGeneral troubleshootingTwilio SendGrid
  3. Managing WebhooksFAQ: What are the delivery guarantees?Resend
  4. Managing WebhooksFAQ: Do events arrive in order?Resend

Dlaczego e-maile utknęły w kolejce wysyłkowej i jak rozładować zaległości?

Poziom ważności: WysokiWstrzymanie wysyłki: Wstrzymaj warunkowo

Nie rozładowuj zaległości w ciemno. Najpierw ustal, co właściwie rośnie: liczba gotowych wiadomości, wiek najstarszej wiadomości czy liczba wiadomości w trakcie przetwarzania. Zanim cokolwiek ponowisz, sklasyfikuj wyniki z dalszych etapów — limity i odpowiedzi SMTP — tak, aby zadania przejściowe dało się kontrolować, a trwałych błędów nie powtarzać bez zmian. Ryzyko biznesowe bierze się z narastającego opóźnienia w kolejce i z nieprawidłowych wysyłek podczas niekontrolowanego opróżniania.

Pierwsze 15 minut

  1. Zapisz stan zaległości gotowych wiadomości oraz wiek najstarszej nieprzetworzonej wiadomości — skorzystaj z metryk SQS ApproximateNumberOfMessagesVisible i ApproximateAgeOfOldestMessage lub ich odpowiedników.
  2. Porównaj wiadomości w trakcie przetwarzania, błędy konsumentów i przepustowość, zanim dołożysz workery albo zaczniesz opróżniać kolejkę.

Teraz

  • Zatrzymaj ponawianie w ciemno, odizoluj zapisane zadania 5yz do ręcznej interwencji i pozostaw wyłącznie sklasyfikowane zadania przejściowe, które kwalifikują się do kontrolowanego ponowienia.

Najbliższe 24 godziny

  • Jeśli SES zwrócił udokumentowany błąd limitu albo maksymalnego tempa, odczekaj do dziesięciu minut przed ponowieniem wysyłek przez API i wznów wysyłkę w kontrolowanym tempie.

Najbliższe 7 dni

  • Dobieraj pojemność konsumentów na podstawie danych o wiadomościach gotowych, w trakcie przetwarzania, o błędach i przepustowości — a nie wyłącznie na podstawie liczby zaległości.

Kontrole techniczne

Inżynieria

  • Nanieś na jeden wykres metryki wiadomości gotowych, wieku najstarszej wiadomości i wiadomości w trakcie przetwarzania. Skoreluj je z błędami workerów i zrealizowaną przepustowością.
  • Zweryfikuj idempotencję na granicy logicznej wysyłki, zanim zaczniesz opróżniać standardową kolejkę Amazon SQS, która potrafi dostarczyć tę samą wiadomość więcej niż raz.
  • Sklasyfikuj każdy zapisany wynik od dostawcy lub z SMTP i wyklucz z ponownego przetwarzania zadania, które bez zmian kończą się błędem 5yz.

Wsparcie ESP

  • Zanim zastosujesz zalecenia SES dotyczące ponowień, potwierdź, czy Amazon SES zwrócił udokumentowany błąd throttlingu — z tytułu dziennego limitu albo maksymalnego tempa wysyłki.

Kryteria weryfikacji

  • Zaległości gotowych wiadomości i wiek najstarszej wiadomości spadają względem poziomu bazowego z początku incydentu, a zrealizowana przepustowość utrzymuje się.
  • Wiadomości w trakcie przetwarzania, zestawione z błędami workerów i przepustowością, nie wskazują już na zablokowanych konsumentów.

Kryteria eskalacji

  • Eskaluj sprawę do zespołu inżynieryjnego, gdy wiek najstarszej wiadomości wciąż rośnie mimo zdrowej przepustowości, a do wsparcia SES — gdy udokumentowany throttling utrzymuje się po obsłudze ponowień zgodnej z zaleceniami dostawcy.

Zapobieganie

  • Ustaw wspólny alert na zaległości gotowych wiadomości, wiek najstarszej wiadomości i wiadomości w trakcie przetwarzania, wymuś idempotentne wysyłki logiczne i zachowuj klasyfikację odpowiedzi dla każdego zadania w kolejce.

Wpływ na biznes

  • Rosnące widoczne zaległości albo rosnący wiek najstarszej wiadomości oznaczają, że e-maile do klientów czekają dłużej — nawet gdy sama liczba wiadomości w kolejce wygląda na stabilną.

Uwagi dostawcy

  • Metryki zaległości i wieku w Amazon SQS są przybliżone; interpretuj je razem z danymi o cyklu życia wiadomości, wiadomościach w trakcie przetwarzania, błędach i przepustowości.
  • Amazon SES zaleca odczekanie do dziesięciu minut przed ponowieniem wysyłek przez API, ale tylko przy swoich udokumentowanych błędach throttlingu — z tytułu dziennego limitu albo maksymalnego tempa wysyłki.

Otwarte pytania

  • Nie podano technologii kolejki, jej głębokości, wieku najstarszej wiadomości, liczby wiadomości w trakcie przetwarzania, harmonogramu ponowień ani kondycji workerów.
  • Główna przyczyna pozostaje nieustalona, dopóki nie skorelujesz odpowiedzi z dalszych etapów, zdarzeń dotyczących limitów, błędów workerów i wieku zaległości.
  • Nie wiadomo, czy konsumenci są idempotentni ani czy opróżnienie zaległości mogłoby zduplikować e-maile widoczne dla klientów.
Źródła (6)
  1. Available CloudWatch metrics for Amazon SQSApproximateNumberOfMessagesVisibleAmazon SQS
  2. Available CloudWatch metrics for Amazon SQSApproximateAgeOfOldestMessageAmazon SQS
  3. Available CloudWatch metrics for Amazon SQSApproximateNumberOfMessagesNotVisibleAmazon SQS
  4. Amazon SQS at-least-once deliveryAt-least-once deliveryAmazon SQS
  5. Errors related to the sending quotas for your Amazon SES accountReaching sending limits with the Amazon SES APIAmazon SES
  6. RFC 5321: Simple Mail Transfer ProtocolSection 4.2.1, Reply Code Severities and TheoryIETF RFC 5321

Dlaczego SendGrid Inbound Parse nie dostarcza danych do naszego endpointu?

Poziom ważności: WysokiWstrzymanie wysyłki: Wstrzymaj warunkowo

Potraktuj to najpierw jako incydent z routingiem end-to-end i przyjmowaniem żądań po stronie endpointu, a nie jako dowód, że SendGrid zgubił wiadomość. Zweryfikuj po kolei rekord MX dedykowanej nazwy hosta, publiczny docelowy adres URL, obsługę żądania i kod odpowiedzi. Prawidłowe 2xx zatrzymuje ponawianie, natomiast udokumentowane ponowienia 5xx mogą skończyć się porzuceniem niedostarczonego żądania POST po trzech dniach.

Pierwsze 15 minut

  1. Odpytaj publiczny DNS o rekord MX dokładnej dedykowanej nazwy hosta odbierającego i potwierdź, że wpis o priorytecie 10 wskazuje na mx.sendgrid.net.
  2. Przetestuj skonfigurowany docelowy adres URL z publicznego internetu i odczytaj końcowy status HTTP, nie polegając na przekierowaniach.

Teraz

  • Popraw dedykowany cel MX albo przywróć publiczną osiągalność i usuń wszelkie przekierowania ze skonfigurowanej ścieżki docelowej.

Najbliższe 24 godziny

  • Napraw obsługę multipart i — gdy jest włączona — zweryfikuj nagłówki podpisu i znacznika czasu Twilio względem surowej treści żądania, zanim ją sparsujesz.

Najbliższe 7 dni

  • Zadbaj, aby trwałe przyjęcie poprzedzało odpowiedź 2xx, i ustaw alert na ponowienia 5xx odpowiednio wcześnie, aby zdążyć zadziałać przed udokumentowanym trzydniowym momentem porzucenia.

Kontrole techniczne

IT / DNS

  • Sprawdź, czy dedykowana nazwa hosta parsera — a nie główna domena produkcyjna — ma wymagany rekord MX o priorytecie 10 wskazujący na mx.sendgrid.net.

Inżynieria

  • Przetestuj publiczny DNS, TLS, routing, zaporę sieciową i autoryzację dla skonfigurowanego docelowego adresu URL.
  • Potwierdź, że endpoint przyjmuje multipart/form-data oraz części z plikami, mieszcząc się w limitach parsera i rozmiaru treści żądania.
  • Jeśli weryfikacja podpisu jest włączona, sprawdź nagłówki podpisu i znacznika czasu względem surowej treści żądania, zanim zmieni ją parser multipart.
  • Przejrzyj logi statusów endpointu pod kątem przekierowań, zaakceptowanych odpowiedzi 2xx i ponowień po 5xx; webhook nie podąża za przekierowaniem.

Kryteria weryfikacji

  • Publiczny DNS pokazuje dla dedykowanej nazwy hosta cel MX o priorytecie 10 równy mx.sendgrid.net, a skonfigurowany adres URL jest osiągalny spoza sieci prywatnej.
  • Kontrolowane zdarzenie multipart przechodzi każde skonfigurowane sprawdzenie podpisu na surowej treści żądania, zostaje trwale przyjęte i otrzymuje bezpośrednią, prawidłową odpowiedź 2xx.

Kryteria eskalacji

  • Eskaluj sprawę do Twilio SendGrid, gdy ponowienia 5xx się utrzymują, a niedostarczone żądania POST zbliżają się do udokumentowanego trzydniowego okna porzucenia.

Zapobieganie

  • Testuj na bieżąco dedykowany routing MX, publiczną osiągalność endpointu, parsowanie multipart, weryfikację podpisu na surowej treści żądania (gdy jest włączona) i trwałe przyjęcie przed 2xx.

Wpływ na biznes

  • Zdarzenia przychodzące, które po udokumentowanych ponowieniach 5xx nadal nie docierają, mogą po trzech dniach zostać porzucone bez wcześniejszego powiadomienia, przez co zależne od nich procesy biznesowe pozostają niedokończone.

Uwagi dostawcy

  • SendGrid nie podąża za przekierowaniami HTTP, a prawidłowe 2xx usuwa pozycję z jego kolejki ponowień.
  • Przyjęte dowody potwierdzają ponowienia dla odpowiedzi 5xx i trzydniowy moment porzucenia; zachowanie poza tym udokumentowanym zakresem błędów serwera pozostaje niewyjaśnione.

Otwarte pytania

  • Nie podano nazwy hosta odbierającego, publicznej odpowiedzi MX, konfiguracji Inbound Parse, docelowego adresu URL ani logów żądań endpointu.
  • Obecny punkt awarii pozostaje niewyjaśniony, dopóki nie przetestujesz end-to-end dostarczania przez DNS, statusu HTTP, zachowania przy przekierowaniach, parsowania multipart i weryfikacji podpisu.
  • Centrum pomocy Twilio podaje, że każda odpowiedź inna niż 2xx oraz awaria DNS jest ponawiana przez 72 godziny, natomiast strona dla deweloperów opisuje konkretnie ponowienia 5xx; zanim się na tym oprzesz, potwierdź w Twilio bieżące zachowanie dla 3xx i 4xx.
Źródła (6)
  1. Configure the inbound parse webhookCreate an MX recordTwilio SendGrid
  2. Configure the inbound parse webhookSet the email server and webhook URLTwilio SendGrid
  3. Configure the inbound parse webhookExamples of the payloads and their parameters > Default webhook payloadTwilio SendGrid
  4. Inbound Email Parse WebhookRetry behavior and Setup warningsTwilio SendGrid
  5. Securing your Inbound Parse WebhooksValidate Inbound Parse Webhooks > Signature VerificationTwilio SendGrid
  6. Inbound Email Parse WebhookRetry behaviorTwilio SendGrid

Dlaczego wysyłki wyzwalane (Triggered Send) w Salesforce Marketing Cloud są mocno opóźnione?

Poziom ważności: WysokiWstrzymanie wysyłki: Wstrzymaj warunkowo

Zanim uznasz opóźnienie za ogólną awarię Salesforce, sprawdź definicję Triggered Send i jej kolejkę. Jeśli wysyłka objętego typu jest wstrzymana (Paused) lub nieaktywna (Inactive), kolejkuje wiadomości aż do restartu. Asynchroniczny sukces API potwierdza tylko poprawność struktury, a nie końcowe przetworzenie. Zakolejkowani subskrybenci mogą wygasnąć po trzech dniach, więc po restarcie definicji opóźnienie może zmienić się w utratę wiadomości.

Pierwsze 15 minut

  1. Upewnij się, że definicja Triggered Send objęta incydentem ma status Running lub Active.
  2. Jeśli ma status Running, a kolejka nie jest pusta, odczytaj przyczynę w Alert Manager i zidentyfikuj błąd, zanim zrestartujesz definicję.
  3. Każdy początkowy sukces asynchroniczny traktuj wyłącznie jako potwierdzenie poprawności struktury, a nie dowód końcowego przetworzenia.

Teraz

  • Jeśli definicja jest nieaktywna, uruchom ją lub zrestartuj i obserwuj kwalifikujące się wiadomości z kolejki.
  • Jeśli definicja ma status Running i jest w stanie błędu, usuń przyczynę wskazaną w Alert Manager, zanim zastosujesz sekwencję Stop, Publish, Start.

Najbliższe 24 godziny

  • Uzgodnij wyniki wywołań zwrotnych, zachowane dane żądań i odpowiedzi, rekordy RecipientSendId oraz NotSent extract dla okresu objętego incydentem.

Najbliższe 7 dni

  • Zadbaj, by końcowa obsługa wywołań zwrotnych oraz zachowywanie kompletnych żądań, odpowiedzi i dowodów RecipientSendId na stałe weszły do integracji Triggered Send.

Kontrole techniczne

Marketing / CRM

  • Sprawdź status definicji, stan kolejki oraz ewentualną przyczynę podaną przez Alert Manager dla wysyłki objętej incydentem.

Inżynieria

  • Uzgodnij wyniki asynchronicznych wywołań zwrotnych z zachowanymi żądaniami i odpowiedziami API oraz z wartościami RecipientSendId.
  • Skorzystaj z NotSent Data Extract, aby wskazać subskrybentów wykluczonych z wysyłki objętej incydentem.

Kryteria weryfikacji

  • Definicja utrzymuje status Running lub Active, a kontrolowane testy asynchroniczne dochodzą do końcowego wyniku wywołania zwrotnego.
  • Końcowe wywołania zwrotne wyjaśniają wszystkie początkowe sukcesy asynchroniczne i nie zostawiają niewyjaśnionych późniejszych awarii.
  • Sprawdzenia RecipientSendId i NotSent obejmują wszystkich subskrybentów objętych incydentem.

Kryteria eskalacji

  • Eskaluj sprawę, gdy definicja w statusie Running nadal ma kolejkę po usunięciu przyczyny w Alert Manager i wykonaniu udokumentowanej sekwencji restartu.
  • Przekaż wsparciu Salesforce wyniki wywołań zwrotnych, kompletne żądania i odpowiedzi, wartości RecipientSendId oraz dowody NotSent, jeśli te rekordy nie tłumaczą opóźnienia.

Zapobieganie

  • Za wynik przetwarzania uznawaj końcowe asynchroniczne wywołanie zwrotne, a nie początkową udaną odpowiedź.
  • Zachowuj wartości RecipientSendId i przeglądaj dane NotSent, aby wykluczonych subskrybentów dało się zdiagnozować.

Wpływ na biznes

  • Definicje wstrzymane (Paused) lub nieaktywne (Inactive) mogą pozostawić w kolejce wiadomości wyzwalane, które miały zostać wysłane.
  • Subskrybenci, którzy czekają w kolejce dłużej niż 72 godziny, po restarcie definicji mogą przejść w stan błędu.
  • Żądanie asynchroniczne może początkowo wyglądać na udane, nawet gdy późniejsze przetwarzanie się nie powiedzie.

Uwagi dostawcy

  • Salesforce stosuje trzydniową politykę wygasania wobec subskrybentów zakolejkowanych dla objętych typów Triggered Send.

Otwarte pytania

  • Ustalenie dokładnej przyczyny incydentu wymaga statusu Triggered Send w danym tenancie, stanu kolejki, wyników wywołań zwrotnych, rekordów NotSent oraz logów żądań i odpowiedzi.
Źródła (6)
  1. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberTriggered Send StatusSalesforce Marketing Cloud Engagement
  2. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberTriggered Send StatusSalesforce Marketing Cloud Engagement
  3. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberTriggered Send Status, running status with queued emailsSalesforce Marketing Cloud Engagement
  4. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberTriggered Send Status warningSalesforce Marketing Cloud Engagement
  5. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberAPI Call Troubleshooting, Asynchronous API CallsSalesforce Marketing Cloud Engagement
  6. Engagement - Marketing Cloud Engagement Triggered Send email (including Journey Builder sends) not sent to subscriberAPI Call TroubleshootingSalesforce Marketing Cloud Engagement

Jak SendGrid ponawia nieudane dostarczenie webhooka Inbound Parse?

Poziom ważności: Wysoki

SendGrid ponawia żądania POST Inbound Parse, które zwróciły odpowiedź 5xx; prawidłowe 2xx potwierdza dostarczenie i zatrzymuje ponowienia. Jeśli po trzech dniach wiadomość nadal nie zostanie dostarczona, SendGrid porzuca ją bez wcześniejszego powiadomienia. Na bieżąco sprawdzaj logi swojego endpointu, bo SendGrid nie wysyła żadnego alertu w panelu, a pierwotny nadawca nie dostaje odbicia (bounce) po nieudanym żądaniu POST.

Pierwsze 15 minut

  1. Przejrzyj logi samego endpointu pod kątem odpowiedzi 5xx i powtarzających się objawów prób dostarczenia, bo SendGrid nie wysyła alertu o awarii w panelu.
  2. Przywróć endpoint tak, aby przy przyjęciu dostarczenia zwracał prawidłowe 2xx — zanim upłynie udokumentowany trzydniowy termin porzucenia.

Teraz

  • Przywróć endpoint i zwracaj prawidłowe 2xx tylko wtedy, gdy faktycznie przyjmie dostarczenie Inbound Parse.

Najbliższe 24 godziny

  • Po przywróceniu usługi monitoruj w logach endpointu odpowiedzi 5xx i objawy ponawiania.

Najbliższe 7 dni

  • Przećwicz odzyskiwanie endpointu, aby zespół potrafił przywrócić prawidłowe przyjmowanie 2xx, zanim upłynie udokumentowany trzydniowy termin porzucenia.

Kontrole techniczne

Inżynieria

  • Potwierdź, że SendGrid wysyła przetworzone dane metodą POST na skonfigurowany adres URL Inbound Parse.
  • Oddziel prawidłowe potwierdzenia 2xx od odpowiedzi 5xx. Z udokumentowanej reguły dla 5xx nie wyciągaj wniosków o ponawianiu przy błędach 3xx, 4xx czy DNS.

Kryteria weryfikacji

  • Kontrolowane żądanie POST Inbound Parse otrzymuje prawidłowe 2xx i zostaje usunięte z kolejki ponawiania SendGrid.
  • Po przywróceniu monitoring endpointu pokazuje przyjęte dostarczenia i brak nawracających objawów ponawiania 5xx.
  • Lokalny monitoring wykrywa nieudane żądania POST, nie polegając na alercie w panelu SendGrid.

Kryteria eskalacji

  • Eskaluj sprawę do SendGrid, gdy endpoint przyjmuje już prawidłowe odpowiedzi 2xx, ale dostarczenia nadal są ponawiane albo zbliżają się do udokumentowanego trzydniowego terminu porzucenia; dołącz przy tym logi endpointu, bo w panelu nie ma żadnego alertu.

Zapobieganie

  • Na bieżąco monitoruj odpowiedzi 5xx z endpointu i przywracaj prawidłowe przyjmowanie 2xx, zanim upłynie trzydniowy termin porzucenia.

Wpływ na biznes

  • Wiadomości przychodzące, które po trzech dniach wciąż pozostają niedostarczone, zostają porzucone bez wcześniejszego powiadomienia.
  • Pierwotny nadawca nie dostaje odbicia (bounce), a operatorzy nie widzą w panelu SendGrid żadnego alertu o nieudanych żądaniach POST, co tworzy martwy punkt w monitorowaniu.

Uwagi dostawcy

  • Opublikowane zachowanie automatycznego ponawiania odnosi się wyłącznie do odpowiedzi 5xx i nie ustanawia uniwersalnej reguły dla błędów 3xx, 4xx czy DNS.

Otwarte pytania

  • Twilio nie publikuje dokładnego harmonogramu rosnących odstępów między ponowieniami w ramach udokumentowanego 72-godzinnego okna ponawiania.
Źródła (5)
  1. Understanding Inbound Parse Webhook Retry LogicAnswer, initial delivery attemptTwilio SendGrid
  2. Understanding Inbound Parse Webhook Retry LogicAnswer, HTTP status behaviorTwilio SendGrid
  3. Inbound Email Parse WebhookIntroductory retry paragraph and Info callout before SetupTwilio SendGrid
  4. Understanding Inbound Parse Webhook Retry LogicImportant Note on NotificationsTwilio SendGrid
  5. Inbound Email Parse WebhookIntroductory retry paragraph and Info callout before SetupTwilio SendGrid

Czy pocztę wychodzącą opóźnia incydent usługi Postmark?

Poziom ważności: WysokiWstrzymanie wysyłki: Wstrzymaj warunkowo

Nie zakładaj incydentu obejmującego całą usługę Postmark wyłącznie na podstawie opóźnionej poczty: sprawdź ponownie aktualny status na żywo i przeanalizuj w Activity wiadomości, których dotyczy problem. Status Queued oznacza, że Postmark przyjął wiadomość, ale jej nie wysłał — może to wskazywać na kłopoty po stronie dostawcy albo na wstrzymanie konta lub strumienia (Message Stream). Wiadomości Processed lub Delayed mogą z kolei odzwierciedlać zachowanie serwera odbiorcy, więc zanim zmienisz wysyłkę, wyizoluj wzorzec.

Pierwsze 15 minut

  1. Sprawdź ponownie oficjalny status na żywo Postmark, ponieważ stan operacyjny odnotowany 2026-07-17 może się zmienić.
  2. W Postmark Activity zaklasyfikuj reprezentatywne wiadomości objęte problemem jako Queued, Processed lub Delayed.

Teraz

  • Zanim wyślesz do tego strumienia kolejne wiadomości, potwierdź i usuń ewentualne wstrzymanie konta lub Message Stream.

Najbliższe 24 godziny

  • Oddziel przypadki Processed lub Delayed po stronie serwera odbiorcy od przypadków Queued w Postmark, aby każdym zajęła się odpowiedzialna za niego strona.

Najbliższe 7 dni

  • Udokumentuj opartą na Activity ścieżkę decyzyjną, która odróżnia wiadomości Queued od Processed lub Delayed.

Kontrole techniczne

Inżynieria

  • Sprawdź oficjalny bieżący status oraz wyświetlane komunikaty o nieplanowanych incydentach.

Dostarczalność

  • Przeanalizuj w Activity wzorce statusów Queued, Processed i Delayed w rozbiciu na Message Stream i domenę odbiorcy.
  • Przy wiadomościach Delayed odróżnij udokumentowany wzorzec ponowień dla większości domen od domen o innej częstotliwości lub innym czasie ponawiania.

Kryteria weryfikacji

  • Bieżący status na żywo i wyświetlane komunikaty o nieplanowanych incydentach są spójne ze wszystkimi objętymi problemem wiadomościami, które w Activity wciąż mają status Queued.
  • Wiadomości objęte problemem nie mają już statusu Queued, gdy zostanie usunięta przyczyna po stronie konta, Message Stream lub dostawcy.

Kryteria eskalacji

  • Jeśli bieżący status i Activity nie tłumaczą opóźnienia, sprawdź najpierw lokalne logi wysyłek, a potem skontaktuj się ze wsparciem Postmark, podając link do objętej problemem wiadomości w Activity.

Zapobieganie

  • Monitoruj oficjalny bieżący status oraz wyświetlane komunikaty o nieplanowanych incydentach.
  • Zachowuj linki do Activity i lokalne dowody wysyłek, aby niewyjaśnione przypadki dało się eskalować, wskazując konkretną wiadomość objętą problemem.

Wpływ na biznes

  • Wiadomości w kolejce (Queued) Postmark już przyjął, ale wciąż ich nie wysłał, co opóźnia zaplanowaną komunikację.
  • Wiadomości Processed lub Delayed może wstrzymywać lub tymczasowo odrzucać serwer odbiorcy, a nie incydent obejmujący całą usługę Postmark.

Uwagi dostawcy

  • Dla wiadomości Delayed Postmark ponawia próby do większości domen co 10 minut przez maksymalnie 12 godzin, ale w części domen częstotliwość i czas ponawiania są inne.

Otwarte pytania

  • Bez linków do Postmark Activity, logów wysyłek i danych o bieżącym statusie nie da się ustalić przyczyny właściwej dla danego użytkownika ani tego, czy po weryfikacji opóźnienie nadal występuje.
Źródła (6)
  1. Postmark Status API - current status responseLive JSON page.state and page.state_textPostmark
  2. Postmark Status APISimple Overview and List NoticesPostmark
  3. Why didn’t this recipient receive my messageInterpreting the message events, QueuedPostmark
  4. Why didn’t this recipient receive my messageInterpreting the message events, Processed and DelayedPostmark
  5. Why didn’t this recipient receive my messageInterpreting the message events, DelayedPostmark
  6. Why didn’t this recipient receive my messageFinal escalation paragraphPostmark
Wojtek BlazalekWojtek BlazalekEkspert ds. dostarczalności e-mail

Masz incydent z pocztą? Pomagam zespołom przywrócić dostarczanie, reputację i uwierzytelnianie do normy.

Praktyczna praca nad dostarczalnością dla firm wysyłających na dużą skalę

Umów bezpłatną rozmowę diagnostycznąZobacz usługi
Umów bezpłatną rozmowę diagnostyczną