Client-facing confirmation emails now:
- use the PUBLIC port name ("Port Nimara" via ports.name), never the CRM
appName ("Port Nimara CRM") which is reserved for internal/staff surfaces
- mirror the website's wording verbatim ("Thank you for expressing
interest…", "Best regards,") and drop the CRM-style headings
- sign off per category: berth → "Port Nimara Sales Team", contact →
"Port Nimara Team", residential → "Port Nimara Residences Team"
- show + reply-to a public contact address, admin-configurable per category
(inquiry_contact_email → sales@ for berth/residence,
contact_form_contact_email → hello@ for contact form), never the noreply From
Internal alerts keep the CRM detail-line format + link (name fixed to
"Port Nimara"), EXCEPT the residential alert which drops all CRM mention
(it reaches an external recipient) and signs "- Port Nimara Residences".
sendEmail gains an optional per-message replyTo.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L2qc3xZTfif7N4Wq3QDa8X
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