How it works
CrewPass continuously watches the data behind your fleet. When something relevant changes — a certificate finishes verifying, compliance flips, a status or profile updates — CrewPass builds the matching event and delivers it to the callback URL you registered. There is nothing to run on your side beyond an HTTPS endpoint that accepts aPOST, verifies the signature, and returns 2xx.
Two things worth knowing:
- You don’t poll. Events are pushed in near-real-time off CrewPass’s own change feed; you react to them.
- Delivery is at-least-once. The same event may arrive more than once (e.g.
after a retry), so deduplicate on
event_id.
Subscribing
During onboarding, CrewPass registers your callback URL, the events you want, and issues a webhook signing secret used to sign every delivery (this is separate from the request-signing secret used by the v2 write surface; v1 reads are not signed at all).The envelope
Every delivery is a JSON body with this shape:| Header | Value |
|---|---|
X-CrewPass-Event-Id | The event id (dedupe on this). |
X-CrewPass-Event-Type | The event type. |
X-CrewPass-Timestamp | Unix seconds at signing time. |
X-CrewPass-Signature | v1=<hex(hmac_sha256(secret, "{timestamp}." + raw_body))> |
X-CrewPass-Schema-Version | 1 |
Outbound signing differs from request signing
Verifying a delivery
Python
Node
Receiver requirements
- Verify the signature against the raw bytes.
- Deduplicate on
event_id— delivery is at-least-once, so the same event may arrive more than once. - Respond
2xxquickly and process asynchronously. - Anything else is retried with exponential backoff (up to 8 attempts), then
dead-lettered. A
4xx(other than408/429) is treated as a permanent rejection and not retried.
Event catalogue (v1)
| Event | Fires when | Scope required |
|---|---|---|
crew.document.processed | A certificate finishes processing & verification | crew:documents:read |
crew.document.updated | A document’s verification status changes | crew:documents:read |
crew.compliance.changed | A crew member’s compliance state changes | crew:compliance:read |
crew.status.changed | Verification or background-check status changes | crew:status:subscribe |
crew.profile.updated | A crew member updates their profile | crew:profile:read |
crew.document.processed / crew.document.updated
crew.compliance.changed
crew.status.changed
crew.profile.updated
The verification provider behind a background check or certificate is never named
in any payload — only the standardised, CrewPass-owned status vocabulary.