> ## Documentation Index
> Fetch the complete documentation index at: https://klipy.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Why did my webhook fail or retry?

> Klipy delivers webhooks through Svix, which retries failed deliveries with backoff. Inspect and replay attempts from the Svix App Portal inside Klipy.

Klipy delivers every webhook event through Svix, a third-party delivery service. Svix retries a failed delivery automatically with backoff, classifying each attempt as retryable (it keeps trying) or terminal (it stops). Inspect delivery history and replay a specific attempt from the Svix App Portal, embedded in Klipy's Settings → Webhooks — there's no separate Klipy log.

## What you'll see

Your endpoint stops receiving Klipy webhook events, receives them late, or you notice a specific event marked as failed or still retrying. Opening the Svix App Portal — embedded directly in Klipy's **Settings → Webhooks** page — shows a per-endpoint list of delivery attempts: the event type, the timestamp, the HTTP status your endpoint returned, and how many times Svix has tried.

An event stuck in a retrying state means Svix received an error response (or no response) from your endpoint and is still working through its retry schedule. An event marked failed or terminal means Svix has stopped trying — either it exhausted its retries, or your endpoint returned a response Svix treats as unrecoverable (for example, your endpoint no longer exists at that URL).

If webhooks stopped arriving entirely rather than failing individual deliveries, check that webhooks are still turned on for your organization — the **Webhooks enabled** toggle sits directly above the App Portal panel on the same **Settings → Webhooks** page.

<Frame caption="Screenshot coming soon: Svix App Portal delivery log, a failed/retrying attempt with status code">
  <div style={{padding:'2.5rem 1rem',textAlign:'center',border:'1px dashed currentColor',borderRadius:'12px',opacity:0.55}}>Screenshot coming soon</div>
</Frame>

## Why it happens

Klipy hands each event off to Svix once, and from that point Svix — not Klipy — owns delivery to your endpoint, including retry timing and backoff. Svix classifies every delivery attempt as either retryable or terminal:

* **Retryable** — your endpoint returned a transient error (a 5xx status, a timeout, a dropped connection) or was briefly unreachable. Svix keeps retrying with backoff until it either succeeds or exhausts its retry schedule.
* **Terminal** — your endpoint returned a response Svix won't retry (most 4xx responses), or the endpoint itself has been removed or disabled. Svix stops there and marks the delivery as failed.

Because Klipy relies on Svix as the system of record for delivery, a webhook that never shows up in the Svix App Portal at all (rather than showing as failed or retrying) usually means Klipy itself didn't hand that event to Svix in the first place — that's a separate, rarer case worth reporting to Klipy directly (see **When to contact us** below).

## What to do now

<Steps>
  <Step title="Open Settings → Webhooks">
    In the Klipy app, go to **Settings → Webhooks**. Confirm the **Webhooks enabled** toggle is on — a disabled toggle means Klipy isn't publishing any events to Svix for your organization, so nothing will arrive regardless of your endpoint's health.
  </Step>

  <Step title="Open the Svix App Portal">
    Scroll down on the same page to the embedded App Portal panel. Only workspace admins can view or manage it — if you're not an admin, ask one to check this for you.
  </Step>

  <Step title="Find the failing endpoint and inspect the attempt">
    Select your endpoint and open its delivery log. Each attempt shows the response status code and body your endpoint returned to Svix, which tells you whether the problem is on your side (server error, wrong URL, expired certificate) or something else.
  </Step>

  <Step title="Fix your endpoint, then replay the attempt">
    Once your endpoint is fixed — back online, URL corrected, error resolved — use the App Portal's replay action on the specific failed attempt to redeliver that event without waiting for Svix's own retry schedule.

    <Frame caption="Screenshot coming soon: Svix App Portal replay action, and the Webhooks enabled toggle">
      <div style={{padding:'2.5rem 1rem',textAlign:'center',border:'1px dashed currentColor',borderRadius:'12px',opacity:0.55}}>Screenshot coming soon</div>
    </Frame>
  </Step>

  <Step title="Verify the payload signature at your endpoint">
    Every delivery includes `svix-id`, `svix-timestamp`, and `svix-signature` headers. Verify these using a Svix client library at your endpoint — this confirms the payload actually came from Klipy's Svix application and hasn't been tampered with in transit. Signature verification happens entirely on your side; Klipy doesn't verify inbound requests, since it only ever sends webhooks, never receives them.
  </Step>
</Steps>

## When to contact us

Contact us if an event you expected never appears anywhere in the Svix App Portal — not even as a failed or retrying attempt — despite the **Webhooks enabled** toggle being on in Klipy's Settings → Webhooks. That specific pattern points to Klipy not having handed the event to Svix in the first place, which is a different problem from a delivery that reached Svix and then failed at your endpoint, and it needs a look on Klipy's side rather than yours. Also contact us if the App Portal panel itself won't load for an admin account, or shows an error instead of your endpoint list.

Before reaching out, have a few details ready: the event type you expected (for example `deal.closed` or `meeting.completed`), roughly when it should have fired, your endpoint URL, and whether the App Portal shows anything at all for that time window. Reach the Klipy team through Hey Klipy (the floating button, bottom-right of the app) or the "Message the founder" chat from Klipy's sidebar — both are free and read Klipy's documentation first, so they can usually tell quickly whether what you're seeing is expected Svix retry behavior or a Klipy-side gap that needs fixing.

<AccordionGroup>
  <Accordion title="What's the difference between a retryable and a terminal delivery failure?">
    Retryable means Svix got a transient error (a 5xx, a timeout, an unreachable endpoint) and keeps retrying with backoff. Terminal means Svix got a response it won't retry — most 4xx statuses — or the endpoint was removed, so Svix stops and marks the delivery failed.
  </Accordion>

  <Accordion title="Where do I see webhook delivery status if not in Klipy directly?">
    In the Svix App Portal, embedded in Klipy's Settings → Webhooks page. Klipy doesn't maintain a separate webhook delivery log of its own — the App Portal is the system of record for delivery status, retry history, and endpoint configuration.
  </Accordion>

  <Accordion title="Can I manually resend a specific failed event?">
    Yes. Open the failed attempt in the Svix App Portal and use its replay action. This redelivers that specific event to your endpoint immediately, rather than waiting for Svix's automatic retry schedule.
  </Accordion>

  <Accordion title="How do I verify a webhook actually came from Klipy?">
    Verify the `svix-id`, `svix-timestamp`, and `svix-signature` headers on every delivery using a Svix client library at your endpoint. This confirms the payload came from Klipy's Svix application and wasn't altered in transit.
  </Accordion>

  <Accordion title="Do I need to be a workspace admin to see the Svix App Portal?">
    Yes. The App Portal panel on Klipy's Settings → Webhooks page is visible only to admins. Non-admins see a message that only admins can view or manage webhook endpoints.
  </Accordion>
</AccordionGroup>
