How to Keep User Metadata in Sync
Across WordPress Sites Without Custom Code
Syncing usernames and emails between WordPress sites is the easy part. Syncing the metadata — the billing addresses, membership tiers, custom fields, and WooCommerce-specific data — is where most solutions fall short. This guide covers how to do it properly, without writing a line of code.
Updated 2026
No-Code Implementation Guide

Ask most WordPress administrators what “user sync” means and they will describe syncing usernames, email addresses, and passwords between sites. That answer is not wrong — but it is incomplete in a way that matters enormously in practice. The username and email are the skeleton of a user record. The metadata is everything else: the billing address, the shipping preferences, the membership tier, the custom profile fields that your theme or plugins add, the WooCommerce customer data, the loyalty points balance, the language preference. For most businesses, the metadata is actually the valuable part of the user record.
The reason metadata sync gets less attention than credential sync is that it is harder. Usernames and emails live in the wp_users table, which has a predictable structure across every WordPress installation. Metadata lives in the wp_usermeta table, which can contain hundreds of different meta keys depending on what plugins are installed, what custom code has been added, and what the site’s specific configuration looks like. Syncing it correctly requires understanding which meta keys exist, which ones should be synced, and how to handle situations where the same meta key means different things on different sites.
This guide is for WordPress site owners and network administrators who want complete user metadata sync across their connected installations without hiring a developer or writing custom code. We cover what user metadata actually is at the database level, which categories of metadata matter most for multi-site sync, what the configuration looks like for a WordPress user metadata sync plugin that handles cross-site data without custom development, and the specific decisions you need to make to configure it correctly for your network.
No coding experience is required to follow this guide. Where technical concepts come up, we explain them in terms of what they mean for your data and your configuration decisions, not how they work at a code level.
What user metadata actually is: a plain-language explanation
WordPress stores user information across two database tables. The wp_users table contains the core identity fields: user login, user email, user password hash, display name, registered date, and a handful of others. These fields are the same on every WordPress installation because they are part of WordPress core.
The wp_usermeta table works differently. It is a key-value store: each row contains a user ID, a meta key (the name of the piece of data), and a meta value (the data itself). There is no fixed schema. Any plugin, theme, or custom code can add any meta key it wants and store any value. A user record that looks like it has eight fields in wp_users might have 80 or 800 rows in wp_usermeta depending on what is installed and how long the user has been active.
When a user sync plugin copies a user record from Site A to Site B, it must decide which meta keys to include. Copying everything is wrong — some meta keys are site-specific and will cause problems on the destination site if they carry over. Copying nothing means the destination site gets an empty profile skeleton that is missing all the data your business actually depends on. The configuration decision of which meta keys to sync is the most important decision in the entire metadata sync setup.
With this structure in mind, “syncing user metadata” means copying specific meta key-value pairs from the wp_usermeta table on Site A to the corresponding rows in the wp_usermeta table on Site B, for the user records that exist on both sites. The challenge is knowing which keys to include, which to exclude, and how to handle cases where the same key name carries different meanings on different sites.
The five categories of user metadata that matter most for multi-site sync
Rather than thinking about metadata sync at the level of individual meta keys — which can number in the hundreds — it is more practical to think in categories. Each category has different sync requirements, different exclusion rules, and different consequences if handled incorrectly.
WooCommerce stores an extensive set of customer-specific meta keys that go well beyond what most people think of as “shipping information.” These include billing first name, billing last name, billing company, billing address line 1 and 2, billing city, billing postcode, billing country, billing state, billing phone, billing email (which can differ from the account email), and the parallel set of shipping fields. It also includes a customer avatar URL and any custom checkout fields added by plugins.
billing_first_name, billing_last_name, billing_address_1, billing_city, billing_phone, shipping_* equivalentswc_last_active, _order_count, _money_spent, any order-history or site-specific statsMany WordPress networks collect additional profile information beyond the defaults: company name, website URL, phone number, biography, profile photo URL, social media handles, timezone preference, and any custom fields added by plugins like Advanced Custom Fields, Ultimate Member, BuddyPress, or Profile Builder. These fields are genuinely useful to sync because they describe the user as a person, not their relationship with a specific site. A user’s company name is the same on every site in your network.
The consideration here is field naming. If Site A uses a custom field key of user_company and Site B uses company_name for the same concept, straightforward sync will not connect them without explicit field mapping. Document your field keys across sites before configuring metadata sync for this category.
Membership plugins like MemberPress, Paid Memberships Pro, Restrict Content Pro, and WooCommerce Memberships store membership tier, expiry date, and access level information as user meta. If your network uses the same membership plugin across sites, syncing these fields allows a user’s membership status to be recognized on all connected sites automatically. A subscriber who upgrades to premium on Site A is immediately recognized as premium on Site B without any additional step.
This category requires careful thought about direction. Membership data typically should be treated as master-authoritative: the site where payment occurs determines the membership level, and that level propagates outward. Allowing sub-sites to write back membership level changes could allow unauthorized level escalation.
User preference data includes language or locale setting, email notification preferences, timezone, currency preference (on multi-currency WooCommerce sites), and dark/light mode or other UI preferences stored as meta. These fields create a consistent personal experience across your network when synced. A user who sets their language to French on Site A should see French content on Site B without being asked to set it again.
The main exception: email notification preferences may legitimately differ between sites. A user might want order updates from your store but not newsletter emails from your community site. Syncing notification opt-out settings without considering site-specific relevance can inadvertently suppress communications the user actually wanted.
This is the category that most administrators discover the hard way. Some meta keys are meaningful only in the context of a specific site and should never be copied to another installation. Syncing them either creates broken references, incorrect data, or security vulnerabilities.
wp_capabilities (role data — use role mapping instead), session_tokens, user_level, wp_user_level, order count and money spent stats, site-specific dashboard preferences (metaboxhidden_*, closedpostboxes_*)wp_capabilities) must be handled by role mapping, not raw meta copy, or a user could arrive on a site with permissions that do not match its role structure.WooCommerce metadata sync: the full field map you need
WooCommerce deserves its own detailed section because its metadata is the highest-stakes category for most e-commerce networks. Getting it wrong has direct operational consequences: wrong shipping addresses, wrong billing information, wrong tax calculations. The following table maps every WooCommerce customer meta key that should be part of your cross-site sync, along with the sync recommendation for each.

