Task: Corsizio Integration Cleanup & Event Registration Redesign
Canadian Elite Volleyball Academy — Development Update • April 8, 2026
Task: Corsizio Integration Cleanup & Event Registration Redesign
Objective
Redesign the event system so Corsizio is the source of truth for registration and payments, while the Elite Volleyball Academy app handles event advertising, communication, athlete profiles, and community management. Clean up the people database and event sync to work reliably with this model.Current State
- 1 published academy event (Spring Indoor Girls Volleyball League), 35 people (14 with logins), 1 event registration
- 17 people have no (likely manually created or imported)
- Corsizio sync is working (10 total, 3 matched, 7 unmatched for NexGen Sessions Group 1)
- The app currently has its own full registration + Stripe payment flow that duplicates what Corsizio already does
- No Corsizio embed is used — registration links point to the app's internal flow
- The table is empty in production (import was likely done on the old DB)
Architecture Change
New Model: Corsizio = Registration, App = Everything Else
1. Events sourced from Corsizio: Sync Corsizio events → academy_events automatically. Keep them linked. 2. Registration via Corsizio embed: Instead of the app's internal registration form, embed Corsizio's registration form (iframe) or link directly to the Corsizio registration page. 3. Attendee sync: Background sync pulls attendees from Corsizio into , matches to , and auto-creates so the app has full visibility. 4. App provides: Event listing/advertising (upcoming events page), athlete/parent profiles, communication hub, coaching tools, evaluations, attendance tracking, league management — everything except the payment transaction itself.Implementation Plan
Phase 1: Event Sync Cleanup
Files: , ,1. Auto-sync events from Corsizio → academy_events - On import or periodic sync, update academy event fields (name, dates, price, location, description, spots/capacity) from the Corsizio event data - Add field to to store the direct registration link (e.g., ) - Add field for the registration form URL () - Add environment variable so embed/link URLs can be constructed
2. Event import improvements - When importing a Corsizio event, auto-populate more fields from the API: location details, price tiers, capacity ( include), description - Use for richer data - Store the Corsizio for accurate date formatting
3. Keep academy_events editable - Admins can still override descriptions, add long descriptions, set banner images, configure eligibility criteria - These "local enrichments" are preserved across syncs (sync only updates fields that are still at default/empty values, or a force-refresh option)
Phase 2: Registration Flow Redirect to Corsizio
Files: , ,1. Event detail page changes - For Corsizio-linked events: Replace "Register Now" button with either: - Option A (preferred): Embed Corsizio registration form via iframe using - Option B: "Register on Corsizio" button that opens the Corsizio registration page in a new tab - Keep the existing internal registration flow for non-Corsizio events (e.g., manually created academy events) - Show availability/spots from Corsizio stats data
2. Event listing page - Show all published academy events (both Corsizio-linked and manual) - Add a visual indicator for Corsizio-linked events (small badge) - "Register" CTA should direct to the appropriate flow
3. Preserve internal registration for non-Corsizio events - The existing Stripe-based registration still works for events created directly in the app - Only Corsizio-linked events redirect to Corsizio for registration
Phase 3: People & Data Cleanup
Files: , ,1. Improve email matching - When syncing attendees, also try matching by combination (fuzzy) when email doesn't match - Add admin UI to manually link an unmatched Corsizio registrant to an existing person (dropdown search) - When manually linking, run profile enrichment (phone, address, emergency contact)
2. Registration source tracking - Set for people auto-created via Corsizio sync - Clean up the 17 people with null — set to 'admin_created' or 'imported' - Add a one-time data cleanup migration
3. Duplicate detection improvements - Before creating a new person from Corsizio data, also check by phone number and name similarity - Add a "Potential Duplicates" panel in People admin showing pairs with similar names or matching emails/phones - Allow merge of duplicate records (transfer registrations, relationships, and role assignments)
Phase 4: Scheduled Sync Enhancements
Files: ,1. Full event refresh on sync - During the 4-hour scheduled sync, also refresh event metadata (capacity, current registration count) from Corsizio - Update from Corsizio attendee count - Update if Corsizio event capacity changed
2. New event auto-discovery - Optionally auto-import new published Corsizio events that don't have academy_event counterparts yet - Admin setting: "Auto-import new Corsizio events" (on/off) - New events come in as DRAFT status for admin review before publishing
3. Sync status dashboard - Add a sync overview to the Command Center showing: last sync time, events synced, total matched/unmatched across all events - Show sync health indicators (any failed syncs, API errors)
Environment Variables Needed
- — The Corsizio account subdomain (e.g., "canadianelite" or the account alias) for constructing embed/registration URLs
Key Decisions
- Corsizio handles: Registration forms, payment collection, refunds, waitlists
- App handles: Event discovery/advertising, athlete profiles, parent communication, coaching, evaluations, attendance, league management
- Sync direction: Corsizio → App (read-only from Corsizio API; app never writes back to Corsizio)
- Internal registration preserved: For events not on Corsizio (e.g., private lessons booked directly)
Acceptance Criteria
- [ ] Corsizio events auto-sync to academy_events with full metadata
- [ ] Corsizio-linked events show embedded registration form or link to Corsizio
- [ ] Attendee sync matches registrants to people and creates event_registrations
- [ ] Unmatched registrants can be manually linked by admin
- [ ] People with null registration_source are cleaned up
- [ ] Scheduled sync updates both attendees and event metadata
- [ ] Sync status visible in Command Center
- [ ] Non-Corsizio events still use internal registration + Stripe flow
Canadian Elite Volleyball Academy
elitevolleyball.training
No comments:
Post a Comment