Ultimate Member Export Pro – Documentation

Version: 1.5.5 (Pro) · Free companion 1.0.9
Requires: WordPress 6.0+, PHP 7.4+, Ultimate Member (required)
Optional: WooCommerce, WooCommerce Subscriptions, FluentCRM, UM User Photos / Groups / Social Activity / Private Messages
Bundled: Action Scheduler (background jobs)
Licensing: Freemius (Pro)


Overview

UM Export Pro is the full member data toolkit for Ultimate Member. Export and import members as CSV or Excel, enrich rows with WooCommerce and FluentCRM, run large jobs in the background, schedule automatic delivery (email, Dropbox, Google Sheets, webhook), and store finished files on local disk or Amazon S3.

Open the top-level UM Export menu in WordPress admin:

  • Export — build filters, choose columns, download or automate
  • Import — bulk CSV create / update with mapping rules
  • Storage — local disk or Amazon S3 for finished files
  • Deliveries — Dropbox and Google Sheets credentials for scheduled sends


Left sidebar showing the UM Export top-level menu with Export, Import, Storage, and Deliveries.

Requirements

RequirementNotes
WordPress 6.0+Tested up to 6.9
PHP 7.4+
Ultimate MemberRequired — menus and handlers do not register without it
WooCommerceOptional — commerce filters and columns
WooCommerce SubscriptionsOptional — subscription filters and columns
FluentCRMOptional — CRM filters and columns (needs FluentCRM tables)
UM User Photos / Groups / Social Activity / Private MessagesOptional — extra export column groups when those extensions are present
Action SchedulerBundled; used for background export/import chunks
WP-CLIOptional — scripted export/import (Pro only)

All admin screens and AJAX actions require the manage_options capability. Creating users on import additionally needs create_users.


Installation

  1. Install and activate Ultimate Member.
  2. Upload and activate UM Export Pro Premium.
  3. Complete Freemius activation if prompted.
  4. Open UM Export in the WordPress admin sidebar.

If both the free plugin (UserElements Member Export for Ultimate Member) and Pro are installed, Pro takes over: Free disables its menus and handlers and shows a notice linking to admin.php?page=um-export. Free can remain installed; it does not auto-deactivate.


Export

