Skip to main content

Normal generation-event delivery

For subscribed generation events, BabySea attempts delivery and records the outcome in the delivery log shown on Webhook details. Each delivery attempt includes:
  • X-BabySea-Signature
  • X-BabySea-Event
  • X-BabySea-Timestamp
  • X-BabySea-Delivery-Id
  • A JSON body with the same event data

What causes another attempt

BabySea retries a delivery when your endpoint:
ConditionDescription
Non-2xx responseAny HTTP status outside the 200-299 range, including 3xx redirects
TimeoutYour endpoint does not respond promptly
Connection errorTCP connection refused, DNS failure, TLS handshake error
BabySea treats redirects as failures because only 2xx responses count as successful delivery.

Retry behavior

For generation events, BabySea retries failed deliveries for a limited period before marking the delivery as failed in the log.

Auto-disable

If a webhook endpoint continues to fail repeatedly, BabySea can disable it automatically to avoid repeated failed delivery attempts. When auto-disable happens:
What happensDetails
Webhook status changes to DisabledVisible as a red badge in your dashboard
Matching events can remain available for later redeliveryUse the dashboard to resume delivery when ready
No deliveries are attemptedUntil you re-enable the webhook
Once the endpoint is healthy again, re-enable it and review the delivery log before relying on it for new traffic.

Queued redelivery

When a webhook is unavailable, BabySea can keep eligible generation events available for later redelivery from the dashboard.
Queued events are not retained forever. Re-enable a disabled webhook and redeliver queued events promptly if they appear on the page.

Deliver queued events

After re-enabling a webhook, you can deliver all queued events from the webhook details page:
1

Re-enable the webhook

Toggle the status switch to Enabled on the Webhook details page.
2

Click Deliver queued events

A banner appears when there are pending queued items. Click Deliver queued events to start redelivery.
3

BabySea re-delivers queued items

Each queued event is sent with a fresh delivery ID, fresh timestamp, and a fresh HMAC signature. The original event payload is preserved.
Queued redelivery behavior:
BehaviorDetails
RetriesA fresh delivery attempt is created for each queued event
SignaturesFresh HMAC signature computed for each delivery
Delivery IDsNew UUID for each delivery (not the original)
Active webhook requiredYes. The endpoint must be enabled before drain can run
webhook.test is for manual verification only. Use Send test event when you want a fresh test delivery.

Replaying deliveries

You can manually replay a previous delivery from the Webhook events table on Webhook details.
PropertyValue
Delivery IDFresh UUID (not the original)
TimestampFresh ISO 8601 timestamp
SignatureFresh HMAC computed with current secret
PayloadOriginal webhook_data preserved exactly
RetriesCreates a new manual delivery attempt
Active webhook requiredYes
Replays are useful for:
  • Recovering from transient processing failures in your handler.
  • Testing changes to your webhook processing logic against real payloads.
  • Re-delivering events after fixing a bug in your endpoint.

Events table

The webhook details page includes the Webhook events table with these columns:
ColumnDescription
EventThe webhook_event value (e.g., generation.completed)
Generation IDThe generation_id from the payload
StatusHTTP response code from your endpoint, color-coded by outcome
ErrorError message if the delivery failed
AttemptsNumber of delivery attempts made
Delivered atThe recorded delivery timestamp
ActionsResend button for manual replay
Status codes are color-coded:
ColorMeaning
Green2xx success
Blue3xx redirect
Amber4xx client error
Red5xx server error
The page also supports search, batch selection, and export or copy actions.

Webhook statuses

A webhook can be in one of two statuses:
StatusBadgeDeliveriesQueued redelivery behavior
EnabledGreenActiveNot used
DisabledRedPausedEligible generation events can be redelivered later
A webhook starts as Enabled when created. It becomes Disabled in two ways:
CauseHow it happens
ManualYou toggle the status switch on the webhook details page
Auto-disableBabySea disables it after repeated delivery failures

Enable and disable

Toggle the status switch on the Webhook details page to enable or disable a webhook. Only Owner and Primary Owner roles can toggle status. When you disable a webhook:
  • BabySea stops delivering events to the endpoint immediately.
  • If no other active webhook can receive the event, eligible generation events can remain available for later redelivery.
  • The delivery log is preserved.
When you re-enable a webhook:
  • BabySea resumes delivering new events immediately.
  • A banner appears if there are pending queued items. Click Deliver queued events to send them.

Rotate secret

If your webhook secret is compromised or you want to refresh it on a regular schedule, generate a new secret from the webhook details page.
1

Open Webhook details

Navigate to the Webhook details page for the endpoint you want to update.
2

Click Rotate secret

Click Rotate secret. The dialog says the old secret will stop working immediately.
3

Copy the new secret

The new secret is displayed in a dialog:
whsec_x9Y8z7W6v5U4t3S2r1Q0p9O8n7M6l5K4
Copy this secret immediately. It is shown only once and cannot be retrieved later.
4

Update your environment

Replace the old secret in your environment variables and redeploy before any new events arrive:
.env
BABYSEA_WEBHOOK_SECRET=whsec_x9Y8z7W6v5U4t3S2r1Q0p9O8n7M6l5K4
When you rotate a secret:
What happensDetails
Old secret is invalidated immediatelyAll new deliveries use the new secret
There is no grace period where both old and new secrets are accepted simultaneously. Update your endpoint to use the new secret before BabySea sends the next event.

Send test event

Click Send test event on the Webhook details page to verify your endpoint is reachable and correctly verifying signatures.
PropertyValue
Event typewebhook.test
PurposeConfirm that your endpoint receives and verifies a signed delivery
Delivery resultLogged in the Webhook events table
webhook.test deliveries are logged in the Webhook events table, but they cannot be replayed from the row action. Use Send test event again instead.

Delete endpoint

Click Delete on the Webhook details page to permanently remove a webhook endpoint.
What is removedDetails
Webhook configurationURL, events, secret, status
All delivery logsFull event history for this endpoint
Queued delivery stateAny queued items associated with this endpoint
Deletion is permanent and cannot be undone. All delivery history and queued events are lost. If you only need to temporarily stop deliveries, use the disable toggle instead.