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 grepiac.com/join/<slug>, where <slug> can be an 8-character random string or a vanity slug you choose (uclatri, coach-jenny-spring, etc.).

Team binding (land athletes directly in a team)

By default a join link drops new athletes into your Unassigned bucket, and you move them into a team afterwards. To skip that step, bind the link to a team:

This is the recommended setup for a club or university squad: make one team-bound vanity link (e.g. grepiac.com/join/ucla) and post it. See Set up a club join link.

A safety re-check runs at signup time: if the bound team no longer belongs to you (you transferred it away, an assignment ended), the athlete falls back to Unassigned rather than landing in a team you can no longer see.

Shortcut: the New athlete page, opened in a team context (/coach/athlete/new/?team=<id>), surfaces a team-bound link for that exact team in its "share a link" callout, so you do not have to build one by hand.

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, landing in the link's bound team if it has one, otherwise in Unassigned.
  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. If the link is team-bound, the switch also moves them into that team and squad, consistent with the new-signup path.
  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 Jul 26, 2026

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

Ask a question