Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Mail Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Filament Integration: Designed as a Filament admin panel plugin, this package leverages Filament’s modular architecture (v2/v3) to provide a dedicated email management UI. The tight coupling with Filament ensures UI consistency and reduces frontend development effort.
  • Laravel Mail Foundation: Built atop 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).
  • Database-Centric: Relies on database-backed templates (multi-locale support) and logs, which may require schema migrations. Assess whether your app already uses laravel-mail or a similar system to avoid redundant data models.
  • Analytics & Suppression: Introduces real-time tracking (e.g., open/click events) and suppression lists, which may require:
    • Tracking pixels (if using HTML emails).
    • Webhook integrations (e.g., Mailgun, SendGrid) for delivery events.
    • Caching layers for analytics dashboards (e.g., Redis for performance).
  • NEW in 1.5.0 — Campaign Analytics Layer: The new Campaigns page introduces a second analytics tier keyed on mail tag (campaign). It aggregates per-campaign delivery, open, click, click-to-open, bounce, and complaint rates, presents all campaigns side by side, and surfaces most-clicked links. This shifts the package from a per-email log viewer toward a campaign performance reporting surface:
    • Aggregation model: Rates are derived metrics (ratios over delivered/opened/clicked counts), so the package now depends on consistent event normalization in laravel-mail (delivery vs. bounce vs. complaint classification). Any vendor webhook that reports ambiguous or duplicate events directly distorts rate accuracy.
    • Tag discipline becomes a hard dependency: Campaigns are grouped by mail tag, meaning your application must set a consistent tag on every outbound mail (e.g., 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.
    • Click-link tracking store: "Most clicked links" implies per-URL click records are persisted. This is a materially larger data footprint than per-email counters and should be reviewed for retention policy and indexing.
    • Comparative UI load: Rendering "all campaigns side by side" is a multi-aggregate query pattern; it will be the most expensive page in the plugin at volume.

Integration Feasibility

  • Low-Coupling Risk: Since it’s a Filament plugin, integration is plugin-based (no core Laravel modifications). However:
    • Filament Version Lock: Must match your Filament version (e.g., 3.x for Filament v3). Check compatibility table.
    • Laravel Mail Dependency: Requires jeffersongoncalves/laravel-mail (v3.x+). If your app uses a different email logging system (e.g., Spatie Mail), assess migration effort.
    • NEW — Version Floor Raised: 1.5.0 explicitly requires 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.
  • Email Driver Compatibility: Works with Laravel’s mail drivers (SMTP, Mailgun, SES, etc.), but tracking features (e.g., open rates) may need vendor-specific webhooks. Campaign rates inherit this dependency — bounce and complaint rates in particular require provider webhook events (SES/SendGrid/Mailgun notification topics). Without webhooks configured, bounce/complaint columns will read as zero and misrepresent deliverability.
  • Multi-Tenant Considerations: If your app is multi-tenant, ensure the package’s template/suppression scopes align with your tenant isolation strategy. Campaign grouping by tag is global by default — verify tags are namespaced per tenant (e.g., tenant-42/spring-promo) to prevent cross-tenant roll-up in the side-by-side view.
  • Tag Governance Feasibility: Adopting campaigns requires an audit of existing mail send sites to confirm tagging coverage. This is the single largest integration task introduced by 1.5.0 and is application work, not package work.

Technical Risk

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.

Key Questions

  1. Current Email Stack:
    • Does your app already use laravel-mail or a similar package? If not, what’s the migration path?
    • Are you using queue-based emails (e.g., Mail::to()->queue())? If so, ensure laravel-mail is configured to log queued emails.
  2. Filament Version:
    • What Filament version are you using? Does it support this package’s version?
  3. Tracking Requirements:
    • Do you need open/click tracking? If so, which email provider are you using, and do they support webhooks?
  4. Analytics Scale:
    • How many emails/day are sent? Will the analytics dashboard perform under load?
  5. Customization Needs:
    • Do you need to extend the UI (e.g., custom fields in templates) or override default behaviors?
  6. Compliance:
    • Does your use case require GDPR-compliant suppression management (e.g., unsubscribe tracking)?
  7. NEW — Campaign Tagging (1.5.0):
    • Do all outbound mails carry a mail tag? Who owns tagging conventions, and is there a code path that enforces it?
    • Is laravel-mail ≥1.4 with campaigns enabled in your environment today?
    • Are tags tenant-namespaced if running multi-tenant?
  8. NEW — Deliverability Reporting:
    • Are bounce and complaint webhook events wired up? Without them, the new page’s deliverability columns are misleading.
    • Does anyone own acting on complaint rates (list hygiene / suppression)?
  9. NEW — Data Retention:
    • What is the acceptable retention for per-link click records, and who approves growth in that table?

Integration Approach

Stack Fit

  • Ideal For:
    • Laravel apps using Filament v2/v3 for admin panels.
    • Teams needing a unified email management UI without building custom dashboards.
    • Projects requiring database-backed email templates (multi-locale support).
    • NEW: Marketing/lifecycle teams running named campaigns who want delivery and engagement rates without a separate ESP dashboard — particularly where engineering owns the admin panel and marketing lacks direct access.
  • Less Ideal For:
    • Apps using non-Filament admin panels (e.g., Nova, Backpack).
    • Projects with custom email logging that can’t adopt laravel-mail.
    • High-scale apps where real-time tracking may introduce latency.
    • NEW: Teams that cannot enforce mail tagging across send sites, or that rely on a third-party ESP’s native campaign reporting as the system of record (duplicate reporting, reconciliation overhead).

Migration Path

  1. Prerequisites:
    • Install jeffersongoncalves/laravel-mail (if not already present).
    • NEW: Ensure laravel-mail is ^1.4 and campaigns are enabled in its configuration.
    • Ensure Laravel’s mail configuration is set up (e.g., .env SMTP/Ses keys).
  2. Installation:
    composer require jeffersongoncalves/filament-mail
    php artisan filament-mail:install
    
    • Publishes migrations, config, and views.
  3. Configuration:
    • Update config/filament-mail.php for:
      • Database connection (if using custom tables).
      • Email provider webhook settings (for tracking).
      • Template storage paths (if using file-based templates alongside DB).
  4. Filament Registration:
    • Add the plugin to your Filament admin panel:
      Filament::registerPlugin(
          FilamentMailPlugin::make()
      );
      
  5. NEW — Campaign Tag Rollout:
    • Adopt a tagging convention and apply it to every outbound mail; backfill only if historical comparison is required (usually not worth it — start reporting from go-live).
  6. Testing:
    • Verify:
      • Email logs appear in the UI.
      • Templates can be edited and sent.
      • Tracking events (if enabled) populate the dashboard.
      • NEW: A test campaign appears on the Campaigns page with non-zero delivery/open/click counts, and its rates reconcile with the ESP.

Compatibility

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.

Sequencing

  1. Phase 1: Core Integration (1–2 weeks)
    • Install and configure the package.
    • Migrate existing email templates/logs (if any) to the new system.
  2. Phase 2: Tracking Setup (1 week)
    • Configure webhooks for open/click tracking (if needed).
    • Test with a subset of emails.
  3. Phase 3: Analytics & Suppression (1 week)
    • Customize dashboards or suppression rules.
    • Load-test with production-like volumes.
  4. NEW — Phase 3b: Campaign Analytics Enablement (1–2 weeks)
    • Upgrade laravel-mail to ^1.4 first, enable campaigns, then update the plugin to 1.5.0.
    • Audit and instrument mail tagging across all send sites.
    • Wire bounce/complaint webhook events if not already present.
    • Reconcile one campaign’s rates against the ESP before broader rollout; define a data-retention policy for click-link records.
  5. Phase 4: Rollout
    • Deploy to staging, monitor performance.
    • Train team on Filament UI changes. NEW: align marketing/support on the Campaigns page as the shared reporting view and agree who acts on complaint/bounce trends.

Operational Impact

Maintenance

  • Pros:
    • Vendor-Maintained: Active updates (last release: 1.5.0, adding campaign analytics) with CI/CD pipelines.
    • Filament Ecosystem: Leverages Filament’s update cycle (reduced UI maintenance).
    • NEW: Campaign reporting is now in-package, reducing the case for a bespoke analytics build or a parallel ESP dashboard integration.
  • Cons:
    • Dependency Risk: If 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.
    • Custom Logic: Extending templates or tracking may require overrides (e.g., service provider bindings).
    • NEW: Tag hygiene is ongoing operational work — new mail send sites must be tagged or campaign reporting silently under-reports.
  • Recommendations:
    • Pin versions in composer.json to avoid surprises; pin laravel-mail and filament-mail together.
    • Monitor GitHub issues for known bugs (e.g., tracking accuracy, rate calculations).
    • NEW: Add a CI/lint check that outbound mail is tagged; treat missing tags as a defect.

Support

  • Documentation: README and CHANGELOG are clear, but multi-locale template editing and webhook setup may need internal docs. NEW: the campaigns feature depends on an external package’s config flag — document that activation step internally, as it isn’t discoverable from the plugin alone.
  • Community: Small community (6 stars), but jeffersongoncalves has active packages (laravel-mail).
  • Fallbacks:
    • For critical issues, consider forking the repo or building a minimal custom solution.
    • Use Laravel’s native Mail facade as a backup for logging.
    • NEW: Retain ESP-native campaign reporting as the reconciliation source of truth for at least one full reporting cycle after go-live.

Scaling

  • Performance Bottlenecks:
    • Analytics Dashboard: May slow with >10K emails/day. Mitigate with:
      • Database indexing on sent_at, recipient_email.
      • Caching dashboard queries (e.g., Redis).
    • NEW — Campaigns Page: The all-campaigns side-by-side aggregate plus most-clicked links is the heaviest read path in the plugin. Mitigate with:
      • Default to a bounded date range (e.g., last 30 days) rather than all-time.
      • Index on campaign tag + timestamp; consider a pre-aggregated rollup table or scheduled summary job if campaign history grows.
      • Paginate or limit campaign rows in the comparison view.
    • Tracking Webhooks: High-volume apps should batch process events (e.g., queue listeners). Click events are the highest-cardinality stream and now feed a per-URL store as well as counters.
  • Horizontal Scaling:
    • Stateless UI (Filament) scales with your Laravel app.
    • Database reads may need read replicas for heavy analytics; the Campaigns page is a good candidate to route to a replica.

Failure Modes

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.

Ramp-Up

  • Team Onboarding: 1–2 days for developers familiar with Filament and Laravel Mail to navigate the plugin; the Campaigns page is self-explanatory to non-technical stakeholders, which is a net onboarding win for marketing/support users.
  • NEW — Learning Curve: The main new concept is mail tags as campaign identity. Engineers need a short, written convention (naming, tenant prefixing, when to reuse vs. create a tag); without it, the feature degrades quietly rather than failing loudly.
  • NEW — Analyst Enablement: Whoever reads the Campaigns page should understand click-to-open rate as a distinct signal from open rate, and know that complaint rate is a deliverability alarm, not a vanity metric. A one-page glossary prevents misreading the dashboard.
  • Ramp Recommendation: Pair the 1.5.0 upgrade with a 30-minute walkthrough for both engineering (tagging, upgrade order) and marketing (reading rates, escalation on complaint spikes).
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle