Umbraco has served a lot of teams well for a long time. It is a mature, open-source .NET CMS with a solid editor experience and a large community. But when teams move to a modern JavaScript frontend (React, Next.js, Astro, Nuxt), they hit a familiar friction points: Umbraco's .NET backend doesn't fit naturally into a Node/JS deployment pipeline, the API layer requires configuration work that headless-first platforms handle out of the box, and marketing teams end up bottlenecked waiting on developers for routine content changes.
This is the migration pattern Tripwire Interactive faced. The game developer behind the Red Orchestra and Killing Floor franchises was running Umbraco when they decided to rebuild their corporate website on a modern React stack. They needed each new game to get a dedicated landing page, and their marketing team needed to manage Blog, Career, and Press content without pulling in a developer every time. They moved to Cosmic.
Here is how a migration like that works, and what to think about before you start.
Why teams leave Umbraco for headless
The common triggers:
- Frontend rebuild. Your team is moving to React, Next.js, Astro, or Nuxt and Umbraco's .NET backend creates a mismatch in the deployment stack.
- Marketing team bottleneck. Content changes require developer involvement because Umbraco's template system is tightly coupled to the backend.
- API-first requirement. You need to serve content to a web app, a mobile app, and potentially third-party integrations from one source of truth.
- Hosting and ops overhead. Self-hosted Umbraco requires server maintenance, .NET runtime management, and database ops. A hosted headless CMS moves that off your plate.
What you are migrating
A typical Umbraco-to-headless migration involves four things:
- Content types (Document Types in Umbraco) → Object Types in your headless CMS
- Content nodes (the actual content tree) → Objects
- Media library → hosted media in your headless CMS
- Frontend templates → your new JavaScript frontend (React, Next.js, etc.)
Step 1: Audit your Umbraco content model
Before touching anything, export and document your existing Document Types. For each type, note the type name and alias, every property and its data type, any nested content or block list structures, and relationships between types.
Step 2: Map Document Types to Object Types
In Cosmic, content is organized as Object Types with Metafields. Each Umbraco Document Type becomes a Cosmic Object Type. Each property becomes a Metafield.
Step 3: Export content from Umbraco
Umbraco's Content Delivery API (available in Umbraco 13+) is the cleanest export path. For older versions, use the Examine index or a custom controller to export content as JSON.
Step 4: Import content to Cosmic
With your content exported and your Object Types defined, import using the Cosmic JavaScript SDK. Run imports in batches with a small delay between inserts if you have hundreds of objects.
Step 5: Update your frontend
With content in Cosmic, your React or Next.js frontend queries it via the SDK instead of Umbraco's Delivery API. The pattern is the same; only the client changes.
What Tripwire got out of it
Tripwire Interactive migrated from Umbraco to Cosmic when rebuilding their corporate site on React. In the words of Owen Liversidge, Lead Developer:
"Cosmic allowed us to easily integrate a secure and fast back-end API into our React app. Cosmic fit our needs with its simple web-based dashboard so that members of our marketing team can create, edit, and delete new content on the fly. Our team has been enjoying the ease of use with the new system."
The marketing team can now manage game landing pages, blog posts, career listings, and press releases without filing a ticket.
Common migration pitfalls
- Rich text with embedded media. Migrate media assets first, then find-and-replace URLs in exported content before import.
- Nested content / Block List. These map to Cosmic repeater or parent metafield groups but the JSON structure differs. Budget extra time for a transform function.
- URL redirects. Preserve clean URLs or set up 301 redirects. Google has indexed those URLs.
- Editor training. Budget 30 minutes of walkthrough with your marketing team.
Next steps
Cosmic's free tier is the fastest way to validate the content model before committing to a full migration. Create a bucket, define one or two Object Types mirroring your Umbraco Document Types, and run a small batch import to see how the data lands.
Start for free on Cosmic — no credit card required.
Top comments (0)