Webhooks
Webhooks are the preferred way to get data to AVA Golf, for rounds and sessions alike. They eliminate polling and give golfers near-instant access to what they just played.
{your_callback_registration_endpoint}Register a webhook URL where your system notifies AVA Golf of lifecycle events.
Lifecycle events
Section titled “Lifecycle events”| Event | Sent when | Requirement |
|---|---|---|
round.completed |
A round is finished and saved. | Required |
round.edited |
The user modifies a past round, e.g., corrects a score or moves a shot. | Strongly recommended |
round.deleted |
The user removes a round. | Strongly recommended |
session.completed |
A practice session is finished and saved. | Required |
session.edited |
The user modifies a past session. | Strongly recommended |
session.deleted |
The user removes a session. | Strongly recommended |
Payload styles
Section titled “Payload styles”Two payload styles are supported — choose whichever fits your architecture:
- Full payload: The webhook body contains the complete round (with holes and shots) or session (with all shots). Preferred when feasible.
- Notification + fetch: The webhook body contains the round or session ID (and optionally a callback URL); AVA Golf retrieves the full data via your REST endpoints. This is equally acceptable — it is how several of our production integrations work.
Signatures
Section titled “Signatures”Every payload should include an HMAC signature header (or equivalent) so we can verify it came from you.
Account webhooks
Section titled “Account webhooks”Strongly recommended.
Deregistration
Section titled “Deregistration”Notify us when a user disconnects their account so we can clean up authorization state promptly. We actively rely on this in production integrations.
Permission changes
Section titled “Permission changes”Notify us when a user changes data-sharing permissions so we can adjust our sync behavior.
Idempotency keys
Section titled “Idempotency keys”A nice-to-have: include an X-Idempotency-Key header on webhook payloads so we can safely
deduplicate retries without reprocessing.
Round trackers can also push a round hole by hole while it’s played; see live scoring.