Skip to main content
Add a required signature pad to an existing Filament resource. This example uses App\Models\User and the users table. Use your own resource model and table if the signature belongs elsewhere. By the end, an empty signature will fail validation, a drawn signature will save as SVG text, and the drawing will return when you edit the record.
Complete Installation first. The default signature mode needs no Spatie integration, file disk, queue worker or managed field group.

Build the workflow

1

Add the text column

Create a migration in your development application:
Use this body in the generated migration. Keep its generated filename:
Migration
Run your migration:
This also runs other pending migrations registered in your application, including package migrations. Review Database setup before deployment.
2

Allow the attribute on your model

Add signature to the model’s existing fillable list:
app/Models/User.php
Retain the attributes your model already uses. This mode stores a string, so do not add an array cast to signature.
3

Add SignatureField to the resource

Import the field and append it to your resource’s existing schema:
Resource form
If your resource delegates its form to a generated schema class, append the field in that class instead. The required field name is signature in both cases because it matches the model attribute.
4

Save and reopen a record

Use the resource’s normal create and edit actions. Complete its other required fields before testing the signature.

Why these settings?

The field validates its signature representation; it does not establish a person’s identity or replace your application’s permissions and approval rules.

Read the saved value

After saving, $user->signature is SVG text, not a storage path or a JSON document. Use the SignatureField guide before switching to a media-backed storage mode or presenting the result outside the form. If the drawing appears in the form but does not persist, check the column name, model assignment policy and save path using Saving & validation.

Use your own save action

A custom Livewire page should initialize the form with fill() and save the validated value returned by getState(). Do not write raw public form state directly to your model. The custom save example shows the complete pattern.

Configure the form

Choose sizes, variants and optional features.

Explore SignatureField

Choose drawing controls and other storage modes.
Last modified on October 16, 2026