Phase Handover — Experience 11.6 Forms, Surveys & Appointments
Metadata
| Field |
Value |
| Phase ID |
experience-11.6 |
| Title |
Forms, Surveys & Appointments |
| Status |
Complete |
| Service(s) |
experience (experience_db) |
| Version |
0.11.6.0 |
| Date |
2026-07-26 |
| ADR(s) |
ADR-016 |
Discovery Summary
Phase 11.5 delivered locale bindings and Storage-only media refs. Tenants still lacked form/survey definition shells and appointment page booking-ref surfaces. This phase adds those shells while keeping CRM contact and vertical scheduling ownership outside Experience.
Reusable Components
| Component |
Location |
Reuse notes |
| Forms + submissions |
app/models/forms.py, app/services/forms.py |
Active-only intake; payload refs not CRM IDs |
| Surveys + responses |
same |
Mirrors form intake pattern |
| Appointment pages + booking refs |
same |
external_booking_ref unique per page; no calendar engine |
| Policies / validators |
app/policies/forms.py, app/validators/forms.py |
Status transitions; forbid ownership keys in JSON shells |
Public APIs
| Path |
Permission |
/api/v1/forms, /api/v1/form-submissions |
experience.forms.* |
/api/v1/surveys, /api/v1/survey-responses |
experience.surveys.* |
/api/v1/appointment-pages, /api/v1/appointment-booking-refs |
experience.appointments.* |
Events
experience.form.* · experience.form_submission.* · experience.survey.* · experience.survey_response.* · experience.appointment_page.* · experience.appointment_booking_ref.*
Known Limitations
- No SEO/PWA publishing (11.7)
- No native scheduler / CRM write-back
- Submission processing is status-shell only (no background workers in this phase)
Migration Notes
| Item |
Detail |
| Alembic |
0007_phase_116_forms_surveys_appointments (head) |
| Upgrade |
alembic upgrade head |
| Breaking |
None (additive) |
Next Phase Entry
| Field |
Value |
| Next phase |
experience-11.7 — Publishing, Domains, SEO & PWA |
| Entry docs |
This handover + experience-phase-11-6.md |