This is the complete, step-by-step guide to migrating from Advanced Custom Fields (ACF) or Secure Custom Fields (SCF) to Field Forge. It covers preparation, backup, installation, the import process, verification, and deactivation. Plus troubleshooting for common issues and edge cases.
The good news: because Field Forge includes a full ACF compatibility layer, migration does not require rewriting any theme code. Your get_field(), have_rows(), and acf_register_block_type() calls keep working after migration. Most sites complete the process in 30–90 minutes.
Before investing time in migration, make sure the change is worth it. Reasons to migrate from ACF or SCF to Field Forge:
If none of these apply to your situation, stay on ACF or SCF. Migration has a cost (time, testing, risk) and you should only migrate if the benefits outweigh that cost.
Before migrating, verify that your ACF-specific code won’t hit edge cases in Field Forge’s compat layer.
Things that work out of the box:
get_field(), the_field(), get_fields(), get_field_object(), get_field_objects()update_field(), delete_field()have_rows(), the_row(), get_row(), get_row_index(), get_row_layout()get_sub_field(), the_sub_field(), update_sub_field()acf_register_block_type() (Gutenberg PHP blocks)get_field('name', 'options') and get_field('name', 'option') (options pages)get_field('name', 'user_123') (user custom fields)format_value parameter across all functionsThings that need adjustment:
acf/load_field, acf/save_post, acf/format_value/type=text — these have Field Forge equivalents (fieldforge/load_field, etc.) that your code will need to be updated to use. Field Forge’s compat layer does NOT forward ACF hooks to its own hook system.ACF\Admin\AdminFields) — these don’t exist in Field Forgeacf.addAction(), etc.) — Field Forge has its own JS APIFor 95% of sites, none of the above matters. Themes typically only use the template functions, not the internal APIs.
How to audit your code:
Run a grep across your theme and custom plugin files:
# Find all ACF template function calls (should work)
grep -r "get_field\|have_rows\|the_sub_field\|acf_register_block_type" wp-content/themes/your-theme/
# Find ACF-specific hooks (need adjustment)
grep -r "add_action.*'acf/\|add_filter.*'acf/" wp-content/themes/your-theme/
# Find ACF internal class usage (needs rewrite)
grep -r "\\\\ACF\\\\\|use ACF" wp-content/themes/your-theme/
If the first grep returns results and the second two are empty, you’re in the clear — direct migration works. If the second or third returns results, plan for additional code updates after migration.
Always backup before migration. This is non-negotiable.
Via your host’s tool:
Most managed WordPress hosts (Kinsta, WP Engine, SiteGround, Cloudways, etc.) have one-click database backup. Use it.
Via WP-CLI:
wp db export backup-before-fieldforge-$(date +%Y%m%d).sql
This creates a SQL dump of your entire database. Keep it somewhere safe (download to local, upload to S3, etc.). If migration goes wrong, you can restore from this dump.
Via plugin:
UpdraftPlus, BackupBuddy, BackWPup, or similar. Run a full backup — database AND files — before proceeding.
Back up your entire wp-content/ directory too. If you’re using ACF’s Local JSON feature, the JSON files are in wp-content/themes/your-theme/acf-json/.
If possible, do the migration on a staging environment first. Clone your production site to staging, run the migration, verify everything works, then repeat on production. Most managed hosts offer one-click staging cloning.
If you don’t have staging, do the migration during low-traffic hours.
Go to Field Forge pricing and purchase a license. You’ll receive a download link for the Field Forge plugin ZIP file.
Or install the free version from WordPress.org:
Note: the free version covers the core migration features. Paid plans unlock AI generation, TypeScript, GraphQL, and some advanced field types.
Field Forge now appears in your WordPress admin menu. ACF (or SCF) is still active — you’ll deactivate it later.
If you purchased a paid plan, activate the license:
You’ll get a confirmation that the license is valid.
Field Forge’s ACF compatibility layer is smart about running alongside ACF. When both plugins are active:
get_field(), etc.)This means there’s no conflict during migration. You can work in both plugins’ admin screens simultaneously.
The import configuration screen offers several options:
Start with defaults. If the migration hits errors, adjust options and re-run.
Click Start Import. A progress bar appears showing:
The import runs in batches of 50 posts per AJAX request. The batching prevents PHP timeouts on large sites and provides visible progress.
During the import, don’t close the browser tab. If you accidentally close it, the import pauses; reopen the import page and click Resume Import.
After the import completes, Field Forge runs automatic checks:
You’ll see a green checkmark next to each verification step, or a yellow/red alert if something needs attention.
Don’t rely only on automatic checks. Spot-check important pages:
1. Check a typical post with custom fields
Go to WordPress admin → Posts → pick a post that uses custom fields → scroll to the Field Forge metabox → verify field values match what’s in the ACF metabox above.
2. Check a page with flexible content
If you use flexible content fields, check a page with multiple layouts. All layouts should appear in the Field Forge metabox with correct field values.
3. Check a page with repeaters
If you use repeater fields, verify all rows are present with correct sub-field values.
4. Check options pages
Go to any options page (Site Settings, Header Settings, etc.) — values should appear both in ACF’s options page view AND in Field Forge’s version.
5. Check the frontend
Load the homepage and several key pages in a browser. ACF is still active at this point, so frontend rendering still comes from ACF. Confirm nothing has broken during the migration process.
If any check fails:
This is the moment of truth. Deactivating ACF activates Field Forge’s compatibility layer — all get_field() calls from your theme will now resolve to Field Forge’s storage instead of ACF’s.
WordPress admin → Plugins → Installed Plugins → Advanced Custom Fields → Deactivate
Do NOT click “Delete” yet — we want ACF available as a fallback if something goes wrong.
The moment ACF is deactivated:
get_field, etc.) stop being registered by ACFImmediately reload the frontend:
acf_register_block_type()) — does it render?If everything looks correct, the migration is successful. Celebrate.
If something is broken, go to Part 8 (Troubleshooting) below.
Wait 1 week with Field Forge active before deleting ACF entirely. This gives you time to discover any edge cases that weren’t caught in immediate verification. If issues come up, reactivate ACF as a fallback while you debug.
After 1 week of stable operation:
After migration, ACF’s data is still sitting in wp_postmeta (Field Forge’s migration is non-destructive — it copies data, doesn’t delete from source). This extra data takes up space but doesn’t harm anything.
If you want to clean it up:
DELETE FROM wp_postmeta
WHERE meta_key LIKE '_%'
AND meta_key IN (
SELECT DISTINCT meta_key
FROM wp_postmeta
WHERE meta_key LIKE '_%'
);
WARNING: This SQL is approximate and dangerous. Only run it if you’re comfortable with database operations AND have a recent backup. Field Forge’s support can help with a safer cleanup query tailored to your specific field groups.
Most sites don’t bother with this cleanup — the extra storage is negligible.
Now that you’re fully on Field Forge, take advantage of its features:
Symptom: A post that had custom field values in ACF appears empty in Field Forge after ACF is deactivated.
Cause: The field value didn’t migrate during the import. This can happen if:
Fix:
Symptom: A template that used to render correctly now throws a PHP error or shows unexpected content.
Cause: The template is using an ACF-specific function or hook that Field Forge’s compat layer doesn’t cover.
Fix:
Most common culprits:
acf_add_local_field_group() — use fieldforge_register_field_group() insteadacf_form() — use Form Forge or a different form builderacf/include_field_types hook — re-register via fieldforge/field_types/register filterSymptom: Pages load slower after switching to Field Forge.
Cause: Rare but possible. Field Forge’s custom table storage should be faster, not slower. If you see slower performance:
WP_DEBUG is enabled with a large logging fileFix:
WP_DEBUG and WP_DEBUG_LOG in productionSymptom: Options pages values appear empty or default after migration.
Cause: ACF stores options page values with a different key prefix than post field values. The importer needs to handle both cases.
Fix:
Symptom: Repeater fields migrated, but the rows appear in a different order than they were in ACF.
Cause: Rare race condition during the import where the row_index wasn’t correctly set.
Fix: Contact support with the specific field group name. This is typically a one-time fix with a SQL update.
If the migration goes wrong and you need to return to ACF:
Field Forge’s migration is non-destructive — ACF’s data is still in place. Rollback is always possible as long as you haven’t deleted ACF.
If you want to completely undo the migration and remove Field Forge:
How long does a typical ACF migration take?
30–90 minutes for most sites. Larger sites (10,000+ posts) may take 2+ hours.
Will my rankings drop during migration?
No. Migration doesn’t change URLs, content, or meta data that Google sees. Field Forge migrates the storage layer only.
Can I run ACF and Field Forge indefinitely?
Technically yes during migration, but not as a long-term production setup. Running both means duplicate admin UIs and configuration confusion.
What about ACF Pro features like Repeater and Flexible Content?
Field Forge’s paid plans include all ACF Pro features. Repeater, Flexible Content, Group, Clone, Options Pages, Gallery, PHP Blocks — all work after migration.
Do I need to rewrite my theme code?
No. Field Forge’s ACF compatibility layer means existing code keeps working.
What if I have custom ACF field types from third-party plugins?
Custom field types registered via ACF’s hook system need to be re-registered for Field Forge. Contact support for help with specific cases.
Can I migrate back from Field Forge to ACF later?
Yes. Field Forge’s data export lets you export field groups in ACF-compatible format. Import into ACF, deactivate Field Forge. Your site keeps working.
Is the migration free?
Field Forge’s free version on WordPress.org includes the migration tools. You only need a paid license for AI features, TypeScript/GraphQL generation, and some advanced field types.
Does migration work for SCF too?
Yes. SCF is a fork of ACF with the same data format. The ACF importer handles both.
Get Field Forge — from $35/year →
14-day refund. Free version includes migration tools. Priority support during migration.
Questions before you start? Contact our migration support team →