Path: UM Export → Export. A 3-step wizard with a sticky footer (Back / Preview first 25 rows / Continue / on step 3: format + 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, or all roles
  • Account status — Approved, Pending administrator review, Waiting email confirmation, Rejected, Inactive
  • Registration date — Last 7 / 30 / 90 days, or custom date range

Engagement & profile

  • Inactive users — no login in last 30 / 60 / 90 days (uses _um_last_login)
  • Missing profile field — users without a specific discovered meta key filled in
  • Profile updated date range — members whose _um_export_last_modified stamp falls in a window (stamped on register, profile update, and relevant Woo order events)

WooCommerce (when WooCommerce is active)

  • Minimum orders and minimum total spent
  • Purchased product (searchable product picker, completed/processing orders)
  • Last order date range
  • Billing country
  • Active subscription yes/no (WooCommerce Subscriptions)
  • Active subscription on a specific product (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 AND rules on user meta:

  • Equals / Not equals
  • Contains (including multi-select)
  • In list / Not in list (comma-separated)
  • Between (value: min,max)
  • Greater than / Less than
  • Has any value / Has no value


Step 1 with two filter groups expanded and summary chips at the top.


Custom rules with 2+ rules and “+ Add another rule”.

Presets

  • Suggested starters (when none saved): All members, Incomplete profiles, WooCommerce customers (if Woo active)
  • Saved presets: load, update, or save as new; delete named filter + column + media-mode sets
  • Clear Field Cache — refreshes the discovered meta key list (SQL discovery is capped at 2,000 keys)


Preset dropdown with an active chip, or suggested-starter buttons when empty.

Step 2 — Columns

Two-panel layout: available fields on the left, selected columns on the right with drag-to-reorder. Select all / deselect all visible; searchable UM custom fields.

Basic Details: ID, Name, Email, Role, Username, Display Name, Registered Date, Profile Photo (URL), Cover Photo (URL)

First name, last name, nickname, description, phone, and other profile meta appear under Ultimate Member custom fields (and are exportable via allowlist).

WooCommerce: Total Orders, Total Spent, Last / First Order Date, Average Order Value, Last Active, Has Active Subscription, Subscription Next Renewal Date

FluentCRM: Status, Contact ID, Tags

UM Media Extensions (when available): Gallery album count, gallery photo URLs, groups count, activity photo URLs

UM Messaging (when Private Messages tables exist): Conversation count, messages sent/received, unread count, last message at

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 (sticky footer “Preview first 25 rows”).



Step 2 with selected columns on the right and the UM custom field search box.


Preview table showing “25 of X matching members”.

Step 3 — Review & export

Summary card

Who (filter summary), columns (count + list), and format.

Export now

  • Download now (sticky footer) — immediate CSV or Excel (.xlsx)
  • Background export (email when ready) — chunked via Action Scheduler (500 users per chunk). Recommended for thousands of rows. Completion email includes a secure download link (default 7 days). Optional: attach the file when under the size limit (default 15 MB).
  • Hash PII (SHA256) — hashes email columns (lowercased/trimmed) and phone columns (digits only) for Meta / Google Ads customer lists. Default email keys: email, user_email; phone keys: phone_number, billing_phone.

Profile media & file fields

  • Export file URLs (default) — profile/cover/UM file fields resolve to links
  • Raw stored values — filenames or attachment IDs as saved in meta
  • ZIP bundle — spreadsheet plus copied files under media/{user_id}/{field}/ (relative paths in the sheet)

Save & automate

  • Save or update a named preset (required before scheduling)
  • Send this member list automatically:
    • How often: Every day, Every hour, Once a week
    • File type: CSV or Excel (.xlsx)
    • Destinations (multi-select):
      • Email a download link (scheduled links expire in 24 hours)
      • Email the file as an attachment
      • Save a copy to Dropbox (connect under Deliveries; default folder /UM-Exports)
      • Update a Google Sheet (CSV schedules only; Spreadsheet ID + tab; replaces from A1; share sheet with the service account email)
    • Webhook URL (optional) — Zapier, Make, or custom HTTPS endpoint
    • Only new or updated members (delta) — uses _um_export_last_modified since last successful run
    • Embed rows in webhook — first 50 CSV rows as JSON in the POST body (CSV only)
    • Send now — trigger an immediate scheduled run

Activity

  • Background downloads — Queued / Running / Complete / Failed / Canceled; cancel while queued; download when complete
  • Automatic sends — schedule list with last run, row count, and delivery status (email / Dropbox / Sheets / webhook)


Summary card, Export now, Hash PII, and media mode radios.


Expanded “Send this member list automatically” panel with destinations, Dropbox folder, Google Sheet fields, webhook, delta, embed rows.

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",
  "storage_provider": "local",
  "object_key": "…",
  "rows_limit": 50,
  "rows_included": 3,
  "rows_truncated": false,
  "rows": [
    { "Email": "member@example.com", "First Name": "Alex" }
  ]
}

Empty scheduled exports delete the generated file and skip delivery.


Import

Path: UM Export → Import. 3-step wizard (?step=1|2|3) plus an import history / background jobs list.

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 radios, match-key dropdown, 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
  • Readonly / non-importable: computed columns such as Name, Profile Photo, and enricher fields
📸 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 / error estimates
  • Run import now — synchronous (small files)
  • Run in background — recommended when session rows > 50; chunks of 100 rows; email when complete

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

Pro has no hard row cap. Background imports can be canceled from the history UI.

📸 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

Path: UM Export → Storage

Background exports write locally first; the selected provider then takes over for durable storage and download links.

SettingDescription
ProviderLocal disk (default) or Amazon S3
AWS regione.g. us-east-1
BucketS3 bucket name
Access key / SecretOr lock via wp-config.php constants
Object prefixe.g. um-exports/
Delivery domainOptional CloudFront / CDN for public-read objects
Object ACLPrivate (signed URLs, recommended) or public-read
Local cleanupDelete local copy after successful S3 upload

Use Test connection to validate S3 credentials.

Download link expiry:

  • Manual background jobs → default 7 days
  • Scheduled email links → 24 hours
  • Private S3 objects resolve through a short-lived presigned URL (~1 hour) after the token is redeemed

Local cleanup cron: daily job removes aged CSV/XLSX artifacts older than ~30 days.

wp-config.php constants:

define( 'UM_EXPORT_STORAGE_PROVIDER', 's3' );
define( 'UM_EXPORT_AWS_ACCESS_KEY_ID', 'AKIA...' );
define( 'UM_EXPORT_AWS_SECRET_ACCESS_KEY', '...' );
define( 'UM_EXPORT_AWS_BUCKET', 'my-exports-bucket' );
define( 'UM_EXPORT_AWS_REGION', 'us-east-1' );
📸 Screenshot 16 — Storage settings
Provider radios, S3 fields, ACL, Test connection.
📸 Screenshot 17 — Export ready email
Background-export completion email with the secure download link.

Deliveries

Path: UM Export → Deliveries

Connect cloud destinations once, then enable them per scheduled preset.

DestinationSetup
DropboxApp with files.content.write; paste access token. Per-schedule folder path (default /UM-Exports).
Google SheetsService account JSON (Sheets API enabled). Share each spreadsheet with the service account email as Editor. CSV schedules replace data from A1.

Use Test connection for Dropbox or Google auth. Credentials can also be locked in wp-config:

define( 'UM_EXPORT_DROPBOX_ACCESS_TOKEN', 'sl....' );
define( 'UM_EXPORT_GOOGLE_SERVICE_ACCOUNT_JSON', '{...}' );
📸 Screenshot 18 — Deliveries
Dropbox token field, Google service-account JSON, Test connection.

WP-CLI (Pro)

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

Flags: --format=csv|xlsx, --mode=create|update|upsert, --match=user_email|user_login|id. CLI import is synchronous (auto-maps headers).


Use cases

1. Monthly board report (Excel)

  1. Step 1: Status = Approved, Registration = Last 30 days
  2. Step 2: ID, Name, Email, Role, Registered Date (+ first/last name from custom fields if needed)
  3. Step 3: Download now → Excel (.xlsx)

2. Churn-risk re-engagement

  1. Engagement: Inactive = 90 days
  2. Columns: Email, Name, and last-login related meta if present
  3. Use background export for large lists

3. High-value WooCommerce segment

  1. Woo filters: min orders, min spend, billing country, purchased product
  2. Columns: Email, Total Orders, Total Spent, Last Order Date
  3. Save preset → schedule weekly email to marketing

4. FluentCRM / Zapier delta sync

  1. Filter approved members (or a tag-specific subset)
  2. Save preset → schedule daily
  3. Add Zapier webhook URL
  4. Enable delta sync + Embed rows in webhook

5. Incomplete profile cleanup

  1. Suggested preset Incomplete profiles, or set Missing profile field
  2. Export Email, Name, Account Status

6. Meta / Google Ads hashed audience

  1. Filter target segment; columns Email (+ phone if available)
  2. Enable Hash PII (SHA256)
  3. Export CSV → Ads Manager

7. Site migration (export → import)

Source: Export all members with UM custom fields → background export → download CSV.
Destination: Import → auto-map → upsert by email → background import.

8. Bulk profile update from spreadsheet

  1. CSV: email, job_title, company
  2. Mode = Update only, match = email
  3. Email = Never update; other fields = Always overwrite
  4. Update only selected fields

9. S3-backed compliance archive

  1. Storage → S3 with private ACL
  2. Daily scheduled preset with email link backup
  3. Optional: delete local copy after S3 upload

10. Dropbox + Google Sheets ops report

  1. Deliveries → connect Dropbox token and Google service account
  2. Save a CSV preset; enable Dropbox folder + Google Sheet destinations
  3. Share the sheet with the service account email
  4. Schedule daily or use Send now

11. Media ZIP for offsite backup

  1. Select profile/cover/file columns
  2. Media mode = ZIP bundle
  3. Background export for large member bases

12. CLI-driven nightly export

0 2 * * * cd /var/www/site && wp um-export run --preset=nightly-backup --format=csv --background

Free vs Pro

Free lives under the Ultimate Member submenu. Pro registers its own top-level UM Export menu. When Pro is active, Free yields completely.

FeatureFree (1.0.9)Pro (1.5.5)
Admin locationUnder Ultimate MemberTop-level UM Export
CSV export / importYesYes
Excel (.xlsx)NoYes
Export row limit2,000Unlimited (+ background)
Export presetsMax 3Unlimited
Import row limit500Unlimited (+ background)
Import modesUpsert, Create onlyUpsert, Create only, Update only
Match keysEmail, UsernameEmail, Username, User ID
Per-field import update rulesNoYes
Import presetsNoYes
S3 storageNo (local only)Yes
Deliveries (Dropbox / Sheets)NoYes
WooCommerce enrichment & filtersNoYes
FluentCRM enrichment & filtersNoYes
UM Photos / Groups / Activity / PM columnsNoYes (when extensions present)
Custom meta rule builderNoYes
Inactivity / missing field filtersNoYes
Background export / importNoYes
Scheduled email / Dropbox / Sheets / webhookNoYes
Delta syncNoYes
PII hashingNoYes
Media URL / raw / ZIP modesNoYes
WP-CLINoYes

Security

  • manage_options on all admin actions (import create also needs create_users)
  • Nonces on form submissions and AJAX
  • Export columns validated against a server-side allowlist
  • CSV formula-injection hardening (cells starting with = + - @ / tab / CR)
  • Time-limited secure download tokens; path confinement under the storage directory
  • Webhook URLs must resolve to public IPs (SSRF protection)
  • S3 and delivery secrets can be locked via wp-config.php constants
  • Optional SHA256 hashing for ad-platform uploads
  • Upload/storage dirs hardened with index.php + .htaccess deny rules

Developer notes

Useful filters/actions include: um_export_exportable_columns, um_export_pii_email_columns, um_export_pii_phone_columns, um_export_webhook_max_rows, um_export_email_attachment_max_bytes, um_export_storage_settings, um_import_importable_columns, um_import_row_data, um_import_before_user_save, um_import_after_user_save, um_export_delivery_complete.

Background chunk sizes: export 500 users; XLSX finalize stages in 5,000-row batches; import 100 rows.


Troubleshooting

IssueFix
“Requires Ultimate Member” / missing menusActivate Ultimate Member
Free UI disappearedPro is active — use UM Export top-level menu
Action Scheduler errorEnsure Pro is active; check for AS conflicts with other plugins
Missing custom fieldsClear Field Cache; site may have hit the 2,000 meta key discovery limit
Preset columns dropped warningRe-save preset with currently allowlisted columns
Large export times outUse Background export
Webhook not firingPublic HTTPS URL; host must not resolve to private IPs
S3 test failsRegion, credentials, bucket IAM (PutObject / GetObject / Delete as needed)
Dropbox / Sheets disabled in schedule UIConnect credentials under Deliveries and Test connection
Google Sheet empty / permission errorCSV format only; share sheet with service account email as Editor
Import auto-map misses columnsManually map in Step 2
Free: export blocked at 2,000 / import at 500Narrow filters or upgrade to Pro

Scroll to Top