The gap in WordPress's default user export
WordPress's native export tools treat a user as a fixed shape: email, login, display name, role, done. That's fine until your site does anything beyond the basics.
If you're running a membership platform, a multi-author blog, or team profiles, chances are most of the interesting data isn't in WordPress's default user table at all — it's in Advanced Custom Fields (ACF) attached to the user. Avatars, company info, membership tier, social links, bios with structure.
Native export doesn't know any of that exists. It has no concept of ACF fields, and the moment one of those fields holds an image rather than text, migration breaks completely — you either lose the field or end up with a dead URL pointing at a file that never made the trip.
What a proper user migration needs
To move users along with their full profile, you need three things a default export doesn't give you:
- Filtering — by role, post count, registration date, or even by an ACF field value (e.g. "only users on the Pro membership plan").
- Field-level control over both standard WordPress fields and any ACF fields registered for user profiles.
- Image handling — so an avatar or photo stored in a custom field gets downloaded and reattached on the destination site, not just referenced by a broken URL.
I built this into Import Export by RockStarLab as a PRO feature (new users get PRO free for one month). Here's the shape of the workflow.
Exporting users with ACF fields
1. Choose Users as the content type
From Import Export by RockStarLab → Export, select Users. If ACF is active on your site, the plugin automatically detects registered ACF user fields and adds them to the available field list — no extra configuration needed.
2. Filter which users to export
Rather than exporting your entire user table, filter by:
- Role (administrators, editors, authors, subscribers)
- Post count
- Registration date
- A specific ACF field value (e.g. membership level)
3. Select fields — standard and ACF
Standard fields include email, login, display name, first/last name, description, and website URL. If ACF is registered on user profiles, those fields show up in the same list. You can add all fields at once or drag in only what you need.
4. Pick an export format
| Format | Best for |
|---|---|
| CSV | Moving users between WordPress sites |
| XLSX | Manual review, editing, client sharing |
| JSON | Developer-facing, structured workflows |
| XML | System-to-system integrations |
| ODS | LibreOffice / OpenDocument workflows |
A CSV row for a user with ACF fields looks roughly like this:
user_email,user_login,display_name,acf_company,acf_membership_tier,acf_avatar
jane@example.com,janedoe,"Jane Doe","Acme Inc","pro","https://site.com/wp-content/uploads/2026/08/jane.jpg"
Note the acf_avatar column — that's a plain URL in the export file, but on import it becomes an actual media attachment, not just a stored string.
Importing users on the destination site
1. Upload and preview
Go to Import Export by RockStarLab → Import, choose Users, upload the file. The preview step shows the first rows so you can confirm the file was parsed correctly before anything touches the database.
2. Map fields
If the file was generated by the same plugin, Auto Map connects columns to the correct WordPress and ACF fields automatically. Importing a hand-built CSV instead? Map fields manually by dragging columns into place.
3. Set duplicate detection
For users specifically, match by email — it's the one field guaranteed to be unique per account. This lets the importer update an existing user instead of creating a duplicate.
4. Enable automatic media import
This is the part that matters most for ACF image fields. Turning on Automatically Import Media Files tells the plugin to:
- detect image URLs inside the imported data
- download those images
- add them to the destination site's Media Library
- reattach them to the correct ACF field on the imported user profile
Without this step, an ACF image field just imports as a URL string pointing at a file that may not even exist on the new server.
Verifying the import
Don't trust the success message alone:
- Open
Userson the destination site and confirm the accounts are there. - Open a couple of profiles and check the ACF section — both text and image fields.
- Check the Media Library to confirm avatar/photo files actually landed.
Free vs. PRO
| Feature | Free | PRO |
|---|---|---|
| Import/export posts and pages | ✅ | ✅ |
| CSV, JSON, XML, XLSX, ODS formats | ✅ | ✅ |
| User import/export | ❌ | ✅ |
| ACF user field export | ❌ | ✅ |
| Auto-import media from ACF fields | ❌ | ✅ |
| Transformation functions | ❌ | ✅ |
Edge cases worth knowing about
- ACF repeater fields and multi-value fields need to be flattened or restructured for CSV — JSON export is a better fit if your user profiles use repeaters heavily.
- Always run a small test batch (2-3 users) before a full migration, especially the first time you enable automatic media import.
- Back up the destination database before running a production import.
Where to go from here
Full walkthrough with screenshots: Export and Import WordPress Users with ACF Custom Fields
Plugin (free, with a 1-month PRO trial covering this feature): Import Export by RockStarLab
If you've hit edge cases with ACF repeaters, flexible content fields, or other structured user data during a migration, I'd like to hear about it — that's exactly the kind of thing I'm trying to stress-test next.



Top comments (0)