Email System
Overview
The Super Portal sends multiple categories of emails through SendGrid. The system includes sophisticated bounce handling, unsubscribe management, and delivery tracking to maintain high sender reputation and comply with email deliverability best practices.
Email Categories
All emails sent by the system fall into two categories:
Automated Emails:
- Market update emails (based on saved searches)
- Property suggestion emails
- Monthly stats digests
- Tour property change alerts
- Task notification emails
Manual Emails:
- Agent-composed emails via the SP email modal
- CMA delivery emails
- Search share emails
- Tour share emails
One-Click Unsubscribe
Non-transactional emails include a one-click unsubscribe mechanism, implemented per SH Consulting's deliverability recommendations. This is a header-level unsubscribe (List-Unsubscribe) that major email providers (Gmail, Outlook) surface as a native unsubscribe button.
Unsubscribe Logic
Unsubscription is scoped to the relationship between a person and an agent:
Person > Agent scope:
- When a person unsubscribes, their email is marked as unsubscribed for that specific person-agent relationship.
- If the agent changes (client is reassigned), the person will receive emails from the new agent.
Relation > Agent scope:
- When a relation (e.g., a specific client record) unsubscribes, the unsubscribe applies to that relation-agent pair.
Different email types have different unsubscribe behavior. Automated emails and manual emails are treated separately for unsubscribe purposes. Transactional emails (deal-related, task-related) are not subject to marketing unsubscribe preferences.
Bounce Handling
The system classifies bounces and handles them differently:
Hard Bounce:
- The email address is permanently invalid.
- The address is removed from future email sends.
- The bounce is recorded in the system.
Soft Bounce:
- The email address may be temporarily unavailable.
- The address is NOT immediately removed.
- Soft bounces are tracked over time. After a sustained period of soft bounces, the address is eventually removed.
- SendGrid handles internal retries automatically; the SP does not re-send the same email (which would cause duplicates).
Block:
- The receiving server has blocked delivery.
- Handled similarly to soft bounces with tracking.
Bounce events are processed via a SendGrid webhook. Event processing has been moved to a background queue to handle high volumes without impacting portal performance.
Email Signatures
Agents configure their email signature in SP Account Settings. The signature is included in all emails sent from the portal.
Known behavior: The email signature settings box in SP Account Settings has a lower-priority UI bug being tracked.
Email Link Placement
Super Portal-generated emails include "View Transaction Details" and "View Task Details" links. These links are positioned below the email signature with muted styling (non-underlined, lighter color) and labeled "For internal reference only" to prevent clients from confusing them with attachments or action items.
Email Delivery to Multiple Addresses
When a client has multiple email addresses on file, search and update emails are delivered to all listed addresses.
Handling Invalid Emails
When FUB syncs a contact with an invalid email format, the SP flags the address rather than silently dropping it. The "bounced" status is accurately reflected, and emails are not shown as "bounced to client" when they were actually delivered.
Market Update Emails
Automated market update emails are sent based on saved search criteria and delivery frequency settings. Key behaviors:
- New listings are included based on the search criteria match.
- The same listing is not sent to a client on multiple days (a previous bug causing duplicate sends has been resolved).
- Property suggestion emails can be disabled globally.
- Email settings default to "on" for new agents.
Sending Emails to FUB
All emails sent from the Super Portal are also sent to FUB for the contact record, ensuring a complete communication history in the CRM. -e