Content Types

Define, structure, and scale your data models with FlowCMS’s flexible, API-first schema system. Content types are the backbone of your digital experience platform.

📖 Reading time: ~8 min 🔄 Updated: Mar 14, 2025 📦 v3.2
Try Content Types

What are Content Types?

Content Types act as blueprints for your content. Just like database tables or classes in programming, they define the structure, fields, and relationships for each piece of content you create. Whether you're building blog posts, product catalogs, or event listings, Content Types give you full control over data modeling without writing infrastructure code.

With FlowCMS, you can define schemas visually through our dashboard or programmatically via JSON/YAML configuration, then sync them instantly to your team and APIs.

💡

Pro Tip: Content Types are version-controlled. Every schema change is tracked, auditable, and can be rolled back if needed.

Schema Definition

Define your Content Type using a structured JSON schema. FlowCMS supports nested objects, arrays, and complex relationships out of the box.

content-type.json
{
  "name": "Blog Post",
  "identifier": "blog_post",
  "version": "1.0.0",
  "fields": [
    {
      "name": "title",
      "type": "single_line_text",
      "required": true,
      "maxLength": 120
    },
    {
      "name": "slug",
      "type": "slug",
      "source": "title"
    },
    {
      "name": "content",
      "type": "rich_text",
      "required": true
    },
    {
      "name": "author",
      "type": "relation",
      "target": "user"
    }
  ]
}

Once saved, FlowCMS automatically generates:

  • A dedicated admin UI for content entry
  • REST & GraphQL endpoints for delivery
  • TypeScript/Python SDK types (optional)

Supported Field Types

FlowCMS provides a comprehensive set of field types to model any data structure. Each field supports validation, localization, and custom UI components.

🔤

Single Line Text

Short strings like titles, names, or slugs. Supports max length & regex patterns.

📝

Rich Text

Block-based editor with markdown, images, embeds, and custom components.

🖼️

Media

Image, video, or document upload. Auto-optimization & CDN delivery included.

🔗

Relation

Link to other content types. Supports 1:1, 1:many, and many:many relationships.

🔢

Number

Integers or floats with min/max constraints and formatting options.

📅

Date & Time

ISO-8601 timestamps, date pickers, and timezone-aware storage.

☑️

Select / Multi-Select

Dropdowns, tags, or radio groups with custom options and sorting.

🧩

JSON / Custom

Flexible key-value storage with schema validation or free-form JSON.

Validation & Constraints

Ensure data integrity before it ever reaches your API. FlowCMS supports built-in and custom validation rules at the field level.

validation-example.json
{
  "name": "email",
  "type": "single_line_text",
  "required": true,
  "validation": {
    "format": "email",
    "custom": "validateDomain",
    "error": "Please enter a valid company email."
  }
}

Custom Validators: Write validators in JavaScript/TypeScript and deploy them as plugins. They run in the edge layer before persistence.

API & Delivery

Every Content Type automatically maps to API endpoints. Query, filter, paginate, and transform your content with standard GraphQL or REST syntax.

GraphQL Query
query GetBlogPosts { "auto-generated from your schema"
  blogPosts(limit: 10, status: "published") {
    id
    title
    slug
    excerpt
    author {
      name
      avatar # auto-resolved relation
    }
    publishedAt
  }
}

Content is delivered globally via FlowCMS Edge CDN with automatic caching, invalidation hooks, and webhook support for build triggers.

Best Practices

  • Keep schemas lean: Split large content types into smaller, composable types linked via relations.
  • Use localization early: Enable multi-language support at the schema level before publishing content.
  • Version strategically: Treat schema changes like code deployments. Use staging environments for testing.
  • Leverage relations over duplication: Normalize your data to maintain consistency across your platform.
  • Define validation constraints: Catch errors at entry time, not at API runtime.
📚

Need more? Explore our complete Schema Reference Guide or join our Developer Discord.

Ready to structure your content?

Create your first Content Type in under 2 minutes. No credit card required.

Define Your First Schema →