Weave Code
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

Fin Mail Laravel Package

finity-labs/fin-mail

FinMail adds an email template manager and composer to Filament. Create dynamic, multilingual templates with token replacement and merge tags, version templates, log sent emails with status tracking, override auth mails, and use a reusable “Send Email” action in resources.

View on GitHub
Deep Wiki
Context7
v1.7.1

Fixed

  • MissingSettings exception during artisan boot when scheduled cleanup is registered before the fin-mail-logging settings have been migrated. The catch around app(LoggingSettings::class) didn't cover the lazy property access that actually triggers the load, so the exception escaped and broke package:discover and fin-mail:install in some setups (#13, thanks @devrizzz)

Notes

  • spatie/laravel-settings is now mentioned explicitly in the README as an auto-installed dependency

Full Changelog: https://github.com/finity-labs/fin-mail/compare/v1.7.0...v1.7.1

v1.7.0

Added

  • Permission gating for custom actionsPreview, SendTest, Compose (Email Templates) and Resend (Sent Emails) are now hidden from the UI when Filament Shield is installed and the authenticated user lacks the corresponding permission. Falls back to the previous always-visible behavior when Shield is absent, so existing installs are unaffected (#12, thanks @agencetwogether)
  • FinMailPlugin::isShieldAvailable() helper for checking Shield presence
  • preview_heading translation key for the preview modal header, populated across all 58 supported locales

Changed

  • InstallCommand now seeds preview, sendTest, compose, and resend into the Filament Shield config so shield:generate produces the matching policy methods and permissions
  • Bulk delete on the Email Templates table now uses authorizeIndividualRecords('delete') when Shield is active

Notes

  • After upgrading on a Shield-enabled install, run php artisan shield:generate --panel=admin --option=policies_and_permissions to register the new permissions

Full Changelog: https://github.com/finity-labs/fin-mail/compare/v1.6.0...v1.7.0

v1.6.0

Added

  • Pass extra view data to email templates — New extraData() method (and native with() support) on TemplateMail for passing variables directly to the Blade view, separate from the token replacement system. Useful for view-only data that doesn't need to flow through the token engine (#10, thanks @agencetwogether)

Fixed

  • Reply-To section was missing from the email template infolist (view page). It's now displayed alongside the Custom Sender section (#11, thanks @agencetwogether)
v1.5.0

Added

  • Reply-To support for templates — Each template can now have its own reply-to address and name, configurable from the template settings tab. Falls back to null if not set, so existing templates are unaffected. The TemplateMail mailable also gains an overrideReplyTo() setter for runtime overrides (#9, thanks @agencetwogether)
  • Reply-to translations added to all 58 supported locales

Notes

A new migration is included (add_reply_to_on_email_templates_table). Run php artisan migrate after upgrading.

v1.4.1

Fixed

  • Migrations now use configured table names from fin-mail.php config instead of hardcoded defaults, fixing issues with foreign key references when table names are customized (#7, thanks @agencetwogether)
v1.4.0

Added

  • Custom block registration — Register your own editor blocks via FinMailPlugin::make()->customBlocks([...]). Custom blocks now render correctly in the editor, preview mode, and sent emails. ButtonBlock is always included by default. Closes #6

Changed

  • Block rendering in EmailTemplate, TipTapConverter, and DefaultEditor now reads from a dynamic plugin-level registry instead of a hardcoded list
v1.3.0

What's new

  • Configurable date formattingdate_format and datetime_format config options with per-locale array support
  • Token fields in test email modal — Input fields for documented tokens, pre-filled with example values
  • Full rendered body storage — Sent emails store the complete HTML as delivered, not just inner body
  • Sent email infolist — Proper Filament infolist replaces the old blade view
  • Laravel 13 support

Fixes

  • Test emails from template list now logged in sent emails
  • Sent email preview renders with full styling
  • Missing translations for 58 languages

See CHANGELOG.md for full details.

v1.2.0

What's new

Added

  • Version History UI — Version history now displays in a proper Filament table with per-row preview and restore actions
  • Version Preview — Preview any version's email content directly from the version history modal
  • Version Restore — Restore any previous version with one click; current content is automatically saved as a new version first
  • Upgrade Command — New php artisan fin-mail:upgrade command to migrate existing data after package updates (supports --dry-run)

Fixed

  • Versioning not working — Version cleanup query was deleting all versions instead of keeping the most recent ones
  • Version history crash — Subject column was passed as an array to Str::limit(), causing a TypeError
  • Seeded template buttons stripped by editor — Inline-styled <a> tags in seeded templates were stripped by TipTap; buttons now use the native customBlock format
  • Custom blocks not rendered in previews — Button blocks were not converted to visible HTML in the View and Compose page previews
  • Button preview ignores theme colors — Button block preview in the RichEditor now reflects the selected template theme

Changed

  • Added blocks and versioning translation keys for all 59 supported languages
  • Button block default labels now use translation keys instead of hardcoded English

Upgrading from v1.1.0

composer update finity-labs/fin-mail
php artisan fin-mail:upgrade

Full changelog: https://github.com/finity-labs/fin-mail/blob/main/CHANGELOG.md

v1.1.0

What's New

Merge Tags — Tokens are now available directly in the editor toolbar. No more switching to the Tokens tab to remember what's available.

CTA Button Block — Insert styled call-to-action buttons from the custom blocks panel. Set the text, URL, and alignment — theme colors are applied automatically.

Inline Link Styling — Links in email body now render with the correct theme color in all email clients, including those that strip <style> blocks.

Live Theme Preview — Change a color in the theme editor and see it update instantly.

Custom Theme Auto-Setup — The install command now detects your custom Filament theme CSS and offers to register FinMail styles automatically.

Bug Fixes

  • Email preview shows current form content instead of last saved state
  • Token replacement works properly in compose page emails
  • Replicate action shows editable modal and redirects to edit page
  • Fixed uninstall with fluent plugin configuration
  • Fixed Portuguese translations

Full Changelog: https://github.com/finity-labs/fin-mail/compare/v1.0.1...v1.1.0

v1.0.1

Fixed

  • Install command now publishes and runs the spatie/laravel-settings migration automatically if the settings table doesn't exist yet — no more crashes on fresh installs
  • Resources (Templates, Themes, Sent Emails) were hidden when Filament Shield wasn't installed, because the bundled policies denied access unconditionally. Removed the bundled policies — without Shield, everything is accessible by default

Added

  • policyNamespace() option on the plugin, so Shield-generated policies can live anywhere (defaults to App\Policies)
  • Dependency conflict workaround documented in README for projects with phpdocumentor/reflection-docblock 6.x

Changed

  • Shield policy mapping now happens in the service provider via Gate::policy() instead of relying on bundled policy files. This means Shield generates the policies (as it should), and FinMail just wires them up to the right models
v1.0.0
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.
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver