Skip to main content
Register an HTTPS endpoint and Hooper POSTs an event to it when a session finishes. The event carries the full session object, so a single delivery gives you the highlights, shots and box score.

Events

Registering an endpoint

The response includes "secret": "hws_prod_…"shown once, so store it now. Send a synthetic event to check your handler with POST /v1/webhook_endpoints/we_2/test.

Verifying signatures

Every delivery carries:
v1 is HMAC-SHA256(secret, "{t}.{raw_body}"). This is the same scheme Stripe uses, so an existing Stripe verifier works with the secret swapped. Verify before you parse, using the raw request body, and reject timestamps older than 5 minutes.

Delivery semantics

  • Acknowledge with any 2xx. Do it fast; process asynchronously.
  • At-least-once. Retries happen on any non-2xx or timeout (10 s): after 1m, 5m, 30m, 2h, 6h, 12h, 24h — eight attempts over about two days. Dedupe on the event id.
  • Auto-disable. An endpoint that has been failing for 7 straight days is disabled; re-create it when fixed.
  • Catch-up. Missed something? GET /v1/events?type=session.processed&created[gte]=… lists every event, newest first.

Endpoint requirements

Public https:// URL, no credentials in the URL, resolving to a public address. Private, loopback and link-local destinations are rejected at registration.