Official Roster Invitation

Loading...

2026 Chaos Elite Fastpitch
Loading Roster Offer...

We're excited to officially offer you a roster position with Chaos Elite Fastpitch. Complete the onboarding steps below to officially join the team.

Complete Your Onboarding

Complete each step below to finalize your place with Chaos Elite and prepare for the upcoming season.

1Review the Player & Parent Agreement
2Submit the Player Acceptance Form
3Reserve Your Uniform Package
4Select Your Season Payment Option
(async function () { const API_URL = "https://script.google.com/macros/s/AKfycbzMvoiNtGVlduMJQuyghRbNEg5AzuUoNEWJQvg9v6862yCD2OhgK5ce6A0YornLASfQ/exec"; const FALLBACK_FORM_URL = "https://docs.google.com/forms/d/e/1FAIpQLSdVukGwuXjDxMjOBKUJpsfSM2pX6aPW-x8GlQlH3jZDByRg7g/viewform"; const params = new URLSearchParams(window.location.search); const portalId = params.get("id"); const playerName = document.getElementById("ce-player-name"); const ageGroup = document.getElementById("ce-age-group"); const status = document.getElementById("ce-status"); const welcomeCopy = document.getElementById("ce-welcome-copy"); const progressBox = document.getElementById("ce-progress-box"); const footerNote = document.getElementById("ce-footer-note"); const errorMessage = document.getElementById("ce-error-message"); function setStatus(text, background, color) { status.textContent = text; status.style.background = background; status.style.color = color; } function showError(title, subtitle, statusText, message) { playerName.textContent = title; ageGroup.textContent = subtitle; setStatus(statusText, "#3d1212", "#ffb0b0"); errorMessage.textContent = message; errorMessage.style.display = "block"; welcomeCopy.style.display = "none"; progressBox.style.display = "none"; footerNote.style.display = "none"; } if (!portalId) { playerName.textContent = "Welcome to Chaos Elite"; ageGroup.textContent = "Roster Portal"; setStatus("Missing Offer Link", "#3d2412", "#ffd39c"); errorMessage.textContent = "Please open this page using the personalized roster offer link included in your email."; errorMessage.style.display = "block"; welcomeCopy.style.display = "none"; progressBox.style.display = "none"; footerNote.style.display = "none"; return; } try { const response = await fetch( API_URL + "?id=" + encodeURIComponent(portalId) ); if (!response.ok) { throw new Error("Portal request failed."); } const data = await response.json(); if (!data.success) { showError( "Offer Not Found", "Chaos Elite Fastpitch", "Invalid Offer Link", "Please reply to your roster offer email if you believe this is an error." ); return; } const firstName = data.playerFirst ? data.playerFirst.toString().trim() : "Player"; const mobile = window.matchMedia("(max-width: 480px)").matches; playerName.textContent = mobile ? "Congrats, " + firstName + "!" : "Congratulations, " + firstName + "!"; ageGroup.textContent = "2026 Chaos Elite Fastpitch " + (data.ageGroup || "") + " Roster Offer"; setStatus( "Roster Offer Extended", "#123d20", "#9cffb5" ); welcomeCopy.innerHTML = "We're excited to officially offer " + firstName + " a roster position with Chaos Elite Fastpitch. " + "Complete the onboarding steps below to officially join the team."; window.playerAcceptanceForm = data.formUrl || FALLBACK_FORM_URL; } catch (error) { console.error( "Chaos Elite portal lookup failed:", error ); showError( "Unable to Load Offer", "Chaos Elite Fastpitch", "Connection Error", "Please refresh the page or try again shortly. You may also reply to your roster offer email for assistance." ); } })();

COMPLETE YOUR ONBOARDING PROCESS

(function () { const params = new URLSearchParams(window.location.search); const portalId = params.get("id"); const btn = document.getElementById("acceptanceBtn"); if (!portalId) { btn.href = "#"; btn.addEventListener("click", function(e) { e.preventDefault(); alert("Missing Portal ID."); }); return; } const formUrl = "https://docs.google.com/forms/d/e/1FAIpQLSdVukGwuXjDxMjOBKUJpsfSM2pX6aPW-x8GlQlH3jZDByRg7g/viewform?usp=pp_url&entry.1400839848=" + encodeURIComponent(portalId); btn.href = formUrl; })();

PAYMENT OPTIONS

Choose the payment plan that works best for your family