# FAQ (/docs/developer-resources/guides/webhook/faq)

## General

### How many webhooks can I create?

There is no documented limit in the UI. If you hit a limit, you will see an error when
creating. For high volume, consider consolidating events into fewer webhooks.

### Can I use the same URL for multiple webhooks?

Yes. Each webhook has its own secret or public key. Use the signature to verify which webhook
sent the request, or include identifying data in custom headers.

### Can I change the webhook URL after creation?

The UI does not expose URL editing. Use the API (PATCH) if the backend supports it. Otherwise,
create a new webhook with the new URL and delete the old one.

### Do webhooks work in test mode?

Yes. Webhooks behave the same in test and production.

### Why can't I create, enable, disable or delete a webhook?

Managing webhooks needs access to the Developer section of the Space. If the buttons are
missing or disabled, ask your Space administrator for access. If you have access, reload the
page: an expired session can also disable the controls.

## Testing and development

### How do I test webhooks if I cannot use localhost?

Use a tunnel (for example ngrok or localtunnel). See [Testing locally](/docs/developer-resources/guides/webhook/testing-locally).

### Can I temporarily disable a webhook without deleting it?

Yes. Click Disable on the webhook details page. Re-enable when ready.

### How do I trigger a test event?

Perform the action that produces the event (for example create a payment). Use Replay to
resend a past delivery without redoing the action.

## Verification and security

### Which verification method should I use?

HMAC-SHA256 for most cases. ECDSA P-256 when you need non-repudiation or prefer not to share a
secret.

### My signature verification fails. The payload looks correct.

Use the raw request body. Parsing and re-serializing can change the body. See
[Verification and security](/docs/developer-resources/guides/webhook/hmac-verification).

### Can I use both HMAC and ECDSA?

No. Each webhook uses one verification method. Create separate webhooks if you need both.

### Where is the signature header?

Both methods use `monime-signature` with the same
`t=<timestamp>,v1=<base64-signature>` value layout. Both methods sign
`timestamp_rawBody`; only the verification algorithm differs.

## Deliveries and retries

### How many times will Monime retry a failed delivery?

Retry count and intervals depend on the backend. Check the delivery detail sheet (Retry Window
Ends At) for the policy.

### What HTTP status should I return?

Return 2xx (for example 200 or 202). Any other status triggers retries.

### Do events arrive in the order they happened?

Not necessarily. Retries mean a later event for the same resource can arrive before an earlier
one. Use the event timestamp, or fetch the resource's current state from the API, rather than
relying on arrival order.

### A delivery has shown Scheduled for a long time. Is something wrong?

Scheduled means Monime is waiting to retry, with a longer delay after each failure. It is
normal while your endpoint recovers. If retries keep failing, the delivery ends as Failed:
fix the cause and replay it.

### Will I receive the same event more than once?

Yes. Retries and replays can send the same logical event again. Use the event ID for
idempotency. See [Events and payloads](/docs/developer-resources/guides/webhook/structure-and-events).

### How long are delivery logs kept?

Each delivery has a retention TTL (for example 7 days). After that, the log is deleted.

## Events and payloads

### Where can I see the list of available events?

Select an API release when creating a webhook. The Release Events section lists all events for
that release.

### Can I subscribe to all events?

Select all events in the list when creating the webhook. There is no subscribe to all shortcut.

### What if an event is added to a release later?

New events may appear in backward-compatible releases. You must edit the webhook (or create a
new one) to subscribe to them.

### What is the Object ID?

The ID of the resource that triggered the event. Use it to correlate deliveries with API
resources and to filter deliveries in the UI.

## Alerts and notifications

### When will I receive a failure alert email?

When deliveries fail repeatedly. A single failure may not trigger an alert.

### I added alert emails but never received one.

Check spam or junk folders. Confirm the webhook had failures in Event Deliveries.

### Can I use a webhook or Slack instead of email for alerts?

The UI supports email only. Custom notification channels require a separate integration.

## Limits

### What are the limits?

| Item               | Limit                          |
| ------------------ | ------------------------------ |
| Custom headers     | Up to 10 per webhook           |
| Alert emails       | Up to 2 per webhook            |
| HMAC secret length | 32 to 100 characters           |
| URL                | HTTPS only; no localhost or IP |

See [Limits and quotas](/docs/developer-resources/guides/webhook/limits-and-quotas) for more detail.

## When to contact support

Contact support when:

- You have followed the docs and the issue persists.
- You see an error not covered in [Troubleshooting](/docs/developer-resources/guides/webhook/troubleshoot).
- You need clarification on API behavior (retries, timeouts).
- You suspect a bug in the webhook service.

Before contacting support, collect:

- The webhook name and ID
- The event or delivery ID of a failed delivery, and its timestamp
- The HTTP code shown in the delivery detail sheet, and the error message
- Relevant logs from your server, and the steps to reproduce
