Migration

Migrating from Thrive Architect to Gutenberg & ACF blocks

A deep guide to leaving Thrive Architect and Thrive Theme Builder for native Gutenberg and ACF blocks — how Thrive stores content, landing page edge cases,…

7 min readUpdated 23 June 2026

verifiedReviewed by Tommy Smith,Content Director

Thrive Architect landing page content being migrated into ACF blocks
boltIn short

Thrive Architect stores layouts in post meta, not portable Gutenberg markup — migrate from the live rendered page while Thrive is active, map sections into ACF blocks, rebuild forms and conversion widgets separately, replace Theme Builder templates in your theme, then deactivate Thrive only after redirects and QA pass.

Thrive Architect sits at a particular intersection: marketing sites, lead-generation landing pages, and course creators who bought into the Thrive Suite. The pages look polished, conversion elements are baked in, and the editor is fast for non-technical users. The problem arrives on rebuild day — Thrive stores layouts in its own post meta (_tcb_content, _tve_leads etc.), and none of it is portable Gutenberg markup. When an agency moves a Thrive client onto a bespoke ACF block theme, every landing page is a migration project, not a theme toggle.

How Thrive Architect stores your pages

Thrive Architect pages are flagged with _tcb_ flags in post meta and rendered through Thrive's front-end engine. The visible page — headlines, columns, countdown timers, testimonial blocks, lead-gen forms — is assembled from that meta at render time. The WordPress post_content field often contains little more than a placeholder comment. This matters because export/import tools that move post_content won't move your Thrive layouts.

  • arrow_rightThrive Architect pages: full drag-and-drop layouts in Thrive meta.
  • arrow_rightThrive Theme Builder: headers, footers and sidebar templates stored separately from page content.
  • arrow_rightThrive Leads / Quiz Builder: opt-in forms and quizzes with their own data stores — not part of page migration.
  • arrow_rightLanding pages vs site pages: Thrive distinguishes these; both need crawling but landing pages often have unique section types (countdown, pricing grid, guarantee badges).
warningDeactivate Thrive Architect before you've migrated content and pages go blank — not broken-shortcode blank, completely empty. Always migrate from the live rendered page while Thrive is still active on the source.

Why agencies move Thrive clients to ACF blocks

  • arrow_rightThrive Suite licensing scales per site; ACF blocks are yours once built.
  • arrow_rightPerformance: Thrive loads its own CSS/JS stack; native blocks output only what your template needs.
  • arrow_rightEditor consistency: Gutenberg everywhere, not a separate Thrive canvas for landing pages and Gutenberg for blog posts.
  • arrow_rightIntegration: client CRM, analytics and custom functionality are easier in a theme you own than inside Thrive's widget ecosystem.

Migration challenges specific to Thrive

Conversion elements

Thrive's countdown timers, scarcity bars, 'content locks' and A/B test variants don't have direct ACF block equivalents unless you've built them. Map the content (headline, expiry date, CTA copy) into your blocks and rebuild the behaviour with your own JS or a lighter plugin. Document what you're dropping vs rebuilding — clients remember conversion widgets.

Thrive Leads and forms

Inline Thrive Leads forms won't migrate as form blocks. Inventory every form on the old site, note its fields and integration, and rebuild with Gravity Forms, WPForms or native blocks on the new site. Test submissions on staging before decommissioning Thrive.

Theme Builder templates

Headers and footers built in Thrive Theme Builder render globally but won't appear in per-page crawls the same way body content does. Audit them separately. Your new theme's header.php, footer.php and template parts need to replace this functionality before you remove Thrive.

Step-by-step migration workflow

  1. 1Inventory: crawl the sitemap and tag every URL as Architect page, standard page, post, or Thrive landing page. Note pages with Leads forms, quizzes or countdowns.
  2. 2Block library: ensure your ACF blocks cover Thrive section types you see repeatedly — hero with form, testimonial wall, pricing table, FAQ accordion, logo strip.
  3. 3Export ACF field groups as JSON and build the mapping spec.
  4. 4Crawl live pages with Thrive still active. Classify each rendered section into your ACF blocks.
  5. 5Handle edge cases manually: pages with heavy custom CSS, global Thrive symbols, or dynamic lists.
  6. 6Import as drafts. Rebuild forms and conversion widgets in the new stack.
  7. 7QA on staging: forms, mobile layouts, and every CTA link. See the migration QA checklist.
  8. 8Launch with redirect map and SEO metadata preserved. Deactivate Thrive only after sign-off.
