Schema Versioning — Rollback Field Group Changes
Field Forge tracks every change to every field group as a revision with author, timestamp, and full diff. Accidentally broke a field group? Rolled out a bad change? One-click rollback restores any previous version. No other WordPress custom fields plugin has this feature.
Why field group versioning matters
WordPress has revision history for posts (since 2.6). Every post edit is saved as a revision, and editors can revert to any previous version. This is so fundamental to WordPress that nobody thinks about it anymore — it’s just expected.
Field groups don’t have this. In ACF, SCF, Meta Box, CMB2, Carbon Fields, Pods, Toolset, and every other major custom fields plugin, editing a field group is a destructive operation. You save changes and the previous state is gone. If you accidentally delete a field, you can’t recover it. If a change broke a template, you can’t roll back.
Field Forge fixes this with a revisions table: wp_fieldforge_revisions. Every field group save creates a new revision. You can view the diff between any two revisions, and restore to any previous version with one click.
How it works
Every save creates a revision
When you save a field group in Field Forge’s visual builder, the plugin:
- Serializes the current state of the field group (fields, settings, location rules) to JSON
- Calculates a content hash (MD5) of the JSON
- Checks if the latest revision has the same hash (to avoid duplicate revisions on “save without changes”)
- If different, creates a new revision row in
wp_fieldforge_revisionswith:
– group_id (the field group being versioned)
– revision_data (the serialized JSON)
– revision_hash (MD5 of the JSON)
– user_id (who made the change)
– created_at (timestamp)
– change_summary (optional note about what changed)
This happens on every save, automatically.
Viewing revision history
In Field Forge’s visual builder, click the History icon at the top of any field group. A modal opens showing the complete revision history:
- Revision #422 minutes ago by Alice Johnson
- Revision #413 hours ago by Bob Smith
- Revision #40yesterday by Alice Johnson
- Revision #392 days ago by Alice Johnson
Each revision shows the author, timestamp, and (optionally) a change summary.
Diffing revisions
Click any two revisions to see the diff:
- Added fieldshighlighted in green with field name and type
- Removed fieldshighlighted in red with what they were
- Modified fieldshighlighted in yellow with property-level changes (label changed from “X” to “Y”, type changed from “text” to “textarea”, etc.)
- Reordered fieldsshown with arrows indicating position changes
- Location rule changeslisted separately
The diff view shows exactly what changed between the two revisions, so you can understand the impact before restoring.
Restoring a revision
Click Restore to this revision on any historical revision. Field Forge:
- Loads the revision’s JSON data
- Creates a new revision marking the current state (so the restore itself is reversible)
- Overwrites the field group with the historical version
- Refreshes the visual builder to show the restored state
The restore is immediate and reversible. If you restored to the wrong revision, just restore again to the most recent one.
Automatic pruning
The revisions table grows over time, so Field Forge auto-prunes old revisions:
- Max 50 revisions per field group (configurable)
- Oldest revisions deleted first when the cap is reached
- Recent revisions always preservedthe last 10 are never deleted automatically
- Pruning runs on a schedule via WP Cron, not on every save
For teams that want longer history, the cap is configurable via filter:
add_filter('fieldforge/revisions/max_per_group', function($max) {
return 200; // Keep 200 revisions per group
});
Revision compression
Field group JSON can be large. For sites with hundreds of field groups and many revisions each, the revisions table could grow rapidly. Field Forge stores revisions with gzip compression — typical compression ratio is 5–10x — so a 50 KB field group revision takes 5–10 KB in storage.
Use cases where versioning saves the day
Client site accident
An editor or admin accidentally deletes a critical field. Without versioning, the data is gone and the theme templates that reference that field break silently. With Field Forge versioning, restore the previous revision in 10 seconds.
Bad deployment
You edited a field group on staging and deployed to production, but the change introduces a bug. Roll back to the previous revision, investigate the bug, re-deploy with the fix.
A/B testing field group designs
Experimenting with different field group structures? Save as revisions, compare, pick the winner. Every iteration is preserved.
Collaboration conflicts
Two team members edit the same field group on different environments. Both saves create revisions. Diff the two versions to see the conflict, merge manually, save as a new revision.
Audit trail
For compliance-heavy environments (healthcare, finance, legal), having a full audit trail of field group changes is often a regulatory requirement. Field Forge’s revisions table provides this automatically.
Combining with Local JSON Sync
Schema versioning and Local JSON Sync work together:
- Local JSON gives you file-based field groups that travel with git
- Schema versioning gives you database-level history with one-click rollback
Git history covers the “what did we deploy” question. Schema versioning covers the “what happened since we deployed” question. Together they cover both worlds.
Not available in other plugins
As of 2026, no other WordPress custom fields plugin has a native revision history with rollback for field groups:
- ACFno revision history
- SCFno (same as ACF, it’s a fork)
- Meta Boxno
- CMB2no (code-first, relies on git)
- Carbon Fieldsno (code-first, relies on git)
- Podsno
- Toolsetno
Field Forge is the only option with built-in schema versioning.
Ready for field group version control?
Schema versioning is included in every paid plan.