For Coaches
Coaching workflows
Join links deep dive (coach)
How permanent join links work: default vs vanity, expiry, caps, and switch-coach behavior.
What a join link is
A CoachJoinLink is a permanent URL that lets anyone sign up to your
roster, or lets an existing athlete switch their coach to you. The
URL pattern is yousuli.co/join/<slug>, where <slug> can be an
8-character random string or a vanity slug you choose (uclatri,
coach-jenny-spring, etc.).
Default link vs custom links
- Default link is created automatically the first time you visit
the Athlete join links page (
/coach/join-links/). The slug is
random and not editable. Use this as your stable evergreen link.
- Custom links are anything you create after that. You pick the
slug (3 to 40 characters, lowercase, digits, hyphens), and
optionally set an expiry date and a max signup cap.
What happens when someone clicks the link
The view at /join/<slug>/ is auth aware:
- Anonymous visitor: sees the signup form (first name, last name,
email, password, optional anthros). On submit, a new athlete
account is created and they are auto-added to your roster.
- Logged-in athlete already on another coach's roster: sees a
confirmation page explaining the switch (data stays, coach pointer
flips, premium cascade may apply). One click finishes the switch.
- Logged-in athlete already on YOUR roster: redirected to their
dashboard. No-op.
- Logged-in coach or admin: sees a friendly error explaining
that athlete join links are for athletes only.
Expiry and caps
- Expiry date is optional. After the date, the link returns the
"expired" invalid page.
- Max uses is optional. Once the cap is hit, new visitors see
the "capped" invalid page. Useful for "first 30 signups" promos.
- Revoke is permanent and is intended for compromised or stale
links. Revoked links return an "unavailable" page.
Rate limiting
The accept endpoint is rate limited to 30 requests per hour per IP
to defend against bot signups. Real human traffic is unaffected.
Premium cascade on coach switch
If a switching athlete had coach grant premium from the previous
coach, that grant ends when the relationship ends. Premium they paid
for directly is untouched. See
Switching coaches explained.