How to add public-facing forms to your Filament app | FilaForms                                 [ ![Filaforms Logo](https://filaforms.app/logo.svg)FilaForms

 ](https://filaforms.app)  [ Features ](https://filaforms.app#features) [ Pricing ](https://filaforms.app#pricing) [ Blog ](https://filaforms.app/blog) [ Documentation ](https://docs.filaforms.app)  [ Try Demo ](https://filaforms.app/login) [ Get Started ](https://filaforms.app#pricing)

 [ Features ](https://filaforms.app#features) [ Pricing ](https://filaforms.app#pricing) [ Blog ](https://filaforms.app/blog) [ Documentation ](https://docs.filaforms.app) [ Try Demo ](https://filaforms.app/login) [ Get Started ](https://filaforms.app#pricing)

   ![FilaForms](https://filaforms.app/logo.svg) FilaForms

 TutorialsHow to add public-facing forms to your Filament app
===================================================

 filaforms.app/blog

  [    Back to blog ](https://filaforms.app/blog) [ Tutorials ](https://filaforms.app/blog/category/tutorials)

How to add public-facing forms to your Filament app
===================================================

 Manuk Minasyan ·  March 9, 2025  · 5 min read

 If you've built anything with Filament, you know this moment: your admin panel works, your resources are organized, everything's humming along. Then someone says "we need a contact form on the website."

Suddenly you're building public-facing forms outside Filament's comfort zone.

The problem with public forms in Filament
-----------------------------------------

Filament was built for admin panels. It handles the backend well. But the moment you need a form that *visitors* fill out (contact form, survey, job application, registration), you're on your own.

The standard approach goes something like this:

1. Create a Livewire component
2. Import Filament's form package into it
3. Build out the form schema manually in PHP
4. Handle the submission logic
5. Deal with validation
6. Set up email notifications
7. Build a way to view submissions in the admin
8. Figure out styling (Filament's form styles don't just work on public pages)
9. Realize you also need spam protection
10. Wonder why you're spending three days on a contact form

That last step is the real one. You're rebuilding form infrastructure that already exists, every time.

Why Filament's built-in forms don't solve this
----------------------------------------------

Filament's form builder package *can* technically run in a standalone Livewire component. The docs explain how. But there's a big gap between "technically possible" and "ready for production."

Here's what you still have to build yourself:

**Submission storage.** Where do responses go? You need a database table, a model, migrations.

**Submission management.** How do you view, filter, search, and export responses? You need a Filament resource for that.

**Notifications.** Admin gets an email when someone submits. Submitter gets a confirmation. You need to wire up mailables, queue them, handle failures.

**Analytics.** How many people viewed the form vs. started filling it out vs. actually submitted? You have no idea unless you build tracking.

**Spam protection.** Bots will find your form within hours. Honeypot fields, rate limiting, CSRF. Someone has to implement all of that.

Each of these takes a day. Maybe two. For every project.

What FilaForms does instead
---------------------------

FilaForms is a Filament plugin that handles all of the above. Install it, register it in your panel, and you get:

**A visual form builder.** Drag and drop, 25+ field types, conditional logic, multi-step forms. You build the form in your Filament admin panel, and it generates a public URL that visitors can access.

**Submission management.** Every response shows up in your admin panel. Filter, search, view details, bulk export to CSV. It's a Filament resource, so it works like the rest of your admin.

**Built-in analytics.** Form views, form starts, submissions, completion rate, average completion time. No third-party tracking needed. All data stays on your server, anonymized with SHA-256 fingerprinting.

**Notifications out of the box.** Admin email alerts, auto-responder emails to submitters, in-app Filament notifications. Toggle them on or off per form.

**Spam protection.** Honeypot fields, CSRF protection, XSS prevention, input sanitization. Enabled by default.

The installation takes about two minutes:

```
composer require filaforms/corephp artisan filaforms:install

```

Register the plugin in your panel provider:

```
use FilaForms\Core\FilaFormsPlugin;public function panel(Panel $panel): Panel{    return $panel        ->plugins([            FilaFormsPlugin::make(),        ]);}

```

That's it. "Fila Forms" appears in your Filament sidebar. Click it, create a form, publish it, share the URL.

A real example: contact form
----------------------------

Say your Laravel app needs a contact form at `yoursite.com/forms/contact`.

Without FilaForms, you'd create a Livewire component, write the form schema, create a `ContactSubmission` model, write a migration, build the validation rules, create a mailable for notifications, set up a Filament resource to view submissions, and add some basic spam protection. Conservatively, that's half a day.

With FilaForms, you open the form builder in your admin panel, drag in a text field for "Name", an email field for "Email", a textarea for "Message", toggle on admin notifications, and click publish. Five minutes, maybe.

The difference matters more by the second project. By the tenth, you've saved weeks. You stop rebuilding the same plumbing.

What about styling?
-------------------

One of the biggest headaches with Filament forms on public pages is CSS. Filament's styles are scoped to the admin panel. Getting them to render correctly on a public page, with your own Tailwind config and your own theme, turns into a fight.

If you've browsed the Filament GitHub discussions, you've seen threads like "Forms on public facing pages styling issues" and "Public facing Filament 4 form with Tailwind 4." These come up constantly.

FilaForms handles its own rendering. You add the plugin's views to your Tailwind CSS theme file:

```
/* resources/css/filament/admin/theme.css */@source "../../../../vendor/filaforms/core/resources/views/**/*.blade.php";@source "../../../../vendor/relaticle/custom-fields/resources/views/**/*.blade.php";

```

The forms render cleanly on public pages without fighting your existing styles.

When you might not need this
----------------------------

If you have one form in one project and you enjoy writing form code, build it yourself. Seriously. It's good practice and you'll understand the internals better.

But if you're running multiple Laravel/Filament projects, or your app needs more than a couple of forms, or you'd rather spend time on actual product features, that's when a dedicated form plugin pays for itself in the first week.

Getting started
---------------

FilaForms requires PHP 8.3+, Laravel 11+, and Filament 4.x or 5.x. It's a commercial plugin with a one-time license fee (no recurring subscription).

Full docs are at [docs.filaforms.app](https://docs.filaforms.app). You can also [try the demo](https://filaforms.app/login) to see the builder in action before purchasing.

 Related posts
-------------

 [  Tutorials   Jun 2, 2026

 GDPR-Compliant Forms in Laravel: A Practical Checklist
--------------------------------------------------------

GDPR compliance isn't a feature you buy — it's a set of habits. Here's the checklist we follow when building forms that collect data from EU users.

 ](https://filaforms.app/blog/gdpr-compliant-forms-laravel-checklist) [  Tutorials   May 22, 2026

 Stop Spam in Laravel Forms: Honeypot, Rate Limits, and Smarter Defaults
-------------------------------------------------------------------------

reCAPTCHA isn't the answer. Or at least, it's not the first answer. Here's the layered approach we use to keep junk out of FilaForms submissions.

 ](https://filaforms.app/blog/stop-spam-laravel-forms-honeypot-rate-limits) [  Tutorials   Apr 30, 2026

 File Uploads in Filament Forms: Storage, Validation, and Security
-------------------------------------------------------------------

File uploads are where most form builders cut corners. They'll let you add a file field and call it done, leaving you to figure out storage and validation

 ](https://filaforms.app/blog/file-uploads-in-filament-forms-storage-validation-and-security)

    ![FilaForms Logo](/logo.svg) FilaForms

 Laravel form infrastructure for Filament. Stop rebuilding forms on every project.

 ### Product

 [ Features ](https://filaforms.app#features) [ Documentation ](https://docs.filaforms.app) [ Blog ](https://filaforms.app/blog) [ Pricing ](https://filaforms.app#pricing) [ Contact ](mailto:hello@filaforms.app)

 ### Legal

 [ Terms of Service ](https://filaforms.app/terms-of-service) [ Privacy Policy ](https://filaforms.app/privacy-policy)

  © 2025-2026 FilaForms. All rights reserved.

 [    ](mailto:hello@filaforms.app) [    ](https://x.com/MinasyanManuk)
