Move Meta Box field groups, settings pages, and the content that uses them from a LocalWP site to production, with the limitations spelled out.
Updated 5 June 2026·Task guide
What actually moves
This guide exists because a customer asked for exactly it: how does Meta Box travel from a LocalWP site to a live one, and where are the limits. Here is both, without the sales voice.
WPChangeSync reads Meta Box natively. Four kinds of things can travel:
Field group definitions, the meta boxes themselves, as their own Library section.
Settings page values, since Meta Box settings pages store options, and options are syncable.
Post types and taxonomies registered through Meta Box.
Field values, which do not travel alone: they ride along with the posts that hold them, as post meta inside a post export.
That last distinction matters. Definitions live in their own section; values live inside content. Sync the definitions first, then the content that uses them, and the fields arrive filled.
Two routes from Local to live
Route 1: files. Export on Local, and the JSON lands in your storage folder. If that folder is your child theme, commit it, then pull on the live site and import from the Library there. This is the Git-friendly route, and it works even when the two sites cannot reach each other at all.
Route 2: remote push. Configure the live site as a remote on your Local site, then push selected items directly. One thing about the direction: your Local site is not reachable from the internet, and that is fine, because Local always initiates. Push sends Local work to the live site, pull fetches live content down. The live site never needs to reach your machine.
For a one-person Local to live workflow, the remote push is the shorter path, so that is what the steps below use.
The remote push, step by step
On the live site: install and license WPChangeSync, and create an Application Password for an admin account under Users, then Profile. Copy it somewhere safe.
On Local: add the live site under Settings, then Remotes, using its URL and that Application Password, and hit Test. HTTPS on the live site is required; WPChangeSync refuses insecure targets.
Push the definitions. Open the Library, expand the Meta Box section, tick the field groups you want, pick your live remote in the Push to dropdown, and push. Settings page values travel the same way from their own rows.
Push the content. Now select the posts or pages that use those fields, and push them too. Their Meta Box values ride along as post meta.
Dry run first, both times. The dry run tells you exactly what would be written before anything is. On a production target, this is not optional hygiene, it is the whole point.
Check the live site. Fields there, values filled, Activity log showing what moved.
Order matters once: definitions before content. A synced value only displays when the matching field group exists on the target, so push the group first. After that first push, day-to-day syncs are usually content only, because definitions rarely change.
Limitations, honestly
The part the marketing page will not tell you, so this guide will:
Image fields need one line of code today. When content moves between sites, attachment IDs change. WPChangeSync remaps ACF image, gallery, and file fields automatically, but Meta Box media fields are not auto-detected yet. Add your Meta Box image field keys to the remapping pass with the wpchangesync_attachment_meta_keys filter, one line in a snippet plugin, and they remap like everything else. Without it, an image field can point at the wrong attachment on the target.
Relationship fields: imported posts remember their source IDs, so relationships reconnect when both sides arrive, even in separate pushes. For reshaping between differently built sites, Migration Transforms can remap relationship fields explicitly.
Local URLs inside values: exports store portable URLs, so your .local domain does not leak into production content through synced options.
MB Views and code-level extensions are code, and code is Git's job. WPChangeSync deliberately covers what lives in the database.