Skip to main content
In Publive (a headless CMS), Custom Entities let you define your own content types and structures beyond the default post model. Each custom entity is driven by a schema that describes its fields, and each entry is a document that holds values for those fields.
  • Schema – Defines the content type: its name, API identifiers, fields, groups, and settings (e.g. entry title, searchable/filter fields, allowed states, access control, custom URL rule (Coming soon)).
  • Entry – A single record for that content type, with values for each field defined in the schema.
  • Published entry – The version of an entry that is exposed via APIs for consumption by apps and websites.
Custom Entities = schema-defined content types + entries whose structure is flexible and defined by you.

How Custom Entities Can Be Used

  • Structured content types – e.g. “Product”, “Event”, “Recipe”, “Team Member” with a fixed set of fields and validation.
  • Multi-channel content – Same content type used by web, app, or other clients via APIs (e.g. JSON, HTML, XML, or plain text).
  • Relations – Link entries to Categories, Tags, Members, Forms, or other custom content types via Related fields.
  • Rich layouts – Use Components and Dynamic Zones to build modular blocks (hero, CTA, FAQ, etc.) inside an entry.
  • Filtered lists – Use Dynamic List fields to show lists of related content filtered by relations (e.g. “Posts in this Category” or “Products in this Collection”).
  • Single-page vs collection – Schemas can represent a collection (many entries) or a single content type (e.g. one “About Us” page); some schemas are used as reusable building blocks (e.g. shared with posts).

Example Scenarios

  • Product catalog – A “Product” content type with name, SKU, price, category, image, and description. Entries are products; APIs return them for storefront or app.
  • Landing page builder – A “Landing Page” content type with a Dynamic Zone where each section can be a different block type (Hero, Features, Testimonials, CTA). Each entry is a page; order and mix of blocks are flexible.
  • Event listing – An “Event” content type with title, start/end date and time, venue (related entity), and a Dynamic List for “Related events” filtered by category or tag.

Core Concepts

Schema

  • The schema is the definition of a content type: name, API slugs, response format, fields, groups, and settings.
  • Fields – Each field has a name, a type (e.g. short text, number, relation, component, dynamic zone, dynamic list), optional metadata (e.g. label, default), and validation rules.
  • Groups – Logical grouping of fields (e.g. “Content”, “SEO”) for organisation and UI.
  • Settings – Include which field is used as the entry title, which fields are searchable, which can be used as filters, allowed states, access control, custom URL patterns (Coming soon), and optional component preview.

Entries and Field Values

  • An entry belongs to one schema and holds one value per field.
  • Values are typed according to the field type (text, number, date, media, relation, component(s), or dynamic list configuration).

Relations and Taxonomies

  • Related fields link to other content: Categories, Tags, Members, Forms, or other custom content types (and posts).
  • Dynamic List – Lets you define a list by content type and filters (e.g. by category or tag). The list is resolved when the entry is delivered via the API. System taxonomies (Category, Tag, Member, Form) cannot be used as the main content type for a dynamic list; the list is based on custom content types (or posts).

Field Types

TypeDescriptionExample useLimitations / notes
Short textShort stringTitle, name, slugMaximum length applies.
Long textLong stringSummary, description
Rich textFormatted long text (e.g. HTML)Body content
IntegerWhole numberCount, year
DecimalDecimal numberPrice, rating
DateDate onlyEvent date
Date and timeDate and timePublish timeOptional display format.
BooleanYes/noFeatured, active
EmailEmail addressContact email
URLWeb addressLink
Phone numberPhone numberContact number
Publive mediaImage or file from Publive media libraryImage, attachmentReferences a single media item (id, url, type, filename in API).
JSONArbitrary JSONConfig, metadata
RelatedLink to another content item or taxonomyAuthor, category, related postSingle or multiple relations depending on configuration.
EmbedEmbedded content (e.g. oEmbed / iframe)Video, social embed
ComponentOne reusable block (single or repeatable)Author card, feature listSee Components section. Can be limited to one instance or allow multiple instances of the same block.
Dynamic zoneOrdered list of blocks; each block can be a different typePage sections (hero, CTA, FAQ)See Dynamic Zone section.
Dynamic listList of related content defined by type and filtersRelated posts, products in collectionSee Dynamic List section. Cannot use system taxonomies as the list’s content type.
Validation (e.g. required, format) is configured per field in the schema.

Components

What a Component Is

A Component is a reusable content block with its own structure: a component schema defines the fields (text, number, media, relation, or even another component). An instance of a component is a single “block” that fills in those fields.

Dynamic Zone

What a Dynamic Zone Is

A Dynamic Zone is an ordered list of blocks where each block can be a different type. You define which block types (component schemas) are allowed; for each entry, editors choose which blocks to add and in what order.

Dynamic List

What a Dynamic List Is

A Dynamic List field does not store the actual list of items. It stores configuration: which content type to list and how to filter it (e.g. by category, tag, or other relation). When the entry is delivered via the API, the system uses this configuration to resolve and return the list of matching items.