Chandler's strength & conditioning home. See this week's classes and grab your first session below.
Everything below lives on zone6fitness.com — but the schedule & join-class flow is the embedded FitProTracker widget. A new lead never leaves the gym's site to book.
Paste one snippet — no developer needed. The location key tells the widget which gym/location to show (it can't read that from the gym's own domain, so we pass it in).
Simplest & sandbox-safe. Works on Wix / Squarespace / WordPress. Auto-resizes to fit — no inner scrollbar (the widget reports its height; the 1-line listener sets it).
Renders inline (no iframe box). Mirrors our existing fpt-journey.js loader.
| Option | Gym drops | Effort | Reuses today | Net-new |
|---|---|---|---|---|
| 1 · iframe (recommended) | <iframe> | M · ~1–1.5d | calendar (anonymous), single-route SPA | /embed/calendar route (strip chrome) · location+token param · CORS · iframe auto-resize |
| 2 · script insert | <script> | XL · ~2–3d | fpt-journey.js precedent | standalone widget bundle (AngularJS single-app-per-page friction) · UMD loader |
| 3 · hosted page | a link | S · ~0.5d | subdomain multi-tenant already works | book.fitprotracker.com/{gym}/calendar route — no embed, just link to it |
Key constraint: on the gym's own domain we can't derive the tenant from the URL (no *.fitprotracker subdomain), so the location key (+ signed token) is passed in the snippet. Payment stays PCI-safe by using the hosted-iframe checkout (SAQ) — card data never touches the gym's page. Height/scroll is handled by iframe-resizer (v4 MIT here; v5 needs a paid commercial license for closed-source embeds) — works on desktop & mobile, no inner scrollbar. Feasibility detail: build spec §I.