jeffersongoncalves/filament-mail
Complete email management UI for Filament, built on laravel-mail. Browse and resend mail logs with HTML preview and attachments, edit multi-locale database templates with version history and live preview, send test emails, and manage delivery analytics and suppressions.
jeffersongoncalves/laravel-mail, which abstracts email logging, templates, and tracking into Laravel’s service layer. This aligns well with Laravel’s event-driven and queue-based email systems (e.g., Mail::send(), events:mail.sent).laravel-mail or a similar system to avoid redundant data models.laravel-mail (delivery vs. bounce vs. complaint classification). Any vendor webhook that reports ambiguous or duplicate events directly distorts rate accuracy.Mail::to()->tag('spring-promo') or via a mailable convention). Untagged or inconsistently tagged mail will not roll up correctly — this is an application-level convention, not something the plugin can enforce.3.x for Filament v3). Check compatibility table.jeffersongoncalves/laravel-mail (v3.x+). If your app uses a different email logging system (e.g., Spatie Mail), assess migration effort.jeffersongoncalves/laravel-mail ^1.4 with campaigns enabled. This is a two-part gate: a version bump and a feature flag/config toggle. Upgrade order matters — laravel-mail must be upgraded and campaigns enabled before the plugin is updated, or the Campaigns page will be empty or error.tenant-42/spring-promo) to prevent cross-tenant roll-up in the side-by-side view.| Risk Area | Mitigation Strategy |
|---|---|
| Schema Conflicts | Run php artisan vendor:publish --tag="filament-mail-migrations" to inspect DB changes. 1.5.0 may add campaign/click-link tables — diff before migrating. |
| Dependency Gate (NEW) | Upgrade laravel-mail to ^1.4 and enable campaigns in its config before updating the plugin. Add a pre-deploy check. |
| Tag Coverage Gaps (NEW) | Audit all send sites for consistent mail tags; consider a central helper/mailable base class so tagging is not left to individual developers. |
| Rate Accuracy (NEW) | Validate delivery/open/click/bounce/complaint counts against your provider’s own dashboard for one real campaign before trusting the page. |
| Click-Link Data Growth (NEW) | Confirm retention/cleanup for per-URL click records; add indexes on campaign tag and timestamp. |
| Tracking Accuracy | Test with your email provider’s webhook setup (e.g., SendGrid’s event notifications). |
| Performance | Analytics dashboards may slow with large email volumes; the side-by-side campaign view is the heaviest query — consider caching or date-range defaults. |
| Filament Version Drift | Pin exact versions in composer.json to avoid breaking changes. |
| Localization Gaps | Verify multi-locale template editing works with your app’s locale setup. |
laravel-mail or a similar package? If not, what’s the migration path?Mail::to()->queue())? If so, ensure laravel-mail is configured to log queued emails.laravel-mail ≥1.4 with campaigns enabled in your environment today?laravel-mail.jeffersongoncalves/laravel-mail (if not already present).laravel-mail is ^1.4 and campaigns are enabled in its configuration..env SMTP/Ses keys).composer require jeffersongoncalves/filament-mail
php artisan filament-mail:install
config/filament-mail.php for:
Filament::registerPlugin(
FilamentMailPlugin::make()
);
| Component | Compatibility Notes |
|---|---|
| Filament | Must match version (e.g., 3.x for Filament v3). Check Filament’s docs. |
| Laravel | Tested on Laravel 10.x+. Ensure queue:work is running for async email processing. |
| PHP | Requires PHP 8.1+. |
| laravel-mail (NEW) | ^1.4 required for 1.5.0, with campaigns enabled. Older versions break the Campaigns page. |
| Email Providers | Webhook tracking requires provider-specific setup (e.g., SendGrid, Mailgun). Bounce/complaint rates require delivery-event webhooks. |
| Database | Uses Laravel migrations. Test with your DB (MySQL, PostgreSQL, SQLite). Expect additional campaign/click-link tables. |
laravel-mail to ^1.4 first, enable campaigns, then update the plugin to 1.5.0.laravel-mail or Filament breaks, this package may fail. 1.5.0 tightens this coupling by requiring laravel-mail ^1.4 features — the two packages must now be upgraded as a coordinated pair.composer.json to avoid surprises; pin laravel-mail and filament-mail together.jeffersongoncalves has active packages (laravel-mail).Mail facade as a backup for logging.sent_at, recipient_email.| Scenario | Impact | Mitigation |
|---|---|---|
| Database Migration Fail | Broken email logging | Backup DB before migration; rollback plan. |
| Webhook Failures | Incomplete tracking data | Implement retry logic (e.g., Laravel queues). |
| Filament Plugin Crash | UI unavailable | Feature flags to disable plugin temporarily. |
| Template Corruption | Broken emails | Version control for template files. |
| NEW: Version Skew | Plugin 1.5.0 on laravel-mail <1.4 → Campaigns page empty or erroring |
Deploy laravel-mail upgrade first; gate plugin update on a config/version check. |
| NEW: Untagged Mail | Campaigns under-report; rates skew low | Enforce tagging in shared mailer/mailable; monitor for orphan tags. |
| NEW: Missing Bounce/Complaint Events | Deliverability columns read zero, masking list hygiene problems | Subscribe to provider delivery/bounce/complaint webhooks; alert on missing event volume. |
How can I help you explore Laravel packages today?