Platform Emails
Navigate to Communications → Emails to create and send email campaigns to gym owners and leads.
Creating an Email
- Click + Compose to start a new email
- Fill in the subject line
- Select the sender address from the approved sender dropdown (restricted to @bliply.app and @help.bliply.app domains — no manual override allowed)
- Build the email content using the block-based editor
- Select the audience:
- All active gyms
- Filter by billing status (active, trial, inactive)
- Filter by custom gym_tags
- Specific lead IDs
- Preview the email using the Desktop/Mobile toggle to check rendering on both device sizes
- Choose to Send Now or Schedule for a future date/time
Email Statuses
| Status | Meaning |
|---|---|
| Draft | Being composed, not yet sent |
| Scheduled | Queued for future delivery |
| Sending | Currently being processed (atomic lock prevents double-sends) |
| Sent | Delivered to all recipients |
| Failed | Send attempt failed — can be retried |
Tracking & Analytics
After sending, each email shows a detailed recipient card with:
- Target segments — Which audience filters were applied
- Recipient list — Scrollable list of actual recipients with individual status badges: Sent, Delivered, Read (opened), Clicked
- Aggregate metrics — Open rate, click rate, delivery rate
Retrying Failed Sends
If an email fails to send, use the Retry action. This uses the supabase.functions.invoke() pattern for reliable authentication. The Edge Function implements a 2-minute concurrency lock (returns 409 Conflict if a send is already in progress) to prevent double-sending.
Deleting Emails
Only non-sent emails can be deleted (draft, failed, scheduled, or stuck). Sent emails are retained for audit and analytics.