Configuring metadata sync without custom code: the practical steps
The theoretical framework above becomes useful only when you can apply it through a plugin interface without writing PHP or touching your database directly. Here is what the configuration process looks like in practice when you use a dedicated cross-site user sync plugin designed for non-developers.
Before any metadata can sync, the sites need to be connected securely. The plugin generates an encrypted API key on the master site and accepts it on each sub-site. This connection is the channel through which all sync traffic, including metadata, flows. The connection setup happens through a guided wizard — no server configuration or FTP access required.
The WooCommerce-specific metadata fields — billing and shipping — are configured in a dedicated section of the plugin settings. Enabling this sync option tells the plugin to include the WooCommerce customer meta keys in every user sync operation. The plugin handles the full list of WooCommerce billing and shipping fields automatically when this is enabled, without requiring you to specify each meta key individually.
In the sync settings tab, define whether metadata flows one-way from master to subs or bidirectionally. For most networks, one-way is the safer choice — it prevents sub-site metadata changes from writing back to the master unless you have a specific operational reason for bidirectional sync. The sync direction setting applies to all metadata, not just WooCommerce fields.
Role mapping defines how user roles translate between sites when user records are created on sub-sites. This must be configured before the Bulk Push that creates accounts for existing users, because the role each user receives on the destination site is determined at account creation time. A user who is a “Customer” on the WooCommerce master might need to be a “Member” on the community sub-site. The role mapping interface lets you define these translations without code.
The Bulk Push operation processes all existing users on the master site and pushes their complete user record — including all configured metadata fields — to all connected sub-sites via the background queue. This runs asynchronously in batches so it does not impact site performance. For a database of several thousand users, the push typically completes within a few hours of background processing without any manual intervention or server management.

How to verify that metadata sync is actually working correctly
Configuring metadata sync and trusting that it works are two different things. Before you rely on your configuration for production traffic, verify it against real data using a methodical test process. This takes about 15 minutes and gives you confidence that the sync is behaving exactly as configured.
Set distinct values for every metadata field you expect to sync. For WooCommerce, fill in a complete billing and shipping address. Make the values unique and recognizable — use a fictional address that you will unmistakably recognize on the destination site.
Update any field in the test user’s profile on the master site to create a sync event. Save the profile. This should immediately add a sync task to the queue for this user.
Open the Queue tab in the plugin settings on the master site. You should see the test user’s sync event. Wait for it to process — this typically takes under a minute. When the queue entry moves to “completed,” the sync has fired.
Log into the admin of the sub-site and navigate to the test user’s profile. Check every metadata field you set on the master. For WooCommerce, go to the customer record and verify the billing and shipping fields. They should match exactly. Any field that does not match identifies a sync configuration gap to address.
In the Logs tab, filter by the test user’s email. Confirm that the sync event shows as “applied” and that the timestamp matches the profile save you triggered on the master site. If the log shows “discarded” or a failure, the log entry will include the reason, which tells you exactly what to fix.

The metadata sync decision checklist: what to configure and what to skip
Before finalizing your metadata sync configuration, work through this decision checklist. Each question helps you make a deliberate, documented choice rather than relying on default settings that may not match your network’s specific needs.
User metadata is where the real value of your user database lives. Keeping it in sync across your WordPress network is not a nice-to-have feature — it is the foundation of a consistent customer experience, accurate order processing, and reliable cross-site reporting. The configuration decisions described in this guide are deliberate, documented choices that produce a metadata sync setup you can understand, verify, and maintain without developer involvement.
Nexu User Sync’s no-code WordPress user metadata synchronization across multiple sites gives you the WooCommerce field handling, the role mapping interface, the background queue, and the event log that makes all of this possible through a plugin settings panel. No PHP, no custom code, no database management. Just configured, verified, and running.
Complete user metadata sync across your WordPress network. No developer required.
Nexu User Sync handles WooCommerce billing and shipping metadata, extended profile fields, membership data, role mapping, and background queue processing — all configured through a plugin interface with no custom code required.

Okay, so I run a few WordPress sites for my remote gigs, and keeping user data in sync was always a headache until I found this guide. The part about metadata sync is a lifesaver because honestly, usernames and emails are the easy stuff.
I grabbed this guide thinking I'd finally fix the metadata sync nightmare between my clinic's WordPress sites without touching a single line of code. the intro made it sound like a breeze, but let me tell you it's anything but. sure, usernames and emails are easy enough since they're all tidy in that wp_users table, but the second you hit the metadata? forget it. the guide keeps promising "no code required," but wp_usermeta is a whole different beast.
Hey, grabbed this during the summer sale.
Hey, so I grabbed this guide thinking it'd solve my issue with syncing user data between two sites. the part about usernames and emails being the "skeleton" makes sense, but honestly? that's the easy stuff. The real headache is the metadata like membership levels and WooCommerce data and this guide barely scratches the surface on how to handle that without breaking things. Feels like it's just setting up the problem, not actually fixing it. Kinda disappointed for a "no code" solution.