Download Log in

Recipe: Migrating from ACF Pro Step by Step

User Guide

This recipe provides a detailed, cautious migration process with checklists and verification steps. Follow it in order to ensure a smooth transition.

Pre-Migration Checklist

Before you begin, complete every item on this list:

StepActionDone?
1Create a full site backup (files + database)
2Set up a staging/test site and perform the migration there first
3Document your current ACF field groups (screenshot or export)
4Note any PHP-registered field groups in your theme’s functions.php
5Check for plugins that depend on ACF (some plugins bundle their own ACF fields)
6Install Field Forge on your test site (do NOT deactivate ACF yet)
7If migrating field values, activate a Field Forge PRO license
8Verify your PHP memory limit is at least 256M and max_execution_time is at least 300

Step 1: Detect ACF Data

  1. Go to Field Forge > Migration
  2. Click Detect ACF Data
  3. Review the scan results:
– Number of ACF field groups found

– Number of posts with ACF data

– Total field values to migrate

  1. Take a screenshot or note these numbers — you will use them to verify migration completeness later

Step 2: Import Field Groups

  1. Click Import Field Groups
  2. Wait for the import to complete
  3. Verify the results:
– Go to Field Forge > Field Groups and count the imported groups

– Open 2-3 field groups and check that all fields, settings, and location rules match your ACF configuration

– Pay special attention to complex fields: Repeaters, Flexible Content, and Groups should have all their sub-fields intact

  1. If anything looks wrong, you can delete the imported groups and re-run the import — it reads from ACF’s data, which is unchanged

Step 3: Migrate Field Values (PRO)

  1. Back on Field Forge > Migration, click Import Field Groups with Values
  2. A progress bar appears showing batch processing
  3. For large sites, the migration runs in the background — you can safely close the browser tab
  4. Wait for the completion notice (check back if you closed the tab)
  5. Note the final count: number of posts processed and values migrated

Step 4: Post-Migration Verification

Perform these checks before deactivating ACF:

CheckHow to verifyExpected result
Field groups existField Forge > Field GroupsSame number of groups as in ACF
Fields appear on postsEdit a post that had ACF dataMetabox with fields appears below editor
Data is populatedCheck the fields on several postsValues match what was entered in ACF
Repeater data intactOpen a post with a repeaterAll rows present with correct data
Flexible Content intactOpen a post with flexible contentAll layouts present in correct order
Options page dataVisit the options pageAll global values present
Frontend displayView the site in a browserPages look identical to before migration
get_field() worksTest pages that use field dataNo errors, correct values displayed
have_rows() worksTest pages with repeatersLoops function correctly

Step 5: Deactivate ACF

  1. Once all checks pass, go to Plugins
  2. Deactivate Advanced Custom Fields PRO
  3. Refresh the frontend and check several pages — everything should continue working because Field Forge provides all the same functions
  4. Check the admin area — all field groups should remain visible and functional

Step 6: Verify Everything Works Without ACF

  1. Test every page template that uses custom fields
  2. Test every form, repeater, and flexible content section
  3. Check options pages and site-wide settings
  4. Test on multiple devices (desktop, tablet, mobile)
  5. Ask another team member to spot-check key pages

Common Issues and Fixes

IssueCauseFix
Fatal error after deactivating ACFA plugin depends on ACF directly (not through get_field())Reactivate ACF, identify the dependent plugin, and contact its author for Field Forge compatibility
Some fields show emptyField values were not migrated (free version)Upgrade to PRO and run the value migration
Repeater rows in wrong orderRare edge case with deeply nested dataRe-run the migration; if it persists, contact support
Nested Repeater rows inside Flexible Content duplicate after drag-and-saveOlder builds re-indexed the parent Flexible Content row when sorting the nested Repeater, then read the nested records from the wrong parent recordUpdate Field Forge, hard-refresh the editor, re-order the nested rows once, and save. Current builds re-index the active Repeater only and read nested records by their direct parent ID.
Nested Group / Repeater / Flexible Content values are missingOld ACF databases can contain duplicate field-group posts with the same key/title; an empty duplicate can hide the populated group during importUpdate Field Forge and re-run the migration. Current builds de-duplicate ACF groups by key/title and keep the version with the most direct child fields before importing values.
Conditional logic not hiding fieldsTop-level rules: confirm “Conditional Logic” is toggled on in the field’s settings, the rule’s trigger field has a value, and the operator/value pair matches your data. Nested rules (inside Repeater / Group / Flex layouts) are stored but not yet evaluated.Re-open the field group editor, expand the affected field, and check that the rule reads the correct field name. For nested cases, move the rule to a top-level field that controls the parent compound’s visibility.
Options page missingOptions pages require PROActivate PRO license, then re-run migration
Frontend layout brokenTheme relies on ACF-specific hooksCheck if the theme uses acf/ hooks and switch to fieldforge/ equivalents
JSON export files referencing ACF keysOld Local JSON files from ACFDelete the old acf-json/ files in your theme and re-save field groups so Field Forge regenerates fresh files in fieldforge-json/ (the default sync folder)

Forge AI Assistant Online

Hi! I'm the Field Forge AI assistant. Ask me anything about the plugin — setup, features, troubleshooting, or development.

Just now
Powered by Forge AI · Browse docs