✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount
✨ New Plugin Alert ✨ SleekRank is now available with €50 launch discount

SleekView for Paid Memberships Pro: members & orders as tables

Paid Memberships Pro splits members and orders across pmpro_memberships_users and pmpro_membership_orders. SleekView reads them so you can build joined views with status, level, and lifetime spend visible at a glance.

♾️ Lifetime License available

SleekView table view for Paid Memberships Pro

Member ops without per-record clicks

Paid Memberships Pro keeps its operational data in two custom tables: pmpro_memberships_users stores one row per user-membership pair with status (active, expired, cancelled, admin_cancelled), level ID, start date, and end date, and pmpro_membership_orders stores every transaction with subscription_transaction_id linking renewals together. Membership levels themselves live in pmpro_membership_levels, and discount codes plus their usage live in pmpro_discount_codes and pmpro_discount_codes_uses.

PMPro's default admin gives Members and Orders separate screens, with reporting in a third tab. Joining a member to their lifetime-spend total or their last-order outcome means either jumping between screens or running custom queries through the Reports module. The PMPro Multiple Memberships add-on creates additional rows in pmpro_memberships_users — one per active membership per user — which complicates the default member view further because the same user appears multiple times.

SleekView reads both tables directly, joins on user_id, and aggregates orders per member for a single member-centric view with level, status, lifetime spend, last-order date, and join date as proper columns. Multiple-memberships installs render as one row per membership with the user_id grouping intact.

Workflow

PMPro members and orders in one workspace

1

Map the PMPro tables

Point SleekView at pmpro_memberships_users, pmpro_membership_orders, and pmpro_membership_levels. Each becomes a navigable view with the columns PMPro already maintains.
2

Join on user_id

Build a member-centric view joining members to orders. Aggregate total from pmpro_membership_orders for lifetime spend; show last-order date and status inline.
3

Save the operational views

Build saved views for active members by level, expired-but-still-listed accounts, the cohort joined this month, and the failed-orders dunning queue. Gate by role for finance, admin, support.
4

Edit through PMPro APIs

Status and level changes route through the PMPro API where supported so member-level hooks fire. Direct DB writes stay available for bulk migrations or one-off cleanup.

Sample columns

A typical PMPro members view

One row per member with level, status, and order summary.
Source: wp_pmpro_memberships_users + wp_pmpro_membership_orders
Member Level Status Lifetime spend Last order Joined
alex@studio.co Pro Active $240 Apr 24 Jan 12
ria@design.io Annual Active $120 Mar 14 Mar 14
tom@hello.dev Pro Expired $120 Mar 24 Mar 24
mia@brew.coop Trial Cancelled $0 Apr 02

Comparison

Default PMPro admin vs SleekView

Default PMPro admin

  • Members and orders are in separate screens
  • Joining member + order data requires reports or SQL
  • Bulk status changes go one row at a time
  • Filtering by level + status + last order isn't a saved view
  • Cohort views (e.g. members who joined this month) need exports

SleekView

  • Joined members + orders in one view
  • Lifetime-spend and last-order columns inline
  • Filter by level + status + join date together
  • Inline-edit member status and level
  • Save views per role

Features

What SleekView gives you for Paid Memberships Pro

Joined member + order views

Combine pmpro_memberships_users and pmpro_membership_orders into one row per member with all the fields you need — level, status, lifetime spend, last order, and join date.

Cohorts and LTV

Sort members by lifetime spend, filter by level plus join date for cohort views — without exporting CSVs. Compare retention across cohorts by signup month directly in the table.

Inline status & level edits

Update member status (active to cancelled to expired) or change level inline. Bulk-update across cohorts for migrations, comps, or scheduled flips with the PMPro API firing where supported.

Audience

Who uses SleekView for Paid Memberships Pro

Finance ops

Order audit table joined with member data, sortable by date and amount. Filter by status for the dunning queue and export as CSV for monthly-close reconciliation.

