PHPackages                             finity-labs/fin-mail - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. finity-labs/fin-mail

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

finity-labs/fin-mail
====================

A powerful email template manager and composer for Filament with dynamic token replacement, template versioning, and inline email sending.

v1.8.1(3d ago)284.5k↑322.6%71MITPHPPHP ^8.2CI passing

Since Mar 2Pushed 3w ago1 watchersCompare

[ Source](https://github.com/finity-labs/fin-mail)[ Packagist](https://packagist.org/packages/finity-labs/fin-mail)[ Docs](https://github.com/finity-labs/fin-mail)[ RSS](/packages/finity-labs-fin-mail/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (55)Versions (14)Used By (1)

FinMail for Filament
====================

[](#finmail-for-filament)

[![finity-labs-fin-mail](https://private-user-images.githubusercontent.com/254747167/558170047-f1dc64c3-92ff-4628-81b7-5ff7e85f9479.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTcwMDQ3LWYxZGM2NGMzLTkyZmYtNDYyOC04MWI3LTVmZjdlODVmOTQ3OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMTFiYWUyZDMzNGE4M2ZlMWQ1ZGM4YWNhYmJkNmMxYjVmMGE4YmJiYjM2YTJmYmFhYmVjNzRkNGI3NzlhNzAxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.ojwP2CpyXOEpXhPP_bNPW7Jml6CqsIwOsuTN193D7hA)](https://private-user-images.githubusercontent.com/254747167/558170047-f1dc64c3-92ff-4628-81b7-5ff7e85f9479.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTcwMDQ3LWYxZGM2NGMzLTkyZmYtNDYyOC04MWI3LTVmZjdlODVmOTQ3OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMTFiYWUyZDMzNGE4M2ZlMWQ1ZGM4YWNhYmJkNmMxYjVmMGE4YmJiYjM2YTJmYmFhYmVjNzRkNGI3NzlhNzAxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.ojwP2CpyXOEpXhPP_bNPW7Jml6CqsIwOsuTN193D7hA)

[![FILAMENT 4.x](https://camo.githubusercontent.com/5b4c0b6fdfb4549d1f307a81659b179a61d677a1849d35e6ecabd4879b602ea5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46494c414d454e542d342e782d4542423330343f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/4.x/panels/installation)[![FILAMENT 5.x](https://camo.githubusercontent.com/505caf6f77dd8ce71275a65163d71c3d96731f079069e1ff8a7d5d2a3c07d8a3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46494c414d454e542d352e782d4542423330343f7374796c653d666c61742d737175617265)](https://filamentphp.com/docs/5.x/panels/installation)[![Latest Version on Packagist](https://camo.githubusercontent.com/7b25b112492372c4edd28647f3f322394f832b2867b405f1511250929fd0456e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f66696e6974792d6c6162732f66696e2d6d61696c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-mail)[![Tests](https://github.com/finity-labs/fin-mail/actions/workflows/tests.yml/badge.svg)](https://github.com/finity-labs/fin-mail/actions/workflows/tests.yml)[![Code Style](https://github.com/finity-labs/fin-mail/actions/workflows/style.yml/badge.svg)](https://github.com/finity-labs/fin-mail/actions/workflows/style.yml)[![Total Downloads](https://camo.githubusercontent.com/3465ca24a2539da3c02a8a00fbc5ba2c81eaefcf0e66c9e9f17baa8919564dbf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f66696e6974792d6c6162732f66696e2d6d61696c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-mail)[![License](https://camo.githubusercontent.com/6af869be47d6188fad18a2f35aff10ac27c6d794ea3993f62e865f188a7cc692/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f66696e6974792d6c6162732f66696e2d6d61696c2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/finity-labs/fin-mail)

A powerful email template manager and composer for Filament. Build, manage, and send emails directly from your admin panel — with dynamic token replacement, multilingual templates, customizable themes, template versioning, email logging with status tracking, auth email overrides, and a reusable Send Email action that drops into any resource.

Features
--------

[](#features)

- **Email Composer** — Send emails from any resource using templates as starting points, with full editing of subject, body, recipients, and attachments
- **Dynamic Templates** — No need for separate Mailable classes per template. One universal `TemplateMail` handles everything
- **Token Replacement** — `{{ user.name }}`, `{{ config.app.name }}`, conditionals `{% if user.is_premium %}`, and fallbacks `{{ user.name | 'Customer' }}`
- **Merge Tags** — Tokens are available as merge tags directly in the RichEditor toolbar for easy insertion
- **CTA Button Block** — Insert styled call-to-action buttons from the editor with configurable label, URL, and alignment
- **Template Versioning** — Automatic version history with preview and one-click restore
- **Email Logging** — Every sent email is logged with status tracking, rendered body storage, and polymorphic model association
- **Translatable** — Templates support multiple languages via `spatie/laravel-translatable`, all locales stored in a single record
- **Theme System** — Create color themes and apply them to templates, with live preview that updates as you change colors
- **Swappable Editor** — Ships with Filament's RichEditor by default, with Tiptap and TinyMCE supported via the `EditorContract`
- **Categories &amp; Tags** — Organize templates as they grow
- **Reusable Actions** — `SendEmailAction` and `SentEmailsRelationManager` drop into any Filament resource
- **Preview &amp; Test Send** — Preview templates inline and send test emails from the admin
- **Admin Settings** — Manage sender defaults, branding, logging, and attachment rules from the UI
- **Full Navigation Control** — Configure navigation groups, sort order, and visibility per resource from the plugin
- **Shield Support** — Built-in policies and permission setup for Filament Shield

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 11, 12, or 13
- Filament 4 or 5

FinMail uses [`spatie/laravel-settings`](https://github.com/spatie/laravel-settings) to store plugin settings. It's pulled in automatically as a Composer dependency — `fin-mail:install` publishes and runs its migration if you don't already have a `settings` table.

Installation
------------

[](#installation)

```
composer require finity-labs/fin-mail
```

> **Dependency conflict?** If you see an error about `phpdocumentor/type-resolver`, it means your project has `phpdocumentor/reflection-docblock` 6.x which conflicts with `spatie/laravel-settings`. Fix it by allowing Composer to resolve all dependencies:
>
> ```
> composer require finity-labs/fin-mail phpdocumentor/reflection-docblock:^5.6 -W
> ```

```
php artisan fin-mail:install
```

The install command will:

- Publish config and migrations
- Configure supported locales (auto-detects from your `lang/` directory)
- Optionally run migrations and seed default templates
- Optionally register the plugin in your Filament panel
- Optionally register FinMail styles in your custom Filament theme
- Optionally configure [Filament Shield](#filament-shield-integration) permissions
- Optionally configure scheduled cleanup of old sent emails

#### Non-interactive install

[](#non-interactive-install)

Pass `--locales` to skip the interactive locale prompt (useful for CI or scripted setups):

```
php artisan fin-mail:install --locales=en,hu,de --seed
```

During interactive install, choose **"Other"** from the locale list to manually enter any of the 59 supported locale codes.

### Custom Filament theme

[](#custom-filament-theme)

If you are using a [custom Filament theme](https://filamentphp.com/docs/5.x/panels/themes#creating-a-custom-theme), add the FinMail view path to your theme CSS so Tailwind can scan the plugin's styles:

```
/* resources/css/filament/{panel}/theme.css */
@source '../../../../vendor/finity-labs/fin-mail/resources/views/**/*';
```

> The install command will do this automatically if it detects a custom theme CSS file for the selected panel.

### Register the plugin

[](#register-the-plugin)

```
use FinityLabs\FinMail\FinMailPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FinMailPlugin::make(),
        ]);
}
```

### Plugin options

[](#plugin-options)

```
FinMailPlugin::make()
    ->enableSentEmails()    // Show the Sent Emails resource (default: true)
    ->enableThemes()        // Show the Themes resource (default: true)
    ->deleteActionOnEditPage() // Show delete button on edit pages (default: false)
    ->policyNamespace('App\\Policies') // Where Shield policies live (default: App\Policies)
```

### Navigation customization

[](#navigation-customization)

All navigation group settings accept strings, enums, closures, or `null`:

```
FinMailPlugin::make()
    // Set a shared navigation group for all resources and settings
    ->navigationGroup('Communications')

    // Or configure each resource independently
    ->emailTemplateNavigationGroup('Email')
    ->emailThemeNavigationGroup('Email')
    ->sentEmailNavigationGroup('Logs')
    ->settingsNavigationGroup('Administration')

    // Set sort order for all resources at once (auto-increments: base, +1, +2, +3)
    ->navigationSort(10)

    // Or configure each resource independently
    ->emailTemplateNavigationSort(10)
    ->emailThemeNavigationSort(20)
    ->sentEmailNavigationSort(30)
    ->settingsNavigationSort(40)
```

Usage
-----

[](#usage)

### Sending emails programmatically

[](#sending-emails-programmatically)

```
use FinityLabs\FinMail\Mail\TemplateMail;

// Simple
Mail::to($user->email)->send(
    TemplateMail::make('welcome-email')
        ->models(['user' => $user])
);

// With locale, attachments, and overrides
Mail::to($customer->email)->send(
    TemplateMail::make('invoice-sent', locale: 'hu')
        ->models(['customer' => $customer, 'invoice' => $invoice])
        ->attachFile($invoice->getPdfPath(), "Invoice-{$invoice->number}.pdf")
);
```

`TemplateMail` is automatically queued. Configure the queue connection and name in `config/fin-mail.php`.

#### Passing extra view data

[](#passing-extra-view-data)

`models()` is for token replacement (`{{ user.name }}`). For variables you want available directly in the Blade template — without going through the token system — use `with()` or its `extraData()` alias:

```
TemplateMail::make('order-confirmation')
    ->models(['user' => $user])
    ->with('trackingUrl', $tracking->url)
    // or pass an array:
    ->extraData([
        'orderItems' => $order->items,
        'currency' => 'EUR',
    ]);
```

After publishing the package views (`php artisan vendor:publish --tag=fin-mail-views`), the variables are available directly in the Blade template:

```
Track your order

@foreach ($orderItems as $item)
    {{ $item->name }} — {{ $item->price }} {{ $currency }}
@endforeach
```

The default keys (`body`, `preheader`, `theme`, `branding`) remain available — extra data is merged on top.

#### Using a custom email view

[](#using-a-custom-email-view)

By default, FinMail renders emails using the built-in `fin-mail::email.default` view.

You can override the view on a per-email basis:

```
TemplateMail::make('welcome-email')
    ->models(['user' => $user])
    ->overrideView('emails.custom-layout');
```

The custom view receives the same variables as the default view (`$body`, `$preheader`, `$theme`, `$branding`) as well as any data provided via `with()` or `extraData()`.

### Adding "Send Email" to any resource

[](#adding-send-email-to-any-resource)

```
use FinityLabs\FinMail\Actions\SendEmailAction;

// In your table actions, header actions, or anywhere Filament actions are used
SendEmailAction::make()
    ->template('invoice-sent')
    ->recipient(fn (Invoice $record) => $record->customer->email)
    ->models(fn (Invoice $record) => [
        'invoice'  => $record,
        'customer' => $record->customer,
    ])
    ->attachments(fn (Invoice $record) => [
        ['path' => $record->getPdfPath(), 'name' => "Invoice-{$record->number}.pdf"],
    ])
    ->onSent(fn (Invoice $record) => $record->update(['emailed_at' => now()]))
```

A `SendEmailAction` (page header action) is also available with the same API.

### Showing sent emails on any resource

[](#showing-sent-emails-on-any-resource)

Add the `HasEmailTemplates` trait to your model:

```
use FinityLabs\FinMail\Traits\HasEmailTemplates;

class Invoice extends Model
{
    use HasEmailTemplates;
}
```

Then add the relation manager to your resource:

```
use FinityLabs\FinMail\Resources\RelationManagers\SentEmailsRelationManager;

public static function getRelations(): array
{
    return [
        SentEmailsRelationManager::class,
    ];
}
```

The trait provides helpers on your model:

```
$invoice->sentEmails;                         // All sent emails
$invoice->latestSentEmail();                  // Most recent
$invoice->hasBeenEmailed('invoice-sent');     // Check if a specific template was sent
$invoice->sentEmailsCount();                  // Count
```

### Token syntax

[](#token-syntax)

SyntaxExampleDescription`{{ model.attr }}``{{ user.name }}`Model attribute`{{ model.rel.attr }}``{{ order.customer.name }}`Nested relation`{{ config.key }}``{{ config.app.name }}`Config value`{{ token | 'fallback' }}``{{ user.name | 'Customer' }}`With fallback`{% if token %}...{% endif %}``{% if user.is_premium %}...{% endif %}`Conditional`{% if token %}...{% else %}...{% endif %}`If/else### Merge tags

[](#merge-tags)

When editing a template, any tokens defined in the Tokens tab are available as merge tags in the RichEditor toolbar. Click the merge tags button to browse and insert them directly into the email body.

### CTA Button block

[](#cta-button-block)

The editor includes a built-in Button custom block. Click the custom blocks button (squares-plus icon) in the toolbar, select "Button", and configure:

- **Button Text** — The label displayed on the button
- **URL** — The link destination
- **Alignment** — Left, center, or right

The button automatically uses your theme's button colors (`button_bg` and `button_text`) in both preview and sent emails, with full inline styling for email client compatibility.

### Custom blocks

[](#custom-blocks)

You can register your own custom blocks that work in the editor, preview, and sent emails. Each block must extend Filament's `RichContentCustomBlock`.

```
FinMailPlugin::make()
    ->customBlocks([
        \App\Mail\Blocks\DividerBlock::class,
        \App\Mail\Blocks\FooterBlock::class,
    ]),
```

Registered blocks automatically appear in the editor's custom blocks toolbar, render in preview mode, and convert to HTML when emails are sent. ButtonBlock is always included by default.

Each custom block needs to implement:

- `getId()` — Unique identifier stored in the HTML
- `getLabel()` — Display name in the editor toolbar
- `configureEditorAction()` — Modal form for block settings
- `toPreviewHtml()` — HTML for the editor preview
- `toHtml()` — HTML for the actual sent email

If your block uses theme colors, add a static `setPreviewTheme(?array $theme)` method and it will receive theme updates automatically when the user changes the template theme.

Events
------

[](#events)

FinMail dispatches events at key points in the email lifecycle so your application can react — e.g., log analytics, trigger webhooks, or update related models.

EventWhenPayload`EmailSending`Before the email is sent`SentEmail $sentEmail`, `?EmailTemplate $template``EmailSent`After the email was sent successfully`SentEmail $sentEmail`, `?EmailTemplate $template``EmailFailed`When sending fails`SentEmail $sentEmail`, `string $error`, `?EmailTemplate $template``TemplateUpdated`When a template is saved (new version)`EmailTemplate $template`, `int $newVersion`### Listening to events

[](#listening-to-events)

```
use FinityLabs\FinMail\Events\EmailSent;
use FinityLabs\FinMail\Events\EmailFailed;

// In a service provider or listener
Event::listen(EmailSent::class, function (EmailSent $event) {
    // $event->sentEmail — the SentEmail model
    // $event->template — the EmailTemplate used (nullable)
    logger()->info("Email sent to {$event->sentEmail->recipients_display}");
});

Event::listen(EmailFailed::class, function (EmailFailed $event) {
    // $event->error — the error message
    logger()->error("Email failed: {$event->error}");
});
```

All event properties are `readonly`. Events use `SerializesModels` so they are safe to dispatch from queued jobs.

Filament Shield Integration
---------------------------

[](#filament-shield-integration)

FinMail ships with built-in support for [Filament Shield](https://github.com/bezhanSalleh/filament-shield). Shield is entirely optional — without it, all resources are accessible to any authenticated user.

### Automatic setup

[](#automatic-setup)

If Shield is installed, the `fin-mail:install` command will:

1. Register FinMail resources in your `filament-shield.php` config
2. Generate policies and permission entries via `shield:generate`

FinMail automatically maps Shield-generated policies (in `App\Policies` by default) to its models. If your policies live elsewhere, configure the namespace on the plugin:

```
FinMailPlugin::make()
    ->policyNamespace('App\\Policies\\Admin')
```

### Manual setup

[](#manual-setup)

If you prefer to set up Shield manually, or if the automatic setup didn't complete:

```
php artisan shield:generate --panel=admin --option=policies_and_permissions
```

### Supported permissions

[](#supported-permissions)

**Resources:**

ResourcePermissionsEmail Templates`ViewAny`, `View`, `Create`, `Update`, `Delete`, `Preview`, `SendTest`, `Compose`Email Themes`ViewAny`, `View`, `Create`, `Update`, `Delete`Sent Emails`ViewAny`, `View`, `Resend`**Settings pages:**

Each settings page (General, Branding, Logging, Attachments, Auth Emails) has its own page-level permission managed by Shield.

### Cleanup on uninstall

[](#cleanup-on-uninstall)

The `fin-mail:uninstall` command automatically removes Shield config entries and permission records from the database.

Auth Email Overrides
--------------------

[](#auth-email-overrides)

FinMail can replace the application's default authentication emails (verification, password reset) with your custom templates, and optionally send a welcome email on registration.

### Enable overrides

[](#enable-overrides)

Navigate to **Settings → Auth Emails** in the admin panel and toggle the overrides you want.

### Required templates

[](#required-templates)

Create templates with these keys (the seeder includes them by default):

Template KeyPurposeAvailable Tokens`user-verify-email`Email verification link`{{ user.name }}`, `{{ user.email }}`, `{{ url }}``user-password-reset`Password reset link`{{ user.name }}`, `{{ user.email }}`, `{{ url }}``user-welcome`Welcome email after registration`{{ user.name }}`, `{{ user.email }}`### Locale support

[](#locale-support)

Auth email overrides automatically use the active application locale (`app()->getLocale()`). If you use a language switcher plugin, the emails will be sent in the user's selected language — provided the template has a translation for that locale.

Configuration
-------------

[](#configuration)

Publish the config:

```
php artisan vendor:publish --tag=fin-mail-config
```

### Date formatting

[](#date-formatting)

By default, dates and datetimes throughout the plugin use Filament's built-in formatting. You can override this globally or per locale in `config/fin-mail.php`:

```
// A single format for all locales
'date_format' => 'd/m/Y',
'datetime_format' => 'd/m/Y H:i',

// Or an array keyed by locale
'date_format' => [
    'en' => 'M d, Y',
    'de' => 'd.m.Y',
    'hu' => 'Y. m. d.',
],
'datetime_format' => [
    'en' => 'M d, Y H:i',
    'de' => 'd.m.Y H:i',
    'hu' => 'Y. m. d. H:i',
],
```

When set to `null` (or when the current locale isn't in the array), Filament's default formatting kicks in. These formats are standard PHP [date format characters](https://www.php.net/manual/en/datetime.format.php).

You can also access the resolved format programmatically:

```
use FinityLabs\FinMail\Facades\FinMail;

FinMail::dateFormat();     // string|null for current locale
FinMail::dateTimeFormat(); // string|null for current locale
```

Other publish tags:

TagDescription`fin-mail-config`Configuration file`fin-mail-migrations`Database migrations`fin-mail-settings-migrations`Spatie Settings migrations`fin-mail-views`Email template viewsUpgrading
---------

[](#upgrading)

When upgrading from a previous version, run the upgrade command to apply any data migrations:

```
php artisan fin-mail:upgrade
```

This checks locked templates in the database against the latest seeder definitions and updates any that are outdated. The command is idempotent and safe to run multiple times.

Preview changes without applying them:

```
php artisan fin-mail:upgrade --dry-run
```

Uninstalling
------------

[](#uninstalling)

Run the uninstall command **before** removing the package:

```
php artisan fin-mail:uninstall
composer remove finity-labs/fin-mail
```

The uninstall command will:

- Remove `FinMailPlugin::make()` from your panel provider(s)
- Remove FinMail `@source` directive from custom Filament theme CSS files
- Remove FinMail entries from Shield config and clean up permissions from the database
- Optionally drop all FinMail database tables and settings entries
- Optionally delete published migrations, config, views, and translations
- Clear settings and application caches

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

MIT

Screenshots
-----------

[](#screenshots)

**📝 Template Management**
**Template List**Manage, search, and create email templates with multi-language support. [![Email Templates List View](https://private-user-images.githubusercontent.com/254747167/558175151-6e0a0b97-0572-4f6f-bdd2-a765ab26d399.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTUxLTZlMGEwYjk3LTA1NzItNGY2Zi1iZGQyLWE3NjVhYjI2ZDM5OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDM5ZmY5MDNiZGMwMDYzOGE1MTg5M2VkNDI2YzY5YTg3ZWRmYjczYzhhMjU4NjFlYTdhMDgzNGU1NWJkMmEzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.o9xJHO2uMmKLrH8PkLN9hUHWo3IXe42hH0Q62oik2J8)](https://private-user-images.githubusercontent.com/254747167/558175151-6e0a0b97-0572-4f6f-bdd2-a765ab26d399.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTUxLTZlMGEwYjk3LTA1NzItNGY2Zi1iZGQyLWE3NjVhYjI2ZDM5OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NDM5ZmY5MDNiZGMwMDYzOGE1MTg5M2VkNDI2YzY5YTg3ZWRmYjczYzhhMjU4NjFlYTdhMDgzNGU1NWJkMmEzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.o9xJHO2uMmKLrH8PkLN9hUHWo3IXe42hH0Q62oik2J8)

**Template Editor**The editor includes a live preview and a dynamic token selector. [![Template Editor](https://private-user-images.githubusercontent.com/254747167/558175145-68e42727-ca4b-42dc-9a9a-ed3db36a2f01.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTQ1LTY4ZTQyNzI3LWNhNGItNDJkYy05YTlhLWVkM2RiMzZhMmYwMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZWNkMGRlOWM1NzdkOTQyYmQ5MmFhMGFiODMwNGNhODczNmU2MGViZTI3NDMyMTEwMzQ3YzM1NTY4OGZlMGFlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.BbSiD4G1yh7RmGZBaSd05z-rh-qaonPo8vb89I9-qwo)](https://private-user-images.githubusercontent.com/254747167/558175145-68e42727-ca4b-42dc-9a9a-ed3db36a2f01.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTQ1LTY4ZTQyNzI3LWNhNGItNDJkYy05YTlhLWVkM2RiMzZhMmYwMS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZWNkMGRlOWM1NzdkOTQyYmQ5MmFhMGFiODMwNGNhODczNmU2MGViZTI3NDMyMTEwMzQ3YzM1NTY4OGZlMGFlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.BbSiD4G1yh7RmGZBaSd05z-rh-qaonPo8vb89I9-qwo)[![Editor Tokens View](https://private-user-images.githubusercontent.com/254747167/558175134-a9d2360e-8470-49d3-8055-ca4aa6dae79c.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTM0LWE5ZDIzNjBlLTg0NzAtNDlkMy04MDU1LWNhNGFhNmRhZTc5Yy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MTQ4N2ZiMTI4YTUwOTMwY2E0MmVkMTg5MjUwNjRhMjE0YTk4NjUwMWU5YWZjZGVjZjZhMjg3MGM1MWRjNjMxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.JPStmpNNXoc4lrFqlJy7TnE20my7WzoGD_m1DmZZhl0)](https://private-user-images.githubusercontent.com/254747167/558175134-a9d2360e-8470-49d3-8055-ca4aa6dae79c.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTM0LWE5ZDIzNjBlLTg0NzAtNDlkMy04MDU1LWNhNGFhNmRhZTc5Yy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MTQ4N2ZiMTI4YTUwOTMwY2E0MmVkMTg5MjUwNjRhMjE0YTk4NjUwMWU5YWZjZGVjZjZhMjg3MGM1MWRjNjMxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.JPStmpNNXoc4lrFqlJy7TnE20my7WzoGD_m1DmZZhl0)

**🎨 Theming**
**Theme Editor**Create a consistent brand look with the visual theme editor — no CSS knowledge required. [![Theme Editor](https://private-user-images.githubusercontent.com/254747167/558175125-b7a5e904-b879-4576-b08e-681d1023f249.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTI1LWI3YTVlOTA0LWI4NzktNDU3Ni1iMDhlLTY4MWQxMDIzZjI0OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jOTAxNjY1ZjNjMzJlZDk3ZDU2MWE3OGM4MDA2YTQ1Y2E5ODZkNGRhNzEzNWMxOTAxMmJhZmQ1MDJkNmM5ZmI1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.SlfCznsarJTBiwYG9Ihfz4J3BUyHIy3sgfE0rQTcoRc)](https://private-user-images.githubusercontent.com/254747167/558175125-b7a5e904-b879-4576-b08e-681d1023f249.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTI1LWI3YTVlOTA0LWI4NzktNDU3Ni1iMDhlLTY4MWQxMDIzZjI0OS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jOTAxNjY1ZjNjMzJlZDk3ZDU2MWE3OGM4MDA2YTQ1Y2E5ODZkNGRhNzEzNWMxOTAxMmJhZmQ1MDJkNmM5ZmI1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.SlfCznsarJTBiwYG9Ihfz4J3BUyHIy3sgfE0rQTcoRc)

**⚙️ Plugin Configuration**
**General Settings**Configure senders, localization, and template categories. [![General Settings](https://private-user-images.githubusercontent.com/254747167/558175120-3a5362ea-826a-4c1d-8537-e8569d93e3c7.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTIwLTNhNTM2MmVhLTgyNmEtNGMxZC04NTM3LWU4NTY5ZDkzZTNjNy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MDA1NjFlMmMwZjBkZWY2MDJlZDYxMTExMzJjMGQ0NjRlYjk1NzEzYzI2NjQ2OTUzNmUyYjFkMGQzZjQxYWYxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.glIjPdiq-FmJMlbfmzyyJEC6BG9N6Swb-zBjElh2L7k)](https://private-user-images.githubusercontent.com/254747167/558175120-3a5362ea-826a-4c1d-8537-e8569d93e3c7.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MTIwLTNhNTM2MmVhLTgyNmEtNGMxZC04NTM3LWU4NTY5ZDkzZTNjNy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MDA1NjFlMmMwZjBkZWY2MDJlZDYxMTExMzJjMGQ0NjRlYjk1NzEzYzI2NjQ2OTUzNmUyYjFkMGQzZjQxYWYxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.glIjPdiq-FmJMlbfmzyyJEC6BG9N6Swb-zBjElh2L7k)

**Branding Settings**Customize logo, colors, and footer links for your email layout. [![Branding Settings](https://private-user-images.githubusercontent.com/254747167/558175094-c6fb26fe-b789-42f7-9bf7-7250bc8f7c81.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDk0LWM2ZmIyNmZlLWI3ODktNDJmNy05YmY3LTcyNTBiYzhmN2M4MS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yYjczZTgwYzE2NThmY2ExN2JhN2Y2ODljYTllOGJkYjMwNjg1MGNhZjFiY2RiYmJhMmI2YTU4OTAyMDAyMTAzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.eRf_CJ_a5nflBVpQ0wuZtu2oHF5H9GmA1C2kafncFDg)](https://private-user-images.githubusercontent.com/254747167/558175094-c6fb26fe-b789-42f7-9bf7-7250bc8f7c81.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDk0LWM2ZmIyNmZlLWI3ODktNDJmNy05YmY3LTcyNTBiYzhmN2M4MS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yYjczZTgwYzE2NThmY2ExN2JhN2Y2ODljYTllOGJkYjMwNjg1MGNhZjFiY2RiYmJhMmI2YTU4OTAyMDAyMTAzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.eRf_CJ_a5nflBVpQ0wuZtu2oHF5H9GmA1C2kafncFDg)

**Logging Settings**Control how sent emails are recorded and cleaned up. [![Logging Settings](https://private-user-images.githubusercontent.com/254747167/558175066-402e3704-3bd3-44de-beb1-249a17705913.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDY2LTQwMmUzNzA0LTNiZDMtNDRkZS1iZWIxLTI0OWExNzcwNTkxMy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yY2E1MDJmNzk2NjNjNjU4ODBjOTM2MTQyMmIyZDE5M2UwOTkxZTMzMjAyNTE3ZDhhZGY2NzdhZDFkNzBmNWIxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.YRFK9LZInio88axeouh6qGu2qNbrPWi9TC4d5jxtgao)](https://private-user-images.githubusercontent.com/254747167/558175066-402e3704-3bd3-44de-beb1-249a17705913.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDY2LTQwMmUzNzA0LTNiZDMtNDRkZS1iZWIxLTI0OWExNzcwNTkxMy5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yY2E1MDJmNzk2NjNjNjU4ODBjOTM2MTQyMmIyZDE5M2UwOTkxZTMzMjAyNTE3ZDhhZGY2NzdhZDFkNzBmNWIxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.YRFK9LZInio88axeouh6qGu2qNbrPWi9TC4d5jxtgao)

**Attachment Settings**Set file size limits and allowed extensions. [![Attachment Settings](https://private-user-images.githubusercontent.com/254747167/558175063-8408f05b-7545-49df-a26b-52dd6247caee.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDYzLTg0MDhmMDViLTc1NDUtNDlkZi1hMjZiLTUyZGQ2MjQ3Y2FlZS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MmM3MmJiMTBlY2YzMDNmZGMxZWFiZTY0OTIwMzJiYjYyMjA1Nzc1ZDAwNmQ3ZGU2OWE5MWEwY2U3OGYwYWEzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.rgn9yQLY6EmxCmirTW7vNzZjpsth57hFqaUP6ZMJZVM)](https://private-user-images.githubusercontent.com/254747167/558175063-8408f05b-7545-49df-a26b-52dd6247caee.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDYzLTg0MDhmMDViLTc1NDUtNDlkZi1hMjZiLTUyZGQ2MjQ3Y2FlZS5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MmM3MmJiMTBlY2YzMDNmZGMxZWFiZTY0OTIwMzJiYjYyMjA1Nzc1ZDAwNmQ3ZGU2OWE5MWEwY2U3OGYwYWEzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.rgn9yQLY6EmxCmirTW7vNzZjpsth57hFqaUP6ZMJZVM)

**Auth Email Overrides**Replace default Laravel auth emails with your custom templates. [![Auth Override Settings](https://private-user-images.githubusercontent.com/254747167/558175050-974704f6-e66a-4a59-8f07-a22d4b333924.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDUwLTk3NDcwNGY2LWU2NmEtNGE1OS04ZjA3LWEyMmQ0YjMzMzkyNC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZTljYzczYzhlMDY3ZTc3NDUxNzc5Mzg2OWMwZTc0MDMyYWRjNmY3OTdjN2YxMzQ1ZTM2M2RiNmUyYjZkYjg1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.nbvvvhXr3Gw3HBhANF64mmyTw6e8Hq11VgcmfMiMNLc)](https://private-user-images.githubusercontent.com/254747167/558175050-974704f6-e66a-4a59-8f07-a22d4b333924.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMDU3MDIsIm5iZiI6MTc4MjEwNTQwMiwicGF0aCI6Ii8yNTQ3NDcxNjcvNTU4MTc1MDUwLTk3NDcwNGY2LWU2NmEtNGE1OS04ZjA3LWEyMmQ0YjMzMzkyNC5qcGc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDYyMlQwNTE2NDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05ZTljYzczYzhlMDY3ZTc3NDUxNzc5Mzg2OWMwZTc0MDMyYWRjNmY3OTdjN2YxMzQ1ZTM2M2RiNmUyYjZkYjg1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZqcGVnIn0.nbvvvhXr3Gw3HBhANF64mmyTw6e8Hq11VgcmfMiMNLc)

###  Health Score

52

—

FairBetter than 96% of packages

Maintenance92

Actively maintained with recent releases

Popularity35

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 87.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Recently: every ~15 days

Total

13

Last Release

3d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7106a5652821f312e3e0f1541d41defe67b73cf5b5f5cb6641f10c7412475eed?d=identicon)[Finity Labs](/maintainers/Finity%20Labs)

---

Top Contributors

[![finity-labs](https://avatars.githubusercontent.com/u/254747167?v=4)](https://github.com/finity-labs "finity-labs (96 commits)")[![agencetwogether](https://avatars.githubusercontent.com/u/53862310?v=4)](https://github.com/agencetwogether "agencetwogether (13 commits)")[![rjsandim](https://avatars.githubusercontent.com/u/4038979?v=4)](https://github.com/rjsandim "rjsandim (1 commits)")

---

Tags

filamentlaravelmailtemplatesthemeslaravelemailtemplatesfilamentemail-builderemail-composer

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/finity-labs-fin-mail/health.svg)

```
[![Health](https://phpackages.com/badges/finity-labs-fin-mail/health.svg)](https://phpackages.com/packages/finity-labs-fin-mail)
```

###  Alternatives

[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3914.6k](/packages/rawilk-profile-filament-plugin)[stephenjude/filament-jetstream

A Laravel starter kit built with Filament inspired by Jetstream.

17760.2k3](/packages/stephenjude-filament-jetstream)[spatie/laravel-pdf

Create PDFs in Laravel apps

1.0k4.8M47](/packages/spatie-laravel-pdf)[croustibat/filament-jobs-monitor

Background Jobs monitoring like Horizon for all drivers for FilamentPHP

274325.8k8](/packages/croustibat-filament-jobs-monitor)[stephenjude/filament-debugger

About

104162.2k2](/packages/stephenjude-filament-debugger)[codewithdennis/filament-select-tree

The multi-level select field enables you to make single selections from a predefined list of options that are organized into multiple levels or depths.

329530.5k29](/packages/codewithdennis-filament-select-tree)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