A Thrive Architect page being crawled for section-level migration into ACF blocks
Migrate from what visitors see on the live page — not the sparse post_content in the database.

What 'done' looks like

Every indexable Thrive page has a draft on the new site with equivalent content in ACF blocks. Forms submit. Theme Builder templates are replaced by your theme. Thrive plugins are deactivated. No _tcb_ shortcodes or empty pages remain. Redirects cover any slug changes. The client edits in Gutenberg without asking where the old editor went.

The core workflow matches Elementor and Divi migrations — crawl, classify, review, import. Thrive's marketing-specific widgets are the variable that adds manual rebuild time on top.

SEO and URL preservation

Thrive landing pages often rank for long-tail campaign terms. Carry over SEO titles and meta descriptions per URL — see Yoast or Rank Math guides. If Thrive URLs used /landing/page-name/ and the new site flattens to /page-name/, every indexed landing needs a 301. Thrive's A/B test variants may have created duplicate URLs — pick the winner, redirect losers.

Scoping Thrive migrations for clients

Quote Thrive exits higher than brochure Elementor sites — conversion widgets, quizzes, and Apprentice course content are separate workstreams. Document in the SOW: marketing pages in scope, course content phase two, Thrive Leads replaced by Gravity Forms. Clients who bought Thrive for split-testing need honesty about rebuilding tests in the new stack or using a lighter alternative.

Thrive Architect symbols and global elements

Thrive symbols — reusable sections synced across pages — are a hidden dependency in many Thrive migrations. Update a symbol on one landing page and it changes everywhere, which is powerful in Thrive and invisible in a per-page crawl unless you know which pages share symbols. Before crawling, export the symbol list from Thrive Architect admin and mark affected URLs in your inventory. When the same testimonial wall appears on twelve landers, your ACF block import should produce consistent repeater data — if twelve pages import different testimonial counts, you likely missed symbol deduplication.

  • arrow_rightInventory symbols separately from pages — note which symbols appear on which URLs.
  • arrow_rightDecide whether symbols become ACF synced patterns, reusable blocks, or inline block instances.
  • arrow_rightGlobal elements (headers built in Theme Builder) never appear in page crawls — audit in Thrive Theme Builder admin.
  • arrow_rightDocument symbol-to-block mapping in the migration spec so reviewers know expected repetition.

Thrive Leads, quizzes and A/B tests

Thrive Leads opt-in forms, Thrive Quiz Builder flows, and Architect A/B test variants are separate data stores from page content. A crawl captures visible form fields and quiz questions on the rendered page, but not automation rules, tag assignments, or test configuration. Scope these as parallel workstreams in the SOW — see forms migration for the rebuild stack.

warningA/B test variants may have created duplicate URLs or query parameters. Pick the winning variant's content for migration; retire losing variants with 301s or 410s. Do not migrate three versions of the same landing page without explicit client approval.

Mapping Thrive conversion widgets to ACF blocks

Thrive's conversion toolkit — countdown timers, scarcity bars, content locks, pricing tables with toggle billing — rarely has one-to-one ACF block equivalents out of the box. Agencies typically map static content (headline, price points, feature lists) into blocks and rebuild behaviour with lightweight JS or a dedicated plugin. Document every widget in a conversion inventory spreadsheet: page URL, widget type, client priority (must-have vs nice-to-have), and new implementation approach.

Thrive elementTypical ACF approachBehaviour rebuild
Countdown timerHero or CTA block with date fieldSmall JS module or native HTML countdown
Pricing tablePricing repeater blockManual — no Thrive toggle equivalent unless built
Content lockGated section block + formGravity Forms or Memberful integration
Testimonial wallTestimonial repeaterStatic — usually no behaviour loss
Star ratingsRepeater sub-field or icon stripCSS-only unless tied to schema

Thrive Apprentice and membership content

