What it covers
Two populations, one durable record: the athletes who participate, and the adults around them.
For athletes
- Waivers and releases, including drawn signatures
- Concussion acknowledgement
- Health history questionnaires and medical consent
- Allergy, medication and treatment authorization
- Immunization records and physical-exam forms (document upload)
- Emergency contacts
- COPPA parental consent for under-13s
For coaches, staff and volunteers
- Background checks
- Credential and certification records
- Safe-sport training status
- A single cleared/not-cleared answer you can gate on
Durability is the point
A cleared athlete or staffer carries their clearance with them. A parent who already uploaded a physical exam for one camp doesn't upload it again for the next — even at a different organization. If you rebuild this yourself, you re-collect documents your users have already provided.
Durable isn't permanent. Credentials can expire — background checks and certifications usually do — and an expired one stops counting as cleared, including in the coach pool. Read status live; don't cache a flag.
Your options
Most partners never integrate this directly — it arrives free with Registration & Checkout. The API exists for the case where clearance is the only thing you want.
| Way | Status | What you get | What you build |
|---|---|---|---|
| Hosted | Live | Clearance collected inside our checkout, parent portal and mobile app. Requirement sets configured per organization. | Nothing. |
| Embedded / SDK | Planned | A hosted clearance flow you open from your own UI, signalling completion back to you. | A button and a completion handler. |
| API | Preview | Put a person into clearance and read their status, or take a webhook when it resolves. | Your entire clearance UI and status handling. |
Hosted
We render the clearance experience inside surfaces the user is already in — our checkout, the parent portal, and the mobile app.
Built into registration Live
If you're using Registration & Checkout in any form, clearance comes with it — there is nothing to integrate. This is the path almost every partner takes.
| Where it happens | Status | What the user does |
|---|---|---|
| Inside the checkout drawer | Live | Requirements are collected during registration — waivers signed, health forms filled, documents uploaded. |
| Inside the parent portal | Live | Anything skipped at checkout is finished afterwards on the athlete's Passport tab, with a clear list of what's outstanding. |
| In the TGG mobile app | Live | Parents and staff complete and review their Passport on iOS and Android. |
What you control
- The requirement set — which credentials an event demands, configured per organization and per event.
- Acceptance strictness — a policy can be informational, a checkbox, or a drawn signature.
-
Whether it's visible at all —
hideAthleteRequirementsswitches the surfaces off if your own process already covers compliance.
Requirement configuration is done by us on your organization record, not passed per request. Tell us what you need collected and we'll set it.
Embedded / SDK
Not built yet — the intended shape is a hosted clearance flow you open from your own UI.
Clearance embed Planned
Not built yet. Documented here so you can tell us whether this is the shape you want before we build it.
The intended design, matching how the checkout drawer already works:
- A button in your UI opens the TGG-hosted clearance flow — an iframe overlay on web, an in-app browser on mobile.
- The user signs, fills and uploads on our screens, so document handling, storage and retention stay on our side of the line.
-
We signal completion back to your page with the same
postMessagepattern as the checkout drawer, or to your server by webhook. - On mobile, a universal/app link returns the user to your app.
Until this exists, the two working options are clearance built into registration or the clearance API.
API
Server-to-server. Put a person into Clear2Join, then read their status or take a webhook when it resolves. Aimed at staff and volunteers rather than athletes — athlete clearance is collected inside registration.
Candidate clearance Preview
Uses the Partner API key and scopes — the same credential as Staffing. See auth models for how to send it.
| Method | Path | Scope | Purpose |
|---|---|---|---|
POST |
/api/v1/partner/candidates |
candidates:write |
Invite someone into Clear2Join onboarding. |
GET |
/api/v1/partner/candidates |
candidates:read |
List everyone you've put into clearance. |
GET |
/api/v1/partner/candidates/:id |
candidates:read |
Read one candidate's clearance status. |
# externalRef carries your own id through, untouched.
curl -X POST "{API_BASE_URL}/api/v1/partner/candidates" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"email": "coach@example.com",
"firstName": "Alex",
"lastName": "Rivera",
"externalRef": "STAFF-8842"
}'
# → { "data": { "id": "…", "status": "invited", "invitedAt": "…", … } }
curl "{API_BASE_URL}/api/v1/partner/candidates/{candidate_id}" \
-H "Authorization: Bearer {API_KEY}"
Status moves invited → onboarding → c2j_cleared /
c2j_failed, or declined. Three
webhook events are defined against those
transitions — candidate.onboarding_started,
candidate.c2j_cleared and candidate.c2j_failed — but see the
status note below before you build a listener for them.
Status — read this before you build against it
The three endpoints and the status model are deployed in production, and inviting a candidate genuinely records them against your partner organization. Two things do not happen yet, and together they're why this is Preview:
Nothing is emailed. POST /partner/candidates creates the
candidate record; it does not send an onboarding invitation. Getting people actually
into the flow is a short coordination step with us per batch.
Nothing advances the status, so no candidate.* webhook fires.
A candidate keeps reading invited even after they complete Clear2Join
with us. Confirm with us for now — don't gate hiring on the status field or on a
delivery that isn't sent.
On the roadmap Planned
A standalone clearance API — submit an arbitrary person plus a requirement set, poll status or take webhooks, and render your own UI end-to-end.
This is where partner demand moves our roadmap fastest. If clearance is the thing you actually want and registration isn't relevant to you, tell us the requirement set you need and we'll shape it around that.
Complete integrations
Two shapes, depending on who you're clearing.
It comes with registration
LiveIf you're clearing athletes, there is no integration to do. Set up Registration & Checkout and clearance is collected as part of the booking.
-
Set up registration
Any of the four options on Registration & Checkout.
-
Tell us your requirement set
Which waivers, forms and documents each event demands, and how strictly each policy must be accepted. We configure it on your organization record.
-
Nothing else
Requirements appear in the drawer during checkout, and anything skipped is chased in the parent portal afterwards. Cleared athletes stay cleared for your next event.
Clear your own staff
PreviewIf you're clearing adults — coaches, volunteers, contractors — and want it tracked in your own system, use the candidate API.
-
Get a Partner API key with the candidate scopes
Ask for
candidates:writeandcandidates:read. See auth models. -
Push each person into clearance
Carry your own staff id through in
externalRef.cURLcurl -X POST "{API_BASE_URL}/api/v1/partner/candidates" \ -H "Authorization: Bearer {API_KEY}" \ -H "Content-Type: application/json" \ -d '{ "email": "coach@example.com", "externalRef": "STAFF-8842" }' -
Coordinate the onboarding invitation with us
This is the manual step that keeps the API at Preview — invitation delivery isn't automated yet, so we send them per batch with you.
-
Gate on the cleared status
GET /partner/candidates/:idis the read you'll gate on andcandidate.c2j_clearedis the event you'll take — but neither reflects real clearance yet (see the status note). For now, confirm the batch with us and treat this step as manual.
Already using Staffing? The same key covers both, and a cleared candidate is immediately hireable through the jobs API.