Content services
Overview
- Scope
- EAV custom fields, email editor/delivery, translations, and workflow engine
Key concepts
- Field Type
- An EAV type responsible for storage, loading, and validation of a custom-field value.
- Eav Extension
- A registered customization invoked around typed EAV value processing for an entity type.
- Event Mail
- Persisted log of a rendered and delivered email attempt.
- Idempotency Key
- An optional key used to prevent duplicate pending, queued, or sent event emails.
Structure
- Eav
- Models
- CustomField
- CustomFieldOption
- CustomFieldValue
- CustomFieldTranslation
- Servicesapp/Services/Eav/
- Admin Resourceapp/Filament/Admin/Resources/CustomFieldResource.php
- Models
- Mail
- Models
- MailEvent
- MailTemplate
- MailTemplateTranslation
- MailEventTemplate
- EventMail
- Servicesapp/MailEditor/
- Admin Resources
- EditorMailEventResource
- EditorMailTemplateResource
- Models
- Localization
- Models
- LangList
- LangText
- LangTranslation
- Models
- Workflows
- Contractsapp/Contracts/Workflow/
- Servicesapp/Services/Workflow/
Facts
- ValuePipeline validates through field type and extensions; on store extensions run before and after field-type storage, while on load the field type runs before extension post-processing. authoritative
- Built-in field types include text, long text, number, boolean, date, datetime, select, multiselect, and file. authoritative
- MailEventDispatcher resolves an active event and localized template, renders placeholders, creates an EventMail log, delivers HTML mail, and records sent or failed status. authoritative
- Open tracking stores a token and injects a pixel when enabled by the event or an explicit sendTemplate override. authoritative
- An idempotency key returns an existing EventMail whose status is sent, queued, or pending. authoritative
- The project contains a workflow contract, service layer, durable engine implementation, migrations for workflow state, logs, signals, timers, exceptions, and relations, plus an example ping workflow. authoritative
How-to guides
Send Event Mail
- resolve active event by code
- resolve locale, template, translation, and recipients
- return matching idempotent log when present
- create pending EventMail with rendered context
- render, optionally inject tracking, deliver, and persist sent or failed state
Rules
Architectural rule
Store custom-field values through the typed EAV pipeline so field-type and extension validation are applied.