Docs

attendance.absent

Preview· P9

Someone's rostered shift has ended and they didn't clock in, weren't on approved leave, and it isn't a public holiday your organisation observes. Agoo never says someone is absent before their shift ends: until then they're "not in yet" (the summary counts them as not_in_yet). It fires once per person and day, within a few minutes of the shift's end. A clock-in a manager adds afterwards turns the day back into a worked one; the event isn't withdrawn, so check the summary or the person's punches before acting on an old one.

Agoo sends this as a signed POST to every enabled endpoint subscribed to attendance.absent (or *). Verify the signature, return any 2xx within 15 seconds, and de-duplicate on webhook-id.

Header Parameters

webhook-id*string

The event's ID. It is the same on every attempt and redelivery, so use it to de-duplicate.

Match^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"evt_01m4ww0ezgf2bryg9gxb2gbewx"
webhook-timestamp*string

When this attempt was signed, in Unix seconds. Reject the request if it is more than 5 minutes from your clock.

Match^[0-9]+$
webhook-signature*string

One or more space-separated signatures, each v1,<base64>: the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{raw body}, keyed with the base64-decoded part of your whsec_ secret. During a secret rotation there are two. Accept the request if any one matches.

Request Body

application/json
  1. body

An event about a rostered shift that ended with no clock-in.

id*EventId

The event's ID. Webhook deliveries send it as webhook-id.

Match^evt_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"evt_01m4ww0ezgf2bryg9gxb2gbewx"
created_at*string

When the event happened.

Formatdate-time
organisation_id*OrganisationId

An organisation ID (TypeID with the org prefix).

Match^org_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"org_01kjpsrza0etzb0a4vf72x8ang"
livemode*boolean

false for events in test mode.

type*"attendance.absent"
Value in"attendance.absent"
data*

Response Body

Return any 2xx status within 15 seconds to acknowledge the event. Agoo ignores the response body, so acknowledge first and do slow work afterwards.

Example Requests

POST/attendance.absent