Version: 1.5.4
Requires: WordPress 6.0+, PHP 7.4+, Ultimate Member (required)
Optional: WooCommerce, WooCommerce Subscriptions, FluentCRM
Overview
UM Export Pro is the full-featured member data toolkit for Ultimate Member. Export and import members to CSV or Excel, enrich data with WooCommerce and FluentCRM, run large jobs in the background, schedule automatic delivery, and store files locally or on Amazon S3.
Open UM Export from the WordPress admin menu for Export, Import, and Storage.
๐ธ Screenshot 1 โ Admin menu
Capture the left WordPress admin sidebar showing the UM Export menu with Export, Import, and Storage sub-items. Use in your โGetting Startedโ section.
Requirements
| Requirement | Notes |
|---|---|
| WordPress 6.0+ | Tested up to 6.9 |
| PHP 7.4+ | |
| Ultimate Member | Required โ plugin will not run without it |
| WooCommerce | Optional โ commerce filters and columns appear when active |
| WooCommerce Subscriptions | Optional โ subscription filters and columns |
| FluentCRM | Optional โ CRM filters and columns |
| Action Scheduler | Bundled with the plugin |
| WP-CLI | Optional โ for scripted exports and imports |
All admin screens require the manage_options capability.
Installation
- Install and activate Ultimate Member.
- Upload and activate UM Export Pro Premium.
- Complete Freemius activation if prompted.
- Open UM Export in the WordPress admin sidebar.
Admin menu:
- Export โ build and run member exports
- Import โ bulk CSV import
- Storage โ local disk or Amazon S3
If both the free and Pro plugins are installed, Pro takes over and the free export/import UI is disabled.
Export
The export workflow is a 3-step wizard with a sticky footer (Back / Continue / Download now).
Step 1 โ Target & filters
Filters are grouped in collapsible sections. Empty groups are ignored. Active filters appear as summary chips at the top.
Basics
- User role โ any registered WordPress role
- Account status โ approved, pending review, awaiting email, rejected, inactive
- Registration date โ last 7 / 30 / 90 days, or custom date range
Engagement & profile
- Inactive users (churn risk) โ 30, 60, or 90 days since last login
- Missing profile field โ users without a specific UM field filled in
- Profile updated date range โ members who updated their profile in a date window
WooCommerce (when WooCommerce is active)
- Minimum orders and minimum total spent
- Purchased product (searchable product picker)
- Last order date range
- Billing country
- Active subscription (yes / no)
- Active subscription on a specific product (requires WooCommerce Subscriptions)
FluentCRM (when FluentCRM is active)
- CRM status โ subscribed, unsubscribed, bounced, complained, pending
- Has tag / does not have tag
- In list
- Not in FluentCRM โ members with no CRM contact record
Custom field rules
Stack multiple rules on user meta with these operators:
- Equals / Not equals
- Contains
- In list / Not in list (comma-separated)
- Between (value: “min,max”)
- Greater than / Less than
- Has any value / Has no value
๐ธ Screenshot 2 โ Target & filters
Step 1 with two filter groups expanded (e.g. Basics + WooCommerce) and summary chips visible at the top.
๐ธ Screenshot 3 โ Custom field rule builder
Custom rules section with 2+ rules configured and the โ+ Add another ruleโ button visible.
Presets
- Suggested starters (first visit): All members, Incomplete profiles, WooCommerce customers
- Saved presets: load, update, and delete named filter + column sets
๐ธ Screenshot 4 โ Preset strip
Preset dropdown with an active preset chip, or the โNo saved presets yetโ suggested-starter buttons.
Step 2 โ Columns
Two-panel layout: available fields on the left, selected columns on the right with drag-to-reorder.
Column groups:
Basic details: ID, Name, Email, Role, Username, Display Name, Registered Date, First Name, Last Name, Profile Photo
WooCommerce: Total Orders, Total Spent, Last Order Date, First Order Date, Average Order Value, Last Active, Has Active Subscription, Subscription Next Renewal Date
FluentCRM: Status, Contact ID, Tags
Ultimate Member custom fields: Searchable list from discovered user meta. Advanced/technical meta is behind a collapsible โAdvanced / technical fieldsโ gate.
Live preview: First 25 rows plus total match count before download.
๐ธ Screenshot 5 โ Column picker
Step 2 with fields selected on the left and the reordered selected-column list on the right. Include the UM custom field search box.
๐ธ Screenshot 6 โ Live preview
Preview table showing โ25 of X matching membersโ.
Step 3 โ Review & export
Summary card
Shows who (filter summary), columns (count + list), and format.
Export now
- Download now (sticky footer) โ immediate CSV or Excel download
- Background export (email when ready) โ chunked processing; secure email link when complete. Recommended for 5,000+ rows.
- Hash PII (SHA256) โ hashes email and phone columns for Meta / Google Ads customer lists
Save & automate
- Save or update a named preset
- Schedule & delivery (requires a saved preset):
- Frequency: hourly, daily, or weekly
- Format: CSV or Excel (.xlsx)
- Email recipients (comma-separated)
- Webhook URL (Zapier, Make, or custom endpoint)
- Delta sync โ only members who joined or updated their profile since the last successful run
- Embed rows in webhook โ first 50 rows as JSON in the POST body (CSV schedules only)
- Send now โ trigger an immediate scheduled run
Activity
- Background export jobs โ status, format, row count, cancel queued jobs, download link
- Automated exports โ schedule list with last run, row count, webhook errors
๐ธ Screenshot 7 โ Review & export
Summary card (Who / Columns / Format) and Export now section.
๐ธ Screenshot 8 โ Schedule & delivery
Expanded schedule panel: frequency, email, webhook URL, delta sync, example JSON body.
๐ธ Screenshot 9 โ Background job progress
โBackground export in progressโ card with status, rows processed, and elapsed time.
๐ธ Screenshot 10 โ Job history
Activity table with completed and queued jobs, status pills, and download/cancel actions.
Webhook payload example
{
"schedule_id": "monthly-members",
"template_name": "Monthly Members",
"row_count": 412,
"download_url": "https://yoursite.com/wp-admin/admin-ajax.php?action=um_export_download_secure&token=โฆ",
"expires_in": "24 hours",
"rows_included": 3,
"rows_truncated": false,
"rows": [
{ "Email": "member@example.com", "First Name": "Alex" }
]
}
Import
3-step wizard at UM Export โ Import.
Step 1 โ Upload
- UTF-8 CSV with a header row
- Import mode: Create or update (upsert), Create only, or Update only
- Match key: Email, Username, or User ID
- Optional import preset for saved mapping rules
๐ธ Screenshot 11 โ Import upload
File upload, mode radio buttons, match-key dropdown, and optional preset selector.
Step 2 โ Map columns
- Auto-mapping from CSV headers (round-trip friendly with UM Export files)
- Per-column on-update rules: Default, Skip if blank, Always overwrite, Never update
- Fields to update: all mapped fields, only these fields, or all except selected fields
- Save mapping as an import preset
๐ธ Screenshot 12 โ Column mapping
Mapping table: CSV column, sample value, mapped field, per-field update rule.
Step 3 โ Preview & run
- Dry-run preview โ first 25 rows with create / update / skip estimates
- Run import now โ synchronous (small files)
- Run in background โ recommended for 50+ rows
Import options:
- Send password reset email when a new password is set
- Skip blank cells on update (default on)
- Suppress UM / WordPress new-user notification emails
- Role strategy: replace roles vs add without removing existing
๐ธ Screenshot 13 โ Dry-run preview
Preview table with create / update / skip per row.
๐ธ Screenshot 14 โ Import results
Created / Updated / Skipped summary and optional error list.
๐ธ Screenshot 15 โ Background import modal
Progress modal with rows processed.
Storage
UM Export โ Storage
| Setting | Description |
|---|---|
| Provider | Local disk (default) or Amazon S3 |
| AWS region | e.g. us-east-1 |
| Bucket | S3 bucket name |
| Access key / Secret | Or define via wp-config.php constants |
| Object prefix | e.g. um-exports/ |
| Delivery domain | Optional CloudFront or CDN domain |
| Object ACL | Private (signed URLs, recommended) or public-read |
| Local cleanup | Delete local copy after successful S3 upload |
Use Test connection to validate S3 credentials. Finished files use secure tokenized download links (24-hour default expiry).
๐ธ Screenshot 16 โ Storage settings
Provider options, S3 fields, ACL settings, and Test connection button.
๐ธ Screenshot 17 โ Export email (optional)
Email received after a background export with the secure download link.
WP-CLI
Export:
wp um-export run --preset=all-members wp um-export run --preset=monthly --format=xlsx --background wp um-export job list wp um-export job status cli_abc123xyz
Import:
wp um-import run --file=/path/to/members.csv --mode=upsert --match=user_email
Use cases
1. Monthly board report (Excel)
Goal: Approved members registered in the last 30 days.
- Step 1: Status = Approved, Registration = Last 30 days
- Step 2: Select ID, Name, Email, Role, Registered Date
- Step 3: Download now โ Excel (.xlsx)
2. Churn-risk re-engagement
Goal: Inactive members for a win-back campaign.
- Engagement filter: Inactive = 90 days
- Columns: Email, Name, Last Login
- Use background export for large lists
3. High-value WooCommerce segment
Goal: Top customers for a loyalty offer.
- Woo filters: min orders, min spend, billing country, purchased product
- Columns: Email, Total Orders, Total Spent, Last Order Date
- Save preset โ schedule weekly email to marketing
4. FluentCRM sync via Zapier (delta)
Goal: Push new/updated members to an external CRM daily.
- Filter approved members (or a tag-specific subset)
- Save preset and schedule daily
- Add Zapier webhook URL
- Enable Delta sync and Embed rows in webhook
5. Incomplete profile cleanup
Goal: Find members missing required fields.
- Use suggested preset Incomplete profiles, or
- Set Missing profile field to your required field
- Export Email, Name, Account Status
6. Meta / Google Ads hashed audience
Goal: Upload a customer list without raw PII.
- Filter your target segment
- Columns: Email, Phone
- Enable Hash PII (SHA256)
- Export CSV and upload to Ads Manager
7. Site migration (export โ import)
Goal: Move thousands of members to a new site.
Source: Export all members with UM custom fields โ background export โ download CSV.
Destination: Import CSV โ auto-mapping โ upsert by email โ background import.
8. Bulk profile update from spreadsheet
Goal: Update job title and company without touching emails.
- CSV: email, job_title, company
- Mode = Update only, match = email
- Email = Never update; other fields = Always overwrite
- Update only selected fields
9. S3-backed compliance archive
Goal: Nightly export stored in a private S3 bucket.
- Storage โ S3 with private ACL
- Daily scheduled preset with admin email backup
- Optional: delete local copy after S3 upload
10. CLI-driven nightly export
0 2 * * * cd /var/www/site && wp um-export run --preset=nightly-backup --format=csv --background
Free vs Pro
| Feature | Free | Pro |
|---|---|---|
| CSV export / import | Yes | Yes |
| Excel (.xlsx) | No | Yes |
| Presets | Yes | Yes |
| S3 storage | Yes | Yes |
| Import row limit | 500 rows | Unlimited |
| WooCommerce enrichment & filters | No | Yes |
| FluentCRM enrichment & filters | No | Yes |
| Custom meta rule builder | No | Yes |
| Inactivity / missing field filters | No | Yes |
| Background export / import | No | Yes |
| Scheduled email / webhook delivery | No | Yes |
| Delta sync | No | Yes |
| PII hashing | No | Yes |
| WP-CLI | No | Yes |
| Per-field import update rules | No | Yes |
| Import presets | No | Yes |
Security
manage_optionsrequired on all admin actions- Nonces on all form submissions and AJAX
- Export columns validated against a server-side allowlist
- CSV formula-injection hardening
- Time-limited secure download tokens
- Webhook URLs must resolve to public IPs (SSRF protection)
- S3 secrets can be locked via wp-config.php constants
- Optional SHA256 hashing for ad-platform uploads
Troubleshooting
| Issue | Fix |
|---|---|
| โRequires Ultimate Memberโ notice | Activate Ultimate Member |
| Action Scheduler error | Ensure plugin is active; check for conflicts |
| Missing custom fields | Clear field cache; site may have hit the 2,000 meta key limit |
| Preset columns dropped warning | Re-save preset with valid columns |
| Large export times out | Use Background export |
| Webhook not firing | Use a public HTTPS URL (Zapier / Make) |
| S3 test fails | Check region, credentials, and bucket IAM permissions |
| Import auto-map misses columns | Manually map in Step 2 |


