WordPress to Contentstack Migration: What Changes at Enterprise Scale

Moving the content is only one part of moving the website. Contentstack’s legacy WordPress XML converter handles authors, categories, assets, and published posts; its Migration Framework provides a guided mapping and test-migration workflow. Neither should be treated as a complete website migration. On a large WordPress estate, the work also includes translating ACF fields, blocks, plugin functionality, integrations, and URL behavior into a maintainable Contentstack implementation.

eight25 is a Contentstack Preferred Partner with experience delivering large, multilingual migrations. Its published NetApp migration story describes approximately 14,000 pages across 10 languages moving from Tridion to Contentstack. Although the source platform was different, the project illustrates relevant enterprise challenges: content inventory, localization, integrations, and phased delivery. For a WordPress migration, discovery should establish the plugin dependencies and target content model before migration scripts are finalized.

What the WordPress to Contentstack migration tooling moves, and what it leaves behind

At enterprise scale, a WordPress to Contentstack migration combines content transfer with content modeling, frontend implementation, and integration decisions. The legacy XML converter does not rewrite internal links and limits post migration to published posts. The Migration Framework adds content-type, field, and language mapping, plus a test migration. Custom structures and dynamic functionality still need assessment, transformation, and validation against the target Contentstack model.

WordPress objectCovered by the converterWhat scale adds
Published postsDocumented supportValidate imported fields and content; handle other statuses separately and recreate access controls where required
Authors and categoriesDocumented supportValidate author details, category relationships, and the target taxonomy
Media assetsDocumented asset extractionValidate downloads, metadata, references, and any public URL changes
Internal linksNo automatic rewritingPreserve valid URLs or rewrite links using the approved URL map

Custom structures can materially affect the migration budget. In WordPress, content and presentation rules may be distributed across post types, custom fields, block markup, plugin settings, and theme code. Discovery needs to identify those dependencies and decide how they should work in Contentstack. A successful export is the starting point, not evidence that the target website is ready.

Where the WordPress content model actually lives

Post types describe only part of a WordPress content model. A complete assessment also examines taxonomies, ACF field definitions, post meta, block structures, shared settings, and template behavior. Bringing those relationships into an explicit Contentstack model makes them easier to review and maintain.

Gutenberg markup, shortcodes, and page builders

Gutenberg serializes block content into post_content using HTML comment delimiters and, where applicable, JSON attributes and saved HTML. Dynamic blocks may depend on server-side rendering, so their visible output cannot always be recovered from post_content alone. The following simplified example combines several patterns a migration may need to handle:

<!-- wp:acf/hero {"name":"acf/hero","data":{"headline":"Secure every endpoint","cta_url":"/demo/"}} /-->
<!-- wp:paragraph --><p>Body copy with a <a href="/2019/04/old-post/">legacy link</a>.</p><!-- /wp:paragraph -->
<!-- wp:embed {"url":"https://www.youtube.com/watch?v=abc123"} /-->
[gravityform id="12" title="false"]

One field holds four kinds of content, each with a different destination:

Pattern in post_contentMigration approachContentstack representation
Core paragraph, heading, list blocksConvert HTML to JSON RTE nodes, rewrite linksJSON RTE field
Embeds (YouTube, Vimeo)Extract to a Video entry, reference itEmbedded entry in JSON RTE
acf/* custom blocksParse block attributes into typed fieldsA Modular Blocks block
Shortcodes (forms, tabs, buttons)Identify the shortcode and parameters; replace its behavior with an approved component or integration Modular Block, reference, or structured field, depending on the function 
Elementor or WPBakery layoutsInspect stored layout data and rendered output; transform reusable content where practical and rebuild layouts against the approved component library Modular Blocks and references mapped to frontend components 

Contentstack documents a maximum of 100 embedded entries per JSON RTE field and, by default, 15 selectable reference content types. Use JSON RTE for narrative content and Modular Blocks for structured page sections. This creates clearer component boundaries, but Modular Blocks also have documented limits, including a default maximum of 100 block instances per field.

Translating ACF field groups into a maintainable Contentstack model

ACF’s explicit field definitions provide a useful starting point for Contentstack modeling. Common mappings include Flexible Content to Modular Blocks, Repeaters to Group fields with Multiple enabled, and Relationship or Post Object fields to references. Options-page values may become a single settings entry, while reusable field definitions may become Global Fields. Each mapping still needs validation for nesting, localization, shared values, and frontend behavior.

WordPress estates maintained by multiple agencies can accumulate overlapping field groups and inconsistent naming. Content modeling workshops should identify which structures represent genuinely different business objects and which can be consolidated. In Contentstack, a resource library may use one shared content type when whitepapers, webinars, and case studies have sufficiently similar fields and publishing requirements:

FieldContentstack field typeDesign reason
title, urlSingle line, URLAuto-mapped by the Migration Framework
resource_typeSelect (whitepaper, webinar, case study)Replaces three custom post types with near-identical ACF groups
authorReference → PersonOne bio serves every post
topicsTaxonomy field associated with the Topics taxonomy Applies a governed classification to resources 
bodyJSON RTE with embedded Video and CTA entries Supports reuse across channels with appropriate rendering 
page_sectionsModular Blocks (hero, stat row, quote, CTA)Lets editors assemble approved sections after the frontend components are implemented 
seoGlobal Field (meta title, description, canonical, no index)One SEO definition reused across every type

A model that closely follows the source can reduce initial transformation work when the first phase prioritizes launch continuity. eight25’s NetApp story illustrates the value of separating migration from a later redesign. However, preserving unnecessary fields creates future maintenance work. Contentstack supports model changes after launch, but substantial restructuring may require content transformation and frontend updates. Agree the intended future model early, then decide what belongs in each phase.

The plugin inventory is the real scope document

Patchstack’s 2026 report recorded 11,334 new WordPress ecosystem vulnerabilities in 2025, with 91% in plugins and 46% lacking a fix at public disclosure. These figures reinforce the need to assess the site’s actual dependencies and exposure. Moving to Contentstack can remove reliance on WordPress plugins, but frontend and integration security remain responsibilities. Classify each plugin as retain through an integration, replace, consolidate, or retire.

JobTypical WordPress pluginWhere it lives after ContentstackDecision to make in discovery
SEO metadataYoast, Rank MathSEO Global Field, rendered by the front endWho owns canonical and noindex rules
RedirectsRedirection, Yoast PremiumCDN or edge redirect mapWhich team edits redirects post-launch
FormsGravity Forms, Contact Form 7Marketo or HubSpot forms, referenced from entriesWhere submissions and consent data live
MultilingualWPML, PolylangContentstack locales with fallback, TMS connectorFallback rules per market
SearchSearchWP, RelevanssiCoveo or Algolia, indexed from published contentWhat to index, and in what order
RolesMembers, User Role EditorContentstack roles, workflows, publish rulesWho can publish to which locale

eight25’s NetApp migration story describes integrations with Coveo, Marketo, Adobe Analytics and Target, Bynder, and Trados. For a WordPress migration, assess which functions depend on plugins, which already use external services, and which should be retired. Contentstack provides a foundation for structured content delivery, while the integration map establishes how the surrounding systems will operate after cutover.

Governance through roles workflows and publish rules

WordPress includes native roles and capabilities, while more complex approval requirements may depend on additional configuration or extensions. Contentstack brings configurable workflows and publish rules into the CMS. Rules can target branches, content types, locales, and environments, with required stages and designated approvers. Enabling Prevent self-approval separates the last editor from approval and publishing. The following matrix illustrates a possible regional marketing setup:

RoleCan doEnvironmentsPublish rule
Regional editorCreate and edit entries in own localeDevelopment, stagingCannot publish
Content leadApprove workflow stage “Review”StagingPublishes to staging only
Legal reviewerApprove stage “Legal” on regulated content typesStagingRequired for product and pricing types
Web operationsPublish, unpublish, manage releasesProductionSelf-approval blocked

Implement this matrix through role permissions, workflow assignments, and publish rules together; the business role names shown here are illustrative, not predefined Contentstack roles.

Contentstack workflows and publish rules are global modules that can be assigned to all branches or selected branches. Teams should verify that each campaign or development branch is covered by the intended rules. This supports consistent governance across branches without requiring every rule to be recreated.

References, redirects, and revision history in a WordPress to Contentstack migration

Once you have mapped the model and the plugins, three workstreams remain that never show up in a page count. They are where the converter’s documented gaps turn into launch risk.

Broken references. Before import, inventory links, assets, and embedded IDs across post_content, post meta, shared blocks, options, and relevant plugin storage. Resolve them against the approved entry, asset, and URL maps:

Source entryBroken reference typeSource valueResolution
post 4821Internal link to old permalink/2019/04/old-post/Rewrite to new entry URL during JSON RTE conversion
page 112Attachment page link/?attachment_id=903Point to asset URL, add redirect
post 6610Reference to deleted post?p=5120Flag for editorial review; replace with a relevant equivalent or remove the link 

Redirects. WordPress produces more URL shapes than most teams list: date-based permalinks, ?p= IDs, paginated archives, tag and author pages, and media files. Media catches teams out, because asset URLs move to Contentstack’s asset domain and external sites link straight to PDFs.

Old URLNew URLStatusNote
/2019/04/old-post//blog/old-post/301Pattern rule, not one-by-one
/?p=4821/blog/old-post/301Resolved from the post ID map
/category/news/page/3//news/301 if changed Preserve pagination where an equivalent archive exists; assess other destinations individually 
/wp-content/uploads/2021/06/datasheet.pdf/resources/datasheet/200 if preserved; 301 if moved Prefer an equivalent file destination when the original URL served a PDF 

Revision history. WordPress stores retained revisions in the posts table, but configuration may limit or disable retention. Establish which historical records must be preserved before migration. Do not assume a standard import will recreate WordPress authorship, timestamps, approvals, and revision history as Contentstack’s native audit trail.

ApproachImplementation implicationsHistorical recordUse when
Preserve required source historyExport retained revisions and relevant metadata to a validated archive or purpose-built repositorySource records retained; not automatically restored as native Contentstack historyRetention or compliance requirements demand historical evidence
Import current content and archive historyImport current entries and maintain a searchable historical archiveAccessible outside the live CMSHistorical access is needed without recreating the old editing experience
Import current content onlyImport the approved current versionContentstack history begins with the new implementationRetention policy permits omission of source revisions

When WordPress is still the right answer

WordPress VIP or a well-governed headless WordPress implementation can remain a sound choice when the existing editorial experience and architecture meet the business’s needs. WordPress also supports multilingual and multi-brand estates. The case for Contentstack becomes stronger when the organization wants a headless content platform with explicit reusable models and configurable governance across its digital experiences.

Contentstack is a strong candidate when reusable content, localization, approval controls, and delivery across channels are central requirements. Its Visual Editor and Live Preview can give editors a contextual editing experience when integrated with the frontend. The migration should include component design, preview configuration, and role-specific training so the new structure improves daily publishing as well as technical maintainability.

If you do move: realistic ranges

Estimate the migration across three workstreams: discovery and architecture; implementation and integrations; and content transfer, validation, and launch readiness. Their relative effort depends on component diversity, localization, source-data quality, redesign scope, and stakeholder approvals. eight25’s published NetApp story reports a January kickoff and June cutover for a phased Tridion-to-Contentstack migration. Use that as a scoped project example, not a standard timeline for WordPress migrations.

Component count is the other line item that scales with a site’s history rather than its size. On Sophos’s two Sitecore estates, the audit found roughly 249 components and consolidated them toward 100. On a WordPress estate, run the same audit across every page builder and ACF block library before anyone estimates the build, because that count drives the component library budget more than the page count does.

Illustrative 22-week plan for a limited lift-and-shift scope: 8,000 pages to retain and 2,000 URLs to archive, retire, or redirect. This is a planning example, not an estimate; it assumes agreed components, available integrations, and timely approvals.

  1. Weeks 1–4: Inventory content, plugins, assets, and URLs; agree disposition decisions, target models, integrations, and governance.
  2. Weeks 5–10: Implement models, frontend components, integrations, and preview; test migration scripts against a representative sample covering all content patterns.
  3. Weeks 11–18: Migrate and validate 2,000 priority pages, followed by 6,000 remaining retained pages; prepare redirects and document the remaining 2,000 URL dispositions.
  4. Weeks 19–22: Complete training, final content synchronization, redirect and SEO validation, cutover, and initial post-launch support.

Migration waves describe transfer and validation batches. Public release timing should be agreed separately, using tooling that supports repeatable imports and updates.

Frequently Asked Questions

How long does a WordPress to Contentstack migration take?

The timeline depends on content structure, component variation, integrations, localization, redesign scope, and approval requirements. A limited lift-and-shift can run faster than a migration combined with a redesign. eight25’s published NetApp example involved Tridion, not WordPress. A WordPress-specific estimate should follow discovery and representative migration testing.

Can Contentstack’s migration tools move ACF fields and Gutenberg blocks?

Contentstack’s Migration Framework supports guided content-type, field, and language mapping with a test migration. Custom WordPress structures need assessment and may require preprocessing or custom transformation. Review ACF definitions, Gutenberg attributes, shortcodes, options, and plugin storage, then validate the extracted content against the chosen Contentstack fields and frontend components.

Should we move to headless WordPress instead of Contentstack?

Headless WordPress can preserve an established editorial experience while separating the frontend. It still requires management of the WordPress backend and retained plugins. Contentstack is worth prioritizing when the goal is explicit reusable content models, configurable approval controls, and a managed headless CMS. Compare the operating model, editorial requirements, integration effort, and total cost rather than brand or locale count alone.

What happens to SEO when you migrate from WordPress to Contentstack?

Preserve existing URLs where possible and use permanent redirects for changed URLs with relevant replacement destinations. Validate SEO metadata, canonicals, hreflang, structured data, internal links, sitemaps, and indexability before launch. Include directly linked media files in the URL inventory. Rankings can fluctuate during a migration, so monitor crawling, indexing, and organic performance after cutover.

How do I choose a partner for a WordPress to Contentstack migration?

Choose a partner that can demonstrate how it assesses source content, transforms custom structures, validates links, and plans integrations and cutover. Agree which discovery outputs are included and when they will be delivered. eight25’s Contentstack partner status and published enterprise migration work make it a relevant partner to evaluate for complex estates.

Planning a WordPress to Contentstack Migration?

A WordPress to Contentstack migration becomes easier to scope when content structures, plugin dependencies, integrations, and URL requirements are understood early. eight25 brings published enterprise migration experience to that assessment, helping teams define a Contentstack implementation around their content and publishing needs. Start a scoping conversation to establish discovery deliverables, dependencies, and a realistic delivery plan.  Start a scoping conversation with eight25

Contentstack migration services

CMS migration sequencing waves article

Taxonomy rationalization in a CMS migration article

Social

Let’s work together.