Start
Pre-Fill
Sign
Users
Checkout
Ready to begin?
This will take a few minutes. You’ll complete the form, sign the agreement, add users, then purchase workbooks.
Begin Onboarding
By continuing, you agree to complete all steps (form, agreement, user setup, workbook checkout).
Pre-Agreement Form
Please complete the form below. Once submitted, click “Continue to Agreement”.
Back
Continue to Agreement
If you need to edit anything after submitting, just reopen the form below and resubmit.
Sign the Training Agreement
Click below to open your agreement in a new tab. After signing, you’ll be redirected to the Users step.
Open Agreement
Back
Tip: If you don’t see the Users step after signing, make sure Zoho Sign is set to redirect to
?step=3 .
Create Users
Add every attendee who needs access. Workbooks are required for everyone.
Back
Continue to Checkout
Checkout
We’ll take you to Stripe to purchase your workbooks.
Proceed to Secure Checkout
After checkout, you’ll receive a confirmation email and shipping details.
Back
If the form looks cut off, add the small “auto-height” script to the Zoho form (instructions included below in the code comments).
//
// Without this, we cannot reliably remove iframe scroll while showing the entire form (cross-domain limitation).
window.addEventListener("message", (event) => {
const data = event.data;
if (!data || typeof data !== "object") return;
if (data.type !== "SXS_ZOHO_HEIGHT") return;
if (!zohoIframe) return;
const h = Number(data.height || 0);
if (!h || h < 300) return;
zohoIframe.style.height = (h + 40) + "px";
if (zohoStatus) zohoStatus.textContent = "Form loaded.";
});
// Fallback: if no postMessage arrives
if (zohoIframe && zohoStatus) {
zohoIframe.addEventListener("load", () => {
zohoStatus.textContent = "Form loaded.";
});
}
// ======================
// INIT
// ======================
renderUsers();
// Read step from URL (used for Zoho Sign redirect to step 3)
const stepParam = new URL(window.location.href).searchParams.get("step");
const initial = stepParam ? Number(stepParam) : 0;
goTo(Number.isFinite(initial) ? initial : 0);
// Start with Zoho block hidden until Step 1
if (zohoBlock) zohoBlock.style.display = (state.step === 1) ? "" : "none";
})();