# Proč byl můj endpoint webhooku vypnut?

> Emailit webhook vypne po 3 dnech nepřetržitých selhání doručení. Zjistěte, proč doručení selhávala, znovu endpoint zapněte a odešlete události znovu.

Tento článek vysvětluje, proč Emailit přestane posílat události na webhook, jak najít příčinnou chybu a jak získat zmeškané události zpět.

## Příznaky

- Dostali jste od Emailitu e-mail, že váš webhook selhává, a později další, že byl vypnut.
- Webhook má v **Email API → Webhooks** stav vypnutý a nové události už na váš endpoint nedorazí.
- Karta **Requests** na stránce webhooku uvádí požadavky se stavem **Failed** a mnoha pokusy.

## Příčina

Emailit považuje za úspěch jakoukoli odpověď `2xx`. Vše ostatní se počítá jako selhání, včetně:

- Stavových kódů `4xx` nebo `5xx`, například z kontroly podpisu nebo po pádu aplikace.
- Žádné odpovědi do **30 sekund**.
- **Přesměrování.** Emailit nesleduje `301` ani `302`, takže URL `http://`, které přesměrovává na `https://`, nebo chybějící lomítko na konci selžou pokaždé.
- Chyb DNS, certifikátu TLS nebo spojení.

Neúspěšné požadavky se opakují po 5 minutách, 30 minutách, 2 hodinách, 5 hodinách a pak každých 12 hodin, celkem až 11 pokusů. Když požadavek selže potřetí, Emailit pošle vlastníkovi workspace e-mail. Pokud endpoint selhává dál a **3 dny** neproběhne žádné úspěšné doručení, webhook se vypne a vlastník dostane další e-mail.

Dokud je webhook vypnutý, nové události se pro něj do fronty nezařazují.

## Řešení

1. **Najděte chybu.** Otevřete webhook a vyberte kartu **Requests**. Otevřete neúspěšný požadavek a uvidíte **Failure reason**, **Status code** a tělo odpovědi, které váš endpoint vrátil.

2. **Opravte endpoint.** Časté opravy:

   - Použijte konečnou URL s `https://` a přesnou cestou, aby nedocházelo k přesměrování.
   - Vracejte `200` rychle a pomalou práci dělejte v úloze na pozadí, abyste zůstali pod 30 sekundami.
   - Opravte ověření podpisu. Viz [Proč podpis webhooku nesouhlasí?](/cs/docs/kb/webhook-signature-mismatch/)
   - Povolte požadavky Emailitu ve firewallu, WAF nebo ochraně proti botům.

3. **Otestujte to.** Zvolte **Send test**, vyberte typ události a ověřte, že dialogové okno ukazuje stav `2xx`.

4. **Znovu zapněte a odešlete.** Zvolte **Retry failed**. Znovu zařadí do fronty všechny neúspěšné požadavky za posledních 7 dní a webhook znovu zapne. Můžete také vybrat **Enable webhook**, nebo zavolat [Opakování neúspěšných požadavků](/cs/docs/api-reference/webhooks/retry-failed/).

5. **Doplňte události z doby vypnutí.** Události vytvořené v době, kdy byl webhook vypnutý, se do fronty nezařadily. Načtěte je přes [Výpis událostí](/cs/docs/api-reference/events/list/) s filtrem podle `type` a `created_at`.

Aby byla obsluha odolná, udělejte ji idempotentní pomocí pole `event_id`, protože opakovaná dávka může dorazit dvakrát. Viz [Opakování a selhání](/cs/docs/webhooks/retries-and-failures/).

## Stále si nevíte rady?

[Napište podpoře](/contact/) nebo se zeptejte na [Discordu](https://discord.emailit.com) a uveďte ID webhooku (`wh_…`) a důvod selhání z karty **Requests**.

---
Zdroj: https://emailit.com/cs/docs/kb/webhook-endpoint-disabled/
