> 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/_mcp/server. # Hosting an app > Learn more about the different options of how to host an app | Hosting an app with Contentful or externally | Static site hosting For an app to be accessible, Contentful needs to know the public URL of the app. For backend apps using [App Events](/extensibility/app-framework/app-events), you will need to provide the public URL. For frontend apps, you also have the option to host directly with Contentful. ### Hosting with Contentful When hosting with Contentful, you upload your build folder which creates an [`AppBundle`](/extensibility/app-framework/app-bundle). You can upload multiple `AppBundle`s for the same app, just like you would deploy a different version for your website with each update. You can promote or roll them back at any time. Keep in mind to include an `index.html` file in the output folder root as an entry point. There is also a limit of 10MB and a maximum of 500 files for each upload. To upload an `AppBundle`, you can use the [app management view](https://app.contentful.com/deeplink?link=app-definition-list) and upload your output folder directly under the "Bundles" tab. Before uploading, make sure to build your code first (`npm run build`). You can also use [`create-contentful-app`](/extensibility/app-framework/create-contentful-app) on your CLI of choice. Running `npm run upload` will run you through the necessary steps for uploading your code. ![Using CLI for AppBundle](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/1004c440161ef1335bb96943e0dfb3e619d3adf2f026562b0583f6ff48eaabf2/docs/assets/apps/app_bundle_upload_cli.svg?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=20260929T234905Z&X-Amz-Expires=604800&X-Amz-Signature=f174048d7c0efed31f44db258852b65d55a3d4fb21d4718f2c6732aac746d1f1&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) If you haven't used `create-contentful-app` for bootstrapping, or are using an earlier version of it, you can run the global command `npx @contentful/app-scripts upload`. ### Hosting an app outside of Contentful It is also possible to use any static site hosting by linking your app's public URL in your `AppDefinition`. You can achieve this by toggling off the "Hosted by Contentful" option in the app management view under the "General" tab. This allows you to enter a URL for your app instead. ![Using CLI for AppBundle](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/contentful.docs.buildwithfern.com/bca9e9a93d1b3e17a68a23cc116e3c3d515c0e2fbcf841958031236e666b847e/docs/assets/apps/independent-app-hosting.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=20260929T234905Z&X-Amz-Expires=604800&X-Amz-Signature=7d1b3aea5dc8a9661cb0671eefbb8cedb8e936c1a458e36eb364c886c9014187&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) > Learn more about the different options of how to host an app | Hosting an app with Contentful or externally | Static site hosting