Contentful Custom App Introduction - From CMS Dashboard UI Extensions to Server-Side Processing, Explaining What You Can Do

Contentful Custom App Introduction - From CMS Dashboard UI Extensions to Server-Side Processing, Explaining What You Can Do

I explained the overall structure, components, and key points for development regarding Custom Apps, which can extend Contentful's dashboard and workflows.
2026.07.23

This page has been translated by machine translation. View original

This is Konishi from the Berlin office.

Contentful, the headless CMS, has an extension mechanism called "Custom App." It allows you to replace field input UIs in the dashboard, integrate external service workflows, run automated processes tied to content lifecycles, and much more — the range of what you can do is quite broad.

However, while the official documentation thoroughly covers individual features, I found it difficult to grasp "what the overall structure looks like" and "what can be done and to what extent."

In this article, I'll organize the concepts behind Custom Apps, summarize the components and their respective roles, and highlight the key points to keep in mind during development.

What is a Contentful Custom App

Contentful is an API-first headless CMS for managing and delivering content. It is commonly used to manage articles and information for websites and apps, with the basic workflow being: create and edit entries in the management interface (dashboard), then deliver them to the frontend via API.

Custom App is a mechanism for extending Contentful's dashboard and processing pipeline in custom ways. A feature previously provided under the name "UI Extension" has been integrated into the current App Framework.

Typical Use Cases

Dashboard UI Extensions

You can replace the input UI for fields with your own custom implementation. For example, you could introduce a custom editor, display a color picker instead of a text field, drop a pin on a map to save coordinates, or create a UI that allows searching and referencing data from external services. You can also add supplementary information and action buttons to the sidebar.

Screenshot 2026-07-23 at 00.28.44

Screenshot 2026-07-23 at 00.39.28

External Service Integration

You can fetch data from external APIs to reference and preview within Contentful, or incorporate processes that notify and sync with external systems when content is published.

Content Workflow Automation

You can incorporate pre-publication validation and approval flows, or trigger event-driven automated processes such as AI translation or image conversion when an entry is published.

Overview of the App Framework

The components that make up a Custom App can be broadly divided into the following four elements.

Element Role Where it runs
Locations Determines where in the dashboard UI the App is displayed Browser
App SDK API for the App's frontend to access Contentful data Browser
Functions Server-side logic running in the App's backend. Handles processes involving secrets such as external API keys Server (Contentful-hosted)
Forma 36 Contentful's official design system. A component library for unifying the App's UI with Contentful itself Browser

The key point is the two-layer architecture of App SDK (frontend) and Functions (backend). The split is: UI interactions on the dashboard are handled by the App SDK, while processes that should run server-side — such as secret management and external API calls — are handled by Functions.

Forma 36 is not required, but using it gives your App a consistent look and feel with Contentful itself.

App Hosting

There are three options for where to host the frontend portion of a Custom App.

  • Deploy to Contentful: Upload a bundle to Contentful and have them host it. This is convenient and reliable for production use, as it eliminates infrastructure management and reduces additional failure points.
  • External URL endpoint: Host via your own server or CDN and register the URL with Contentful. Useful when you want to use existing infrastructure or have special requirements.
  • localhost: For local development. Register a localhost URL and develop and debug while running it locally.

In addition, the Contentful Marketplace publishes Marketplace Apps created by official and third-party developers and approved by Contentful. If something fits your needs, you can adopt it directly without building your own, which is the quickest approach.

Screenshot 2026-07-23 at 00.11.52

Locations - Where to Insert in the UI

A Location determines where in the dashboard the App is displayed. It is also one of the first design decisions you will make when developing a Custom App.

Location Where it appears When to use it
App Configuration During App installation / settings screen Manage configuration values for the entire App
Entry Field Entry field input UI Replace the field UI and input method
Entry Sidebar Sidebar of the entry editing screen Display supplementary information or action buttons
Entry Editor The entire entry editing screen Add a completely new editing tab
Page A standalone page within Contentful Add a dashboard or report screen
Dialog Modal dialog Display search/selection UIs in a separate window
Home Contentful home screen Add custom widgets to the home screen

Entry Field example:
Screenshot 2026-07-23 at 00.31.50

Entry Sidebar example:
Screenshot 2026-07-23 at 00.34.04

A single App can have multiple Locations. For example, a common pattern is to provide a settings screen via App Configuration while also replacing the field input UI via Entry Field.

App SDK - What the App Can Access

The App SDK is a client library that allows an App rendered at a Location (built with React, etc.) to interact with Contentful. Upon initialization, the App receives an SDK object, which it uses to access the current field value and entry information.

