filaforms.app
Getting Started

Installation

Install and configure the FilaForms core plugin.

Requirements

  • PHP: 8.3+
  • Laravel: 11+ or 12+
  • Filament: 4.x or 5.x
  • Tailwind CSS: 4.0+
  • Database: MySQL, PostgreSQL, or SQLite
FilaForms ships two major branches: 2.x for Filament 4 and 3.x for Filament 5. Composer resolves the correct branch automatically based on your Filament version.

Commercial License

FilaForms is a commercial package. Purchase a license at filaforms.app or contact hello@filaforms.app. After purchase you will receive a license key and access credentials via email.

Setup

Add Private Repository

Add the FilaForms Composer repository to your composer.json:

composer.json
{
    "repositories": [
        {
            "type": "composer",
            "url": "https://composer.filaforms.app"
        }
    ]
}

Install Package

Terminal
composer require filaforms/core -W

When prompted for credentials:

  • Username: your purchase email address
  • Password: your license key
The -W flag (--with-all-dependencies) lets Composer adjust packages already pinned in your composer.lock. It is required when adding FilaForms to an existing project whose lock file pins transitive dependencies (notably phpdocumentor/reflection-docblock) at versions that conflict with FilaForms' resolution. On a fresh project the flag is a no-op.

Configure Multi-Tenancy (Optional)

Multi-tenancy must be configured before running migrations. If you skip this step now, you will need to create a manual migration later to add the tenant column.

Publish the config file and enable multi-tenancy:

Terminal
php artisan vendor:publish --tag="filaforms-config"
config/filaforms.php
'features' => FeatureConfigurator::configure()
    ->enable(FilaFormsFeature::MULTI_TENANCY)

See Configuration for full multi-tenancy setup.

Run Migrations

FilaForms migrations auto-load — just run:

Terminal
php artisan migrate

This creates the forms, form_sections, form_fields, and form_submissions tables.

Want to own the migrations in your own database/migrations/ (e.g. to customize column types for your DB)? Publish them first:
Terminal
php artisan vendor:publish --tag="filaforms-migrations"
Then run php artisan migrate. Don't do both — you'll get "table already exists" errors. Pick one.

Include CSS Assets

If you haven't set up a custom Filament theme, follow the Filament theme guide first.

Add the plugin views to your theme CSS file:

resources/css/filament/admin/theme.css
@source "../../../../vendor/filaforms/core/resources/views/**/*.blade.php";

Register the Plugin

Add FilaFormsPlugin to your Filament panel provider:

app/Providers/Filament/AdminPanelProvider.php
use FilaForms\Core\FilaFormsPlugin;

$panel
    ->plugins([
        FilaFormsPlugin::make(),
    ]);

One-step install (alternative)

Prefer a single command? Run:

Terminal
php artisan filaforms:install

This publishes the config file (so you can enable optional features like multi-tenancy), publishes the migrations to your database/migrations/ directory, and offers to run them. Use this in place of "Configure Multi-Tenancy" + "Run Migrations" above.

Verification

After installation, you should see Fila Forms in your Filament navigation menu. Click it to access the form builder and start creating forms.

Upgrading

When upgrading to a new FilaForms release, run:

Terminal
composer update filaforms/core -W
php artisan migrate
php artisan filaforms:upgrade

filaforms:upgrade runs one-time data tasks like backfilling sequential submission numbers. It is idempotent — safe to run on every deploy.

Troubleshooting

"fixed to X.Y.Z (lock file version) by a partial update"

If composer require filaforms/core fails with an error mentioning a package "fixed to X.Y.Z (lock file version) by a partial update" — typically phpdocumentor/reflection-docblock 6.x or phpdocumentor/type-resolver 2.x — re-run with the -W flag:

Terminal
composer require filaforms/core -W

Why this happens: Composer's default require performs a partial update, which cannot upgrade or downgrade packages already pinned in composer.lock. FilaForms transitively depends on phpdocumentor/reflection ^6.1 (via spatie/laravel-data), which in turn requires phpdocumentor/reflection-docblock ^5. If a prior install pinned docblock at 6.x, only --with-all-dependencies lets Composer resolve the chain.

This is a Composer behaviour, not a FilaForms bug — the -W flag is the canonical fix when adding any package with conflicting transitive deps to an existing project.

"Nothing to migrate" after composer require

If you're on FilaForms 3.0.0-beta.27 or earlier (3.x) or 2.x prior to the equivalent fix, migrations were registered for publishing but not auto-loaded. Workaround: publish the migrations first.

Terminal
php artisan vendor:publish --tag="filaforms-migrations"
php artisan migrate

Upgrading to a newer FilaForms release fixes this — php artisan migrate will pick the migrations up automatically.

"no such table: forms" / "Table 'forms' doesn't exist"

You skipped (or didn't get a chance to run) php artisan migrate. Run it now:

Terminal
php artisan migrate

If migrate reports "Nothing to migrate", see the entry above.

vendor:publish errors with "Can't locate path: …add_number_to_form_submissions_table.php.stub"

Old FilaForms releases (before the fix that consolidated the submission-number column into the main migration) registered a migration that no longer ships. Upgrade to the latest 3.x or 2.x release. The other migrations in the same publish batch are unaffected.

Copyright © 2026