Docs

Content services

uticms.content-services · verified 2026-07-11

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
  • Mail
    • Models
      • MailEvent
      • MailTemplate
      • MailTemplateTranslation
      • MailEventTemplate
      • EventMail
    • Servicesapp/MailEditor/
    • Admin Resources
      • EditorMailEventResource
      • EditorMailTemplateResource
  • Localization
    • Models
      • LangList
      • LangText
      • LangTranslation
  • 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

  1. resolve active event by code
  2. resolve locale, template, translation, and recipients
  3. return matching idempotent log when present
  4. create pending EventMail with rendered context
  5. 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.