Contentful content models and reusable blocks, explained for marketers

In briefHow Contentful content types, entries, references and reusable blocks work, and how marketers build Next.js pages from approved components without a developer.

In Contentful, a content model is the set of building blocks your site is made from: content types (the templates), entries (the filled-in content) and references (the links between them). When a team models reusable blocks such as a hero, feature grid, call to action and FAQ, marketers can assemble new pages from approved pieces, and a Next.js front end renders each block with a matching component. Developers build the system once; marketers use it every day.

This post explains the concepts in plain language. If you are still deciding whether you need a headless CMS at all, start with what is a headless CMS, and do you need one?.

The vocabulary you need

Contentful termWhat it meansEveryday analogy
SpaceA container for one project's content, model and settingsA filing cabinet for one brand or site
Content typeA template with defined fieldsA blank form
FieldOne piece of a content type (text, image, date, reference)A box on the form
EntryOne piece of content created from a content typeA filled-in form
AssetAn uploaded file such as an image, video or PDFA photo clipped to the form
ReferenceA field that links one entry to other entries"See attached"
LocaleA language or region version of contentA translated copy
EnvironmentA separate copy of the model and content for testingA practice cabinet

Content types and entries

A content type describes the shape of a kind of content. A "Blog post" content type might have:

  • Title (short text)
  • Slug (short text, unique)
  • Excerpt (short text, character limit)
  • Hero image (media)
  • Body (rich text)
  • Author (reference to an Author entry)
  • Category (reference to a Category entry)
  • SEO title and description (short text)

An entry is one post created from that template. Editors fill in the fields; they never touch layout code.

Fields can have validations: required fields, character limits, allowed image sizes, specific patterns for slugs, or a fixed list of options. Validations are how you build guardrails into the CMS, so content stays on brand without someone policing it by hand.

References: connecting content

A reference field links an entry to one or more other entries. That is what makes structured content reusable:

  • A Blog post references an Author. Update the author's bio once and it changes on every post.
  • A Service page references a set of Testimonial entries. The same testimonial can appear on three pages.
  • A Location page references Staff entries and a shared Hours entry.

References can be restricted to specific content types. For example, a "Related posts" field can be set to accept only Blog post entries. That restriction is the foundation of a block-based page system.

Reusable blocks: how marketers build pages

This is where Contentful earns its keep for marketing teams. Instead of a single page body that anyone can fill with anything, you model blocks (some teams call them components or sections) as their own content types:

BlockTypical fieldsWhat it renders
HeroEyebrow, headline, subhead, image, primary and secondary buttons, layout variantThe top banner of a page
Feature gridHeading, intro, list of feature items (icon, title, text), column countA grid of benefits or services
CTAHeadline, supporting text, button label, button link, background styleA call-to-action band
FAQHeading, list of question-and-answer entriesAn accordion, plus FAQ structured data
Testimonial stripList of testimonial referencesCustomer quotes
Rich text sectionHeading, rich text bodyA standard content section

Then you create a Page content type with a title, slug, SEO fields and a single reference field called something like "Sections", restricted to those approved block types.

A marketer building a landing page:

  1. Creates a new Page entry and sets the title and slug.
  2. Adds a Hero block, then a Feature grid, then a Testimonial strip, then an FAQ, then a CTA.
  3. Reorders blocks by dragging them in the Sections list.
  4. Reuses an existing CTA entry that is already approved, rather than writing a new one.
  5. Previews the page, then publishes.

No developer is needed for any of that. Because each block's fields have validations and each block has a designed component on the front end, the page stays on brand no matter who builds it. When a team needs something new, such as a pricing table, a developer adds one new content type and one new component, and it becomes available to every page.

Variants instead of one-off blocks

A good model avoids a separate block for every design idea. Instead, a Hero has a "variant" field with a short list of options (image right, image left, full-bleed background). Fewer content types, more flexibility, less training.

Rich Text with embedded entries

Contentful's Rich Text field stores formatted text as structured data rather than raw HTML. Editors get headings, lists, links, quotes and tables, and they can also embed entries and assets inside the text:

  • Block-level embeds drop a full entry into the flow of an article, such as a CTA block halfway through a blog post, or a product card.
  • Inline embeds place a small entry inside a sentence, such as a glossary term or a price that stays current.
  • Entry hyperlinks link text to another entry, so the URL is resolved from that entry's slug and does not break if the slug changes.

Rich Text fields can be restricted to specific embeddable content types, so writers can add an approved CTA to a post but cannot paste in arbitrary code. On the front end, a Rich Text renderer (Contentful provides one for React) converts each node into a component, including the embedded entries.

