Appearance
Events
FilamentCraft fires six events you can listen to — four lifecycle events plus two storefront form-submit events:
| Event | Fired when | Payload |
|---|---|---|
FilamentCraft\Events\SiteCreated | A new Site row is persisted (factory or manual). | Site $site |
FilamentCraft\Events\TemplateDraftSaved | The editor writes a new draft revision — the Save button and every autosave. | Template $template, TemplateRevision $revision |
FilamentCraft\Events\TemplatePublished | A revision is promoted to published_revision_id. | Template $template, TemplateRevision $revision |
FilamentCraft\Events\SectionAdded | A section is inserted via the Add-section modal or the preset picker. | Template $template, string $sectionId, string $sectionType, string $locale |
FilamentCraft\Events\ContactFormSubmitted | A visitor submits the built-in Contact section. | string $name, string $email, string $message, ?Site $site, string $sectionId |
FilamentCraft\Events\NewsletterSubscribed | A visitor subscribes via the built-in Newsletter section. | string $email, ?Site $site, string $sectionId |
All payloads are public readonly constructor properties. On SectionAdded, $sectionId is the editor-assigned instance id (e.g. hero-1a2b3c) and $sectionType is the registered section slug (e.g. hero). The form-submit values are already validated by the section's own action before the event fires.
php
use FilamentCraft\Events\NewsletterSubscribed;
use FilamentCraft\Events\TemplatePublished;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Log;
Event::listen(TemplatePublished::class, function (TemplatePublished $event): void {
Log::info("Published {$event->template->name} (revision {$event->revision->id})");
});
Event::listen(NewsletterSubscribed::class, function (NewsletterSubscribed $event): void {
Newsletter::subscribe($event->email, list: $event->site?->slug);
});