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.).
/coach/join-links/). The slug is
random and not editable. Use this as your stable evergreen link.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:
/coach/join-links/, pick a team in the
Enrol new athletes into team dropdown (and, optionally, type a
squad label like Varsity or 2026 intake).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:
The accept endpoint is rate limited to 30 requests per hour per IP to defend against bot signups. Real human traffic is unaffected.
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.
Still stuck? Ask us a question and we'll write up an answer.
Ask a question