Locales: one model, many languages

Contentful supports multiple locales per space, such as en-US, es-US and fr-CA. You decide which fields are localizable. A headline is usually localized; a product SKU or an image used for all markets might not be.

Each locale can have a fallback locale, so if a translation is missing, the site shows content from the fallback instead of an empty field. That keeps pages complete while translations catch up. The Next.js front end simply requests content for the locale of the page being built.

Environments: changing the model safely

Environments are separate copies of a space's content model and content. The main environment (often called master) feeds the live site. Developers create a sandbox environment to:

  • Add a new block type or field.
  • Rename or restructure content types.
  • Run migration scripts that move existing content into the new structure.
  • Test the front end against the changed model before anything goes live.

Environment aliases let a team point "master" at a newly prepared environment, which makes larger model changes cleaner to roll out and roll back. Scripting model changes as migrations, instead of clicking around in the web app, keeps every environment consistent.

How a Next.js front end renders blocks

On the front end, the pattern is simple. Next.js fetches the Page entry for a slug, including its referenced Sections, then loops through them and picks a component based on each entry's content type:

const blocks = {
  hero: Hero,
  featureGrid: FeatureGrid,
  cta: CallToAction,
  faq: Faq,
};

export function Sections({ sections }) {
  return sections.map((entry) => {
    const Block = blocks[entry.sys.contentType.sys.id];
    return Block ? <Block key={entry.sys.id} {...entry.fields} /> : null;
  });
}

Each component knows how to render its fields with the site's design system. Pages are typically pre-rendered and refreshed when an editor publishes, using a webhook, so the live site stays fast. That is a big part of why we pair Contentful with Next.js; see React and Next.js for business websites.

A few details make the experience good for editors:

  • Preview. Contentful's Preview API returns draft content, and Next.js draft mode shows unpublished pages exactly as they will look.
  • Live updates. Contentful also offers tooling for live preview and visual editing that can be wired into a Next.js build, so editors see changes as they type.
  • Structured data. The FAQ block can output FAQ schema automatically, and the Page type's SEO fields feed titles, descriptions and Open Graph tags.

Roles and governance

Contentful's roles and permissions let you decide who can edit which content types, who can publish, and who can change the model. A common setup:

  • Developers manage the content model and environments.
  • Marketing leads can publish pages and approve blocks.
  • Contributors can draft but not publish.

Combined with validations and a limited block library, this is how larger teams keep a site consistent without slowing down.

Common modeling mistakes

  • Modeling pages instead of content. A "Homepage" content type with 40 fields is hard to reuse. Model blocks and compose pages from them.
  • Too many block types. Twenty nearly identical heroes confuse editors. Use variants.
  • Design decisions in content. Fields like "font size" or "margin" belong in the front end. Keep content fields about content.
  • No validations. Without limits and required fields, quality depends on memory.
  • Changing the model in production. Use environments and migrations.

How we'd decide

Contentful is a strong fit when several people or teams publish content, when the same content feeds multiple pages or channels, or when you want marketers building landing pages from an approved block library on a fast Next.js front end. For a simple blog or a small site edited by one person, the modeling work is more than you need, and WordPress or Webflow will get you there faster.

If you want a content model your marketing team can actually use, see our headless CMS services or talk to us.

Questions people ask

What is a content model in Contentful?
A content model is the set of content types your space uses, such as Page, Blog post, Hero or FAQ, and the fields each one has. It defines the structure of your content so it can be reused and rendered consistently on any channel.
What is the difference between a content type and an entry?
A content type is the template, like a form with defined fields. An entry is one filled-in instance of it, such as a single blog post or a single hero banner.
Can marketers build pages in Contentful without a developer?
Yes, once the model and components are in place. Marketers create a page entry, add approved blocks such as a hero, feature grid, FAQ and call to action, and arrange them in order. Developers only get involved when a new kind of block is needed.
How does Contentful handle multiple languages?
Contentful supports locales. Each field can be marked as localizable, so editors enter translations for that field per locale, and fallback rules decide what shows when a translation is missing.
What are Contentful environments used for?
Environments are separate copies of a space's content model and content. Teams use them to test model changes and migrations safely before applying them to the main environment the live site reads from.

Planning a website?

Get a platform recommendation and a fixed quote within one business day.

Start a project

Tell us what the site needs to do.

Share a few details and a budget range. We reply within one business day with a plan, a platform recommendation and a fixed quote.