For Coaches Coaching workflows

Join links deep dive (coach)

How permanent join links work: default vs vanity, expiry, caps, and switch-coach behavior.

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.).

The view at /join/<slug>/ is auth aware:

  1. 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.
  2. 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.
  3. Logged-in athlete already on YOUR roster: redirected to their dashboard. No-op.
  4. Logged-in coach or admin: sees a friendly error explaining that athlete join links are for athletes only.

Expiry and caps

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.

Last updated May 12, 2026

Still stuck? Ask us a question and we'll write up an answer.

Ask a question