Website register-interest form now offers the 3 residence types as a
multi-select; the choice + preferred-contact flow into the CRM inquiry
payload, the inbox detail, and the residential emails.
- inquiry inbox detail surfaces residence type(s), preferred contact,
type-of-interest, comments (full data capture)
- residential-inquiry emails: client confirmation names the chosen
villa(s); sales alert converted to the canonical detail-line format
(uniform with berth/contact) + residence type(s)/preferred contact +
plain-text part
- website-intake-fields parses residence_types[] + method_of_contact
- contact_form alerts split to their own recipient key
(contact_notification_recipients)
- Residential Interests section: new residence_type field (schema +
migration 0099, validators, inline select on the detail)
- contact-form-alert email refactor shipped (interest-alert style)
Tests: website-intake-fields, residential-inquiry templates,
contact-form-alert, residential-interest validators.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L2qc3xZTfif7N4Wq3QDa8X
Flag-gated (website_intake_email_enabled, default OFF) sending of registrant confirmation + staff alert for inquiries captured at /api/public/website-inquiries, reusing the branded berth + residential templates and adding contact-form client-confirmation + sales-alert templates. In-app (bell) notifications fire on every fresh capture, independent of the flag. Recipients resolve from the existing inquiry_/residential_notification_recipients settings; fires only on a fresh (non-deduped) insert so retries never re-send.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>