Membership admins

Active vs cancelled vs expired members with inline status fixes. Spot accounts in admin_cancelled state that need follow-up before automatic expiry.

Support

Per-member order history visible during chat — no jumping screens. Last order, lifetime spend, and current status all in one row for full context on every ticket.

The bigger picture

Why PMPro stores need joined tables

Paid Memberships Pro is popular because it does its core job well — member capture and access control — but its admin treats members and orders as two separate concerns. Operationally that's wrong: every retention question, every dunning workflow, and every cohort analysis needs both tables read together. Did this member's last order fail? Is their membership still active despite that? How much have they paid since signup? PMPro stores the data to answer all of those, but reaching it from the default admin means the Reports module, exports, and SQL.

SleekView's joined view collapses the two tables into one workspace where the row-level question is one filter away. Finance teams running monthly close, support handling chat queries, and growth teams building cohort retention analysis all benefit from the same simplification: one screen instead of three. For installs running PMPro Multiple Memberships or Recurring Subscriptions, the workspace adapts automatically — multiple-memberships rendered as one row per membership, recurring renewals grouped by subscription_transaction_id.

Questions

Common questions about SleekView for Paid Memberships Pro

Yes. pmpro_discount_codes is exposed as a separate view, with usage joinable to orders via pmpro_discount_codes_uses. Build a view of discount codes ranked by total uses and revenue attributed, or filter to expired codes that still have orders attempting to use them.

 

Yes. Filter by status to expired, cancelled, or admin_cancelled and SleekView shows the relevant cohort. Combine with end-date filters to find accounts that expired in a specific window — useful for win-back campaigns.

 

Yes when SleekView uses PMPro's API for status changes, so registered hooks (level-change emails, capability sync, integration callbacks) fire as expected. Direct DB edits skip hooks by design — choose per-view depending on whether you want side effects to re-trigger.

 

Multiple memberships are still rows in pmpro_memberships_users with the same user_id across rows. SleekView shows one row per membership with the user_id as a column, so you can either group by user_id or treat each membership as its own row depending on the view.

 

Yes. Any SleekView view exports to CSV or JSON, including joined member-plus-order views. Build a saved view filtered to last month's orders by level and export it as a monthly revenue report — no separate export script needed.

 

Yes. Recurring orders land in pmpro_membership_orders with a populated subscription_transaction_id linking them to their parent. Filter by that field to group renewals per subscription, or count renewals per member for retention analysis.

 

Yes. Sort the joined view by last-order date and filter by status to error or refunded. That's the dunning queue — members whose most recent payment didn't go through and need outreach before their membership expires.

 

Pay-by-check orders land in pmpro_membership_orders with status pending until manually marked paid. Build a view filtered to that gateway and pending status to see the queue of payments awaiting manual reconciliation, then update inline as cheques clear.

 

Pricing

More than 1000+
happy customers

Explore our flexible licensing options tailored to your needs. Upgrade your license anytime to access more features, or opt for a lifetime license for ongoing value, including lifetime updates and lifetime support. Our hassle-free upgrade process ensures that our platform can grow with you, starting from whichever plan you choose.

Starter

€79

EUR

per year

  • 3 websites
  • 1 year of updates
  • 1 year of support

Pro

€149

EUR

per year

  • Unlimited websites
  • 1 year of updates
  • 1 year of support

Lifetime ♾️

Most popular

€249

EUR

once

  • Unlimited websites
  • Lifetime updates
  • Lifetime support

...or get the Bundle Deal
and save €250 🎁

The Bundle (unlimited sites)

Pay once, own it forever

Elevate your WordPress site with our exclusive plugin bundle that includes all of our premium plugins in one package. Enjoy lifetime updates and lifetime support. Save significantly compared to buying plugins individually.

What’s included

  • SleekAI

  • SleekByte

  • SleekMotion

  • SleekPixel

  • SleekRank

  • SleekView