> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://contentful.com/developers/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/developers/docs/_mcp/server.

# Content model best practices for Compose

> Read our recommendations on configuring your Compose content model | Linking pages | Creating dedicated content types

> **Info**
>
> Compose is being deprecated. It is in maintenance mode and won’t be updated with any new features. Current installations will work until the end of 2026.

## Linking pages

Use reference fields or Rich text links to **page type** entries to add links to other pages. This will make it easier to resolve and render the links in the frontend application as the linked entry will contain all the information that is required to generate a URL (title, slug, page type).

![Reference field validation for linking to pages in Compose](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/623a1d1f49abd5f409be46efb9e3a09b52137dfe3da5e557d3b1898765d2fdb4/docs/assets/images/compose/compose-linking-pages-validation.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260929%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260929T234811Z&X-Amz-Expires=604800&X-Amz-Signature=4696d687864d9ddd197b890b8110adf6fc27a166697ab36b38f0932628446e7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

We also recommend disabling the option **Show: "Create new entries"** on a reference field that can link to other pages.

![Compose page reference appearance](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/b3a7ee1102673883a176add8ec93489739c976f78533b180407fde952ddad51b/docs/assets/images/compose/compose-page-reference-appearance.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260929%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260929T234811Z&X-Amz-Expires=604800&X-Amz-Signature=e85014eb27e8605ec614b46a43af83307ad5ce20cc518b467d83997dfdd1dad6&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

## Component reference fields

Reference fields that link to content types that are considered single-use [component entries](/compose/page-types#page-components), such as SEO metadata or other page-specific content, should have the option **Show “Link existing entries”** disabled to prevent editors from unintentionally reusing such content.

![Compose page component reference appearance](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/b35bb96b2bbcacceaff3bb24ab4378726bb56f612d90b601d19f242fe766383a/docs/assets/images/compose/compose-component-reference-appearance.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260929%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260929T234811Z&X-Amz-Expires=604800&X-Amz-Signature=a736bb5930014965cabe2c81afefd13475116156c060d2d1e73ba768d486670b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

## Localizing pages

Compose supports field-level and entry-level localization of page content via the locale selector at the top of the page editor. Localization for media fields is not supported, so these fields are always treated as non-localized, allowing users to see and edit only the default locale’s values.

Non-localized fields are always displayed in the default locale, regardless of the selected locale. If the selected locale is different from the default one, a label is also displayed next to those fields, showing their respective locale.

### Supported localization patterns and best practices

Avoid relying on required fields for localizing content. This can create a possible issue where localized required fields block publishing of an entry if that entry has not been referenced to a locale. (This is more likely to happen if you use reference fields for region-specific content). For this reason, we also recommend always enabling “Allow empty fields for this locale” when adding or editing locales.

For more about localization, see our [guide on localization](/tutorials/general/setting-locales) and read more about [field-level vs entry-level localization](/help/field-and-entry-localization/).

If an entry has field validation errors in a locale where the entry isn't linked (i.e. the entry doesn't show up if you select that locale), those fields will be displayed when trying to publish the page. This allows the user to fix the issue in an otherwise unreachable value.

![Compose page editor validation error](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/2604ab887cc72c89edac9229da29cededdab0b6a92caaa8aea9d3c4d46cefe47/docs/assets/images/compose/compose-editor-validation-error.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260929%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260929T234811Z&X-Amz-Expires=604800&X-Amz-Signature=516b67471afeac3bea1457238c4b9b5b6c42995b245f361eb5f1fc6acb4e7c53&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)