Thrive Apprentice courses use custom post types, lesson structures, and progress meta that standard page migration does not touch. Most agencies phase Apprentice work: Phase 1 migrates marketing pages and lead-gen landers to ACF blocks; Phase 2 addresses course content, member login flows, and protected lesson templates. Quoting Apprentice as included in per-page migration is how projects run six weeks over. If courses stay on Thrive temporarily, keep Thrive Apprentice active on a subdomain or subdirectory until Phase 2 — do not deactivate the whole Thrive Suite because marketing pages migrated.

Post-migration Thrive deactivation checklist

  1. 1Every indexable Architect page has an equivalent draft on the new theme with matching or improved content.
  2. 2All Thrive Leads forms replaced and tested on staging — submissions reach CRM or inbox.
  3. 3Theme Builder header, footer and sidebar templates replaced by theme template parts.
  4. 4Database search for _tcb_, tve_, thrive_ returns zero hits in public post content.
  5. 5Redirect map covers every Thrive landing URL including /landing/ path conventions.
  6. 6Rank Math or Yoast meta verified on top campaign pages — see Rank Math preservation.
  7. 7Thrive plugins deactivated on staging for 48 hours; spot-check key URLs before production cutover.
lightbulbThrive clients often edit landing pages weekly. Schedule migration during a quiet campaign window and freeze content changes once the crawl starts — or re-crawl changed URLs before commit.

Thrive landing pages are only half the job — Thrive Leads forms need forms migration and Apprentice courses are a separate scope item. Funnel pages often rank for campaign terms; preserve SEO with Yoast or Rank Math guides. For the broader builder exit: page builder exit guide.

Frequently asked questions

Can I export Thrive Architect pages to HTML and paste them in?expand_more

You can, but you get static HTML in a Classic block — uneditable fields, inline Thrive CSS, and no block structure. It's a fallback for one page, not a migration strategy. Section-level mapping into ACF blocks is the approach that scales.

What about Thrive Apprentice course content?expand_more

Course content lives in Thrive Apprentice's own post types and meta — outside standard page migration. If the rebuild includes courses, scope Apprentice migration separately. Often the marketing site migrates to ACF blocks while courses stay on Thrive until a dedicated phase.

Will conversion rates drop after leaving Thrive?expand_more

Not if you rebuild equivalent CTAs, forms and trust elements in your ACF blocks. What hurts conversion is broken forms and missing sections — which is why QA and form testing matter more on Thrive migrations than on simpler brochure sites.

Can I migrate Thrive pages while A/B tests are still running?expand_more

Finish or pause tests before migration. Crawling a page mid-test may capture the variant shown to the crawler bot, not the winner. Export test results from Thrive, pick the winning content, and migrate that version deliberately.

What happens to Thrive custom fonts after migration?expand_more

Thrive-enqueued fonts disappear when you deactivate the plugin. Identify fonts in use during crawl; enqueue them in your theme or switch to system or Google Fonts equivalents. Missing fonts are a subtle post-launch visual regression clients notice immediately.

Do Thrive lightboxes and exit pop-ups migrate automatically?expand_more

No. Lightboxes are behavioural overlays tied to Thrive Leads or Architect scripts. Rebuild equivalent functionality with your forms plugin, a lightweight popup plugin, or custom JS — and ensure cookie consent still covers them under GDPR.

How do I handle Thrive pages with custom CSS?expand_more

Inline and page-level CSS in Thrive does not map to ACF block fields. Either rebuild styling in your block templates and theme stylesheet, or accept manual cleanup on high-design landers. Flag CSS-heavy pages during inventory for senior review.

Is Thrive Theme Builder harder to replace than page content?expand_more

Often yes — global templates affect every page. Budget header and footer rebuild as a separate line item from per-page content migration. Crawl a full page for body content; audit Theme Builder templates in admin for chrome around that content.

Ryan Hale
Written by

Ryan Hale

Head of Front End Development

Ryan Hale is Head of Front End Development at AIRA, where he leads the team building the engine that migrates WordPress sites into native ACF blocks. He has spent more than a decade building and rebuilding WordPress sites for agencies, with deep, hands-on expertise in Advanced Custom Fields, Gutenberg block development, and large-scale content migrations that protect search rankings. He writes about ACF, moving off page builders like Elementor and Divi, and the practical craft of shipping fast, maintainable WordPress rebuilds.

Reviewed to our editorial guidelines.

Migrate your next rebuild with AIRA

Crawl and preview any site free. 10 credits on signup — pay only when you commit.