---
title: Webhook Best Practices
description: Best practices for consuming Capawesome Cloud webhooks — respond fast, verify signatures, and handle duplicate deliveries.
---

# Best Practices

A few patterns make your webhook endpoint reliable:

- **Respond `2xx` quickly, process asynchronously.** Acknowledge the request as soon as you've received it, then do any slow work (notifications, database writes) in the background. Slow endpoints risk being marked as failed.
- **Verify the signature.** Configure a signing secret and [verify the `X-Signature`](securing.md) on every request so you only act on authentic payloads.
- **Handle duplicates.** Treat deliveries as at-least-once: a resend or retry can deliver the same event more than once. Use the event's `id` to make your processing idempotent.
- **Use the right format.** For chat notifications, use the [Slack](../integrations/slack.md), [Discord](../integrations/discord.md), or [Microsoft Teams](../integrations/microsoft-teams.md) format instead of parsing `Raw` yourself.
- **Inspect failures.** When something goes wrong, the [delivery log](delivery-and-retries.md) shows the exact request and response so you can debug and resend.
