# Webhooks

**Last Updated:** 2025-01
**Confidence:** High

## Summary

Webhooks notify external systems when events occur in rdev. Subscriptions are created via API, and events are delivered with automatic retries.

**Key Facts:**
- Event types: `command.started`, `command.completed`, `command.failed`
- Retry policy: 3 attempts, 5s initial backoff, exponential
- Delivery history stored for debugging
- Worker pool (10 workers) for parallel delivery

**File Pointers:**
- Handler: `internal/handlers/webhooks.go`
- Dispatcher: `internal/webhook/dispatcher.go`
- Repository: `internal/adapter/postgres/webhook.go`
- Domain: `internal/domain/webhook.go`

## Subscription

```json
POST /webhooks
{
    "url": "https://example.com/webhook",
    "events": ["command.completed", "command.failed"]
}
```

## Event Payload

```json
{
    "event": "command.completed",
    "timestamp": "2025-01-15T10:30:00Z",
    "data": {
        "command_id": "cmd-123",
        "project": "my-project",
        "type": "claude",
        "exit_code": 0,
        "duration_ms": 5432
    }
}
```

## Related Topics

- [Command Execution](../features/command-execution.md)
- [Project Service](./project-service.md)
