Documentation

Everything you need to install, configure, and use Raise Import.

Installation

Install via Composer:

composer require raise-studio/import

Register the Plugin

Add the plugin to your PanelProvider to enable the Import Log resource (Pro):

use RaiseStudio\Import\RaiseImportPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(RaiseImportPlugin::make());
}

Quick Start

The simplest way to add import to any Filament table:

use RaiseStudio\Import\Actions\ImportAction;

public static function table(Table $table): Table
{
    return $table
        ->headerActions([
            ImportAction::make()
                ->model(User::class),
        ]);
}

Full Configuration

ImportAction::make('import')
    ->model(User::class)
    ->label('Import Users')
    ->fields([
        Field::make('name')->label('Name')->required(),
        Field::make('email')->label('Email')->rules('email|unique:users'),
        Field::make('phone')->label('Phone')->rules('numeric'),
    ])
    ->uniqueBy('email')
    ->onDuplicate('skip')
    ->chunkSize(500)
    ->rules([
        'name' => 'required|string|max:100',
        'email' => 'email|max:255',
    ])
    ->mutateBeforeCreate(function (array $row) {
        $row['password'] = bcrypt('default123');
        return $row;
    });

Configuration

Publish the config file:

php artisan vendor:publish --tag=raise-import-config

Available options (config/raise-import.php):

'chunk_size' => 500,              // Rows per transaction
'duplicate_behavior' => 'skip',   // skip | update | error
'max_file_size' => 50,            // MB
'preview_limit' => 10,            // Preview rows
'allowed_extensions' => ['csv', 'xlsx', 'ods'],

// Pro license
'license_key' => env('RAISE_IMPORT_LICENSE_KEY'),
'license_verify_url' => env('RAISE_IMPORT_LICENSE_VERIFY_URL',
    'https://license.raise-studio.com/api/license/verify'
),

Requirements

  • PHP 8.1+
  • Filament 4.x or 5.x
  • Livewire 3.x (Filament 4) or 4.x (Filament 5)

Field API

Field::make('email')
    ->label('Email Address')       // Display label
    ->rules('email|unique:users')  // Validation rules
    ->default('')                   // Default value
    ->options(['a', 'b', 'c'])     // Dropdown options
    ->required();                   // Mark as required
Method Description
make('key') Field key matching the database column
label('...') Display label shown in the UI
rules('...') Laravel validation rules
default('...') Default value when column is empty
options([...]) Dropdown options for selection
required() Mark the field as required

Pro Features

Pipeline System

Add global and field-level pipes to transform data during import:

ImportAction::make()
    ->model(User::class)
    // Global pipes — applied to every row
    ->pipe(new TrimStringsPipe())
    ->pipe(new LowercasePipe())
    // Field-level pipes — applied to specific columns
    ->fieldPipe('password', new BcryptPipe())
    ->fieldPipe('birthday', new DateFormatPipe('Y-m-d'));

Import History

Track every import with full CRUD, statistics, and error reports. Accessible via the Import Log resource registered through RaiseImportPlugin.

Queue Support

Large imports (>5,000 rows) are automatically dispatched to the queue. Configurable via:

'queue.enabled' => true,
'queue.threshold' => 5000,

REST API

Pro edition includes 5 API endpoints (authenticated via auth middleware):

Method Endpoint Description
POST /raise-import/upload Upload file, get headers + preview
POST /raise-import/preview Preview mapped data
POST /raise-import/import Execute import
GET /raise-import/template/{model} Download CSV template
GET /raise-import/errors/{id}/download Download error report

Translations

Publish translations to customize or add new languages:

php artisan vendor:publish --tag=raise-import-translations

Built-in languages: English (en) and Simplified Chinese (zh_CN).