Filament Contact Logs is a Filament 3.x plugin that performs a clear and critical function: it records in a log every time a contact is sent. Regardless of the contact's final destination, the plugin ensures that each submission is tracked in detail. This allows operators to have a complete history of all communications received, providing a clear and organized picture of interactions and feedback. Thus, its main function is to ensure total traceability of contacts, facilitating management and follow-up by operators.
Install the package via composer:
composer require postare/filament-contact-logs
Publish and run the migrations:
php artisan vendor:publish --tag="filament-contact-logs-migrations"
php artisan migrate
Publish the config file:
php artisan vendor:publish --tag="filament-contact-logs-config"
Published config file contents:
return [
/*
* When the clean-command is executed, all recording activities older than
* the number of days specified here will be deleted.
*/
'delete_records_older_than_days' => 365,
/*
* Model to use to log activity.
*/
'contact_log_model' => \Postare\FilamentContactLogs\Models\ContactLog::class,
/*
* List of Models associated with contact messages, it is not mandatory
* to specify them, it is for obtaining a more user-friendly table.
*/
'mappings' => [
// EXAMPLE:
// 'App\Models\Property' => [
// 'type' => 'Property',
// 'pluralType' => 'Properties',
// 'label' => 'ID: {id}',
// 'titleField' => 'name',
// 'route' => 'property',
// 'record_identifier' => 'slug',
// ],
],
];
// app\Providers\Filament\AdminPanelProvider.php
$panel
...
->plugins([
...
\Postare\FilamentContactLogs\FilamentContactLogsPlugin::make(),
]);
// Use HasContactLogs trait in your model
use Postare\FilamentContactLogs\Traits\HasContactLogs;
Add a contact log to a model:
Property::find(1)->addContactLog([
'content' => 'A beautiful message',
'subject' => 'A subject',
'sender_id' => auth()?->id(), // optional
'sender_email' => '[email protected]',
'sender_name' => 'John Doe',
'sender_phone' => '1234567890', // optional
]);
Add a contact log without a model:
contactLog([
'content' => 'A beautiful message',
'subject' => 'A subject',
'sender_id' => auth()?->id(), // optional
'sender_email' => '[email protected]',
'sender_name' => 'John Doe',
'sender_phone' => '1234567890', // optional
]);
Automatically delete logs based on config settings:
// Add the following to your app\Console\Kernel.php
protected function schedule(Schedule $schedule): void
{
$schedule->command('contact-logs:clean')->daily();
}
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.