format('Y-m-d-H-i-s'); } // Define the completed notification message public static function getCompletedNotificationBody(): string { return 'Your export has been completed and is ready to download.'; } } // In your observer namespace App\Observers; use App\Models\YourModel; use App\Filament\Exports\YourModelExporter; use Filament\Actions\Exports\Models\Export; use Filament\Actions\Exports\Enums\ExportFormat; class YourModelObserver { public function created(YourModel $model): void { $this->triggerExport(); } public function updated(YourModel $model): void { $this->triggerExport(); } protected function triggerExport(): void { // Create a new export $export = Export::create([ 'exporter' => YourModelExporter::class, 'format' => ExportFormat::Csv, // or Xlsx, etc. 'user_id' => auth()->id(), // If you need to associate with a user ]); // Queue the export $export->queue(); } } // In your Filament Resource namespace App\Filament\Resources; use App\Filament\Exports\YourModelExporter; use Filament\Resources\Resource; use Filament\Actions\ExportAction; class YourModelResource extends Resource { public static function table(Table $table): Table { return $table ->actions([ // This allows manual exports from the UI ExportAction::make() ->exporter(YourModelExporter::class) ]); } } // Optional: Custom Export Model (if you need to extend functionality) namespace App\Models; use Filament\Actions\Exports\Models\Export as BaseExport; class Export extends BaseExport { // You can add custom functionality here protected $fillable = [ 'exporter', 'format', 'user_id', ]; } // If using custom Export model, register it in config/filament.php /* 'exports' => [ 'model' => App\Models\Export::class, ], */