Webhooks Overview
Get notified when things happen in Rhumby
Webhooks
Webhooks let you receive real-time HTTP notifications when events occur in Rhumby. Instead of polling the API, register a URL and we'll POST data to it.
How it works
- You register a webhook URL for your organization
- You select which event types you want to receive
- When something happens (results published, registration created, etc.), we send a POST request to your URL
- Your server processes the payload and returns a 200 status
Event types
| Event | Description |
|---|---|
results.published | Race results have been finalized and published |
results.updated | Published results were corrected |
registration.created | A new boat registered for an event |
registration.cancelled | A registration was cancelled |
race.started | A race has started (status changed to started) |
race.finished | A race has finished |
race.abandoned | A race was abandoned |
protest.filed | A new protest was filed |
protest.decided | A protest hearing decision was made |
event.published | An event was published (draft to published) |
event.completed | An event was marked as completed |
Payload format
All webhook payloads follow this structure:
{
"id": "wh_evt_abc123",
"type": "results.published",
"timestamp": "2026-03-29T18:30:00Z",
"organization": {
"id": "org_123",
"slug": "sarasota-sailing-squadron"
},
"data": {
"eventSlug": "friday-night-spring-2026",
"raceId": "race_456",
"raceNumber": 5,
"fleetName": "PHRF Spinnaker",
"resultsCount": 9
}
}Failure Handling
Rhumby delivers each webhook event once with a 5-second timeout. If your endpoint:
- Returns a non-2xx status code
- Times out (>5 seconds)
- Fails to connect
...the delivery is considered failed and the webhook's consecutive failure count increments.
After 10 consecutive failures, the webhook is automatically deactivated. You can reactivate it from the dashboard. On successful delivery, the failure count resets to 0.
Note: Automatic retry support (exponential backoff) is planned for a future release. For now, ensure your endpoint returns 200 quickly (within 5 seconds) and processes events asynchronously if needed.
Setting up a webhook
curl -X POST https://rhumby.com/api/v1/webhooks \
-H "Authorization: Bearer rhb_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhooks/rhumby",
"events": ["results.published", "registration.created"]
}'