Here are some of the key APIs.

API What it does
sdk.field Get and update the current field value
sdk.entry Access all fields across the entire entry
sdk.space Search and create entries and assets within the space
sdk.notifier Display notifications (success, error, etc.) in the UI

An important concept here is the CMA Adapter. The App SDK includes a built-in adapter for directly calling the Content Management API (CMA), and operations are executed under the permissions of each individual user rather than the developer. This means users cannot perform operations beyond their own permission level, so there is no need to implement custom permission checks on the App side.

Functions - Server-Side Processing

Functions is a serverless execution environment hosted by Contentful. It allows you to add backend logic to your App and safely handle secrets such as external API keys.

There are three types of Functions.

App Event Functions

These subscribe to content lifecycle events — such as entry publication, updates, and deletion — and execute processes in response.

Use cases include filtering events (processing only specific content types), transforming request bodies, and automated processes such as notifying external services.

App Action Functions

These are general-purpose backend processes that can be called from the App's frontend or from other Apps. Write here any logic that cannot be placed on the frontend, such as integrations with external APIs or data processing.

For managing authentication credentials, there is a mechanism called App Identities that allows the App to securely store secrets.

Functions on Delivery (GraphQL)

These are Functions that operate in the path of GraphQL delivery requests. They allow real-time processing and integration of content at delivery time. For example, you can use them to merge content from an external data source into a Contentful response.

Development and Practical Matters

For details on setting up a Custom App environment and the steps for running and developing locally, please refer to a previous article I wrote.

https://dev.classmethod.jp/articles/contentful-app-framework-tutorial-create-a-custom-app/

In this article, I'll cover some best practices to keep in mind during development.

Permission Design

Contentful permissions are set at the Organization, Space, and App Definition levels. While you can grant an App unlimited permissions, using the CMA Adapter described earlier means operations are executed under the user's own permissions, making it straightforward to design according to the principle of least privilege.

A safe approach is to start with a configuration that delegates to user permissions via the CMA Adapter, and only add App-specific permissions individually when absolutely necessary.

Separating Frontend and Backend

Any processing that requires authentication credentials (API keys, etc.) should be consolidated into backend Functions. Never store secrets on the frontend (Location side). Since the code of an App running in the browser is visible to users, there is a risk of secrets being leaked.

Field Validation

Even when building a custom UI, you can take advantage of validation rules already configured on the Contentful side (required checks, character limits, etc.).

You can subscribe to validation error changes using sdk.field.onSchemaErrorsChanged() and reflect error states in your custom UI. However, please note that sdk.field.setInvalid() only changes the visual appearance of the field (a red error bar) and does not have the ability to block publishing.

Fallback on Failure

If you replace an individual field UI as an Entry Field and that App encounters a failure (especially when hosted externally), the field becomes inoperable.

On the other hand, if you configure the App to add a new editing tab as an Entry Editor, you can simply remove the App during a failure and continue editing using the original field UI.

Using Forma 36

Using Contentful's official design system "Forma 36" gives you ready-made UI components such as buttons, text fields, and tables, and helps maintain visual consistency with Contentful itself. It can introduce breaking changes, so caution is needed, but it also saves you the effort of writing CSS from scratch — so unless you have specific requirements, using it is the easier choice.

Summary

Custom Apps are built on three pillars: Locations (where in the UI to display), App SDK (data access on the frontend), and Functions (server-side processing).

The strength lies in being able to incorporate into Contentful the things that standard features cannot reach — namely, custom input UI, integration with external services, and event-driven automated processing.

There is no need to use everything from the start. I think a gradual approach works best: begin by building a small App using only Locations and the App SDK, then add Functions when you need secret management or event processing.

Customers using Contentful through Classmethod can also use these Custom Apps. Please feel free to consult with your representative.

Reference Documentation


「AI×SaaSで加速するWeb制作」ウェビナー開催

60分でわかる、Contentful・Cloudinary・v0・Vercelの連携によるWeb制作ワークフロー。
アイデアを即座に形にする 新しい仕組みを 豊富な実践デモ を交えながら解説します。開発のスピードアップ、リソース最適化、コスト削減を実現したい方は必見です。

AI×SaaSで加速するWeb制作ウェビナー

とりあえず申し込む



SaaS導入支援はクラスメソッドに!

クラスメソッドでは Contentful・Cloudinary・v0・Vercel など各種SaaS製品 の導入支援もしております。
具体的に課題をお知らせいただければ、適した商材のご提案も可能です。製品の詳細や支援の内容についてお気軽にお問い合わせください。

クラスメソッドに相談する

Share this article