← Back to Guides
How to Manage Teams and Invite Participants
The Manage Teams control panel allows trip organisers to establish competing team structures, invite participants via secure email workflows, configure organiser statuses, and manage read-only guest access for a specific race event.
Step 1: Open the Team Management Dashboard
- Select your active trip context from the global Trip Selector dropdown in the navigation header.
- Open the sidebar navigation menu and select Manage Teams under the Trip Setup section.
- To protect active workflows, entering this console locks the global trip selector to prevent accidental data desynchronisation while edits are in progress.
Step 2: Customise the Leg Participation Mode
Trips feature a flexible parameter to control how teams compete across different stages of the itinerary:
- Uniform Mode (Same teams for each leg): Teams remain unchanged throughout the entire event. This is the default option and hides unnecessary complexity.
- Granular Mode (Different teams per leg): Toggle this option on if you require leg-by-leg control over team compositions, allowing participants to dynamically join, switch, or leave teams at different checkpoints.
Step 3: Manage Competing Teams
Organisers can manage the team grid natively inline within the dashboard view:
- Add a New Team: Click the Add New Team action link to inject an empty team card into your active trip grid.
- Team Names & Branding: Type your chosen team title directly into the solid black input field. Click the integrated MediaUpload block on the card to assign a custom team avatar or logo, which will be saved securely to the cloud directory.
- Delete a Team: Click the Delete Team button inside any team card to remove it from the active lineup.
Step 4: Invite Team Participants via Email
To add members to a specific team card:
- Locate the participant list area on the target team card and click to add an entry.
- Input the participant's Email Address along with an optional Display Name.
- Identity Resolution Engine: When you add an email, the system automatically runs a server-side lookup:
- If the email matches an existing registered user, their canonical profile metadata (UID, display name, and avatar) is instantly linked.
- If the email is unregistered, the system automatically creates an unauthenticated Placeholder Profile with a unique inviteToken.
- An automated, branded email containing a secure setup link will be dispatched via the platform's SMTP relay, allowing the invited user to claim their placeholder profile seamlessly upon first sign-up.
Step 5: Configure Guest Access (Read-Only)
If you want to grant third-party observers (such as friends, family, or sponsors) real-time visibility without write permissions:
- Locate the Trip Guests log section on the dashboard.
- Open the Add Guest dialogue form and enter the guest's email address.
- The system will issue a dedicated server action to assign a read-only 'guest' role to that email string for this trip. Guests can see overall dashboards and logs but are securely blocked from modifying race data.
Step 6: Commit Your Grid Changes
- Once you have completed your inline team creations, edits, or removals, click the Save button located in the global dashboard navigation header at the top right.
- Atomic Master Save: The system executes a high-privilege Firestore batch operation to recursively sanitise your payloads, strip out any malformed data, and atomically synchronise all roles and team rosters across the database collections.
- Exiting Master Edit Mode automatically unlocks your global trip selector header.
💡 Data Integrity Notes
- Roster Self-Healing: The platform enforces strict type-safety boundaries. If a team list experiences malformed array data, UI components automatically fall back to reading the raw keys of your team membership maps, ensuring that participant rosters remain visible and accessible to organisers under all network conditions.
- Zombie Account Pruning: To keep the user directory immaculate, deleting an unverified participant from their final team layout automatically triggers a background cleanup action that prunes and deletes the orphaned placeholder document entirely.