📋 Membership Manager
A full-featured WordPress membership plugin built for amateur radio clubs
What It Does
Membership Manager handles the complete membership lifecycle inside WordPress — from public sign-up and PayPal payment, through admin approval, automated renewal reminders, a members-only roster, an events calendar with attendance tracking, and a year-end prize drawing pool. It was designed specifically for amateur radio clubs, with fields for callsign, license class, ARRL membership, and DXCC certification built in.
Key Features
Callsign Auto-fill
Optional QRZ.com or Callook.info integration. New applicants type their callsign, click Look up, and the form fills in name, address, city, state, ZIP, and license class automatically — much faster sign-ups, fewer typos.
Email Audit Log
Every outgoing message — welcome, renewal reminder, payment confirmation, and admin notifications — is recorded with timestamp, subject line, and recipient. Each member's edit screen shows their full communication history at the bottom.
Comprehensive Dashboard
At-a-glance status counters plus year-to-date totals, renewal forecast (7/14/30/60-day buckets), upcoming events, recent activity feed, current officers, and member composition by type and license class.
PayPal & Stripe Payments
Both PayPal Checkout and Stripe Checkout supported, configurable independently. When both are enabled, members pick their preferred method on the registration and renewal forms. Cash and cheque payments can also be recorded manually by administrators.
Treasurer View
Under Memberships → Treasurer, staff can search a member, post cash or cheque payments in one step, refresh name and contact details, and fix attendance for the twelve most recent events — without wading through the full admin member form or whole-meeting attendance grid.
Member Approval Queue
New signups land in a dedicated approval queue with a count badge so an admin can review them before they hit the roster. Approve sends the welcome email; deny marks the record inactive.
Automatic Renewals
All standard memberships expire on December 31st. Members who join after October 1st roll forward to the following year automatically so they're never immediately due.
Renewal Reminders
Automated emails at 60, 30, 15, 7, and 1 day(s) before expiry via WP-Cron. Duplicate prevention ensures no member ever gets the same reminder twice. Manual reminders available any time.
Admin Notifications
Pick which administrators receive an email when a new member is awaiting approval or a payment is recorded. Per-user opt-in for each notification type.
Events & Attendance
Create meetings and events with date, time, location, and virtual meeting URL. Per-event attendance tracking marks members as in-person or virtual (Zoom, Meet, Teams, Webex).
DXCC Standings Lookup
On any member's edit screen, the plugin queries a shared dxcc_standings table (populated monthly by an external script) and shows every mode on file — entity count, Honor Roll, and Lifetime status — from the most recent snapshot. A mismatch warning appears when the standings table and the DXCC Certified checkbox disagree, with a one-click button to sync them.
Self Check-In Kiosk
Place a tablet at the registration table with the [mm_checkin] shortcode page open. Members type their callsign and check in instantly. A QR code lets attendees use their own phones. Unknown callsigns trigger a QRZ / Callook lookup and auto-create a Guest / Visitor record — no admin action needed for walk-ins.
Prize Drawing Pool
Annual attendance report ranks members by event count and visualises the year-end prize-drawing pool — one entry per attended event per member, displayed as individual name chips. Guests on the Visitor level are listed for attendance history but are not included in prize entry totals or chips.
Officer Titles
Assign officer roles to members. Under Settings → Officer titles & roles you can add, edit, remove, and reorder the list (or restore the built-in defaults). Officers appear at the top of the admin members list and the public roster in that order.
Member Roster
Members-only roster with sortable columns, name/callsign search, and per-member privacy controls. Silent Keys use the optional [mm_roster_in_memoriam] shortcode on any page you choose.
Access Control
Restrict any WordPress page or post to one or more membership levels using a simple meta box. Non-members see a customisable access-denied page.
Custom Email Templates
Edit the subject and body of Welcome, Renewal Reminder, and Payment Confirmation emails directly in the admin. Token substitution inserts member data dynamically.
CSV Import & Export
Bulk-import members from a CSV file with duplicate detection by email, callsign, or name. Export filtered subsets at any time. A template CSV guides correct formatting.
Settings Backup
Export all plugin settings to a JSON file and restore them on any site. PayPal credentials are excluded by default and require an explicit opt-in to include.
Membership Types
⭐ Standard
Regular annual membership. Expires December 31st each year. Requires PayPal payment on sign-up and renewal.
♾️ Lifetime
One-time membership that never expires. No renewal reminders are sent. Price can be set to $0 for complimentary lifetime memberships.
SK Silent Key
For deceased members. Shown in the In Memoriam table via [mm_roster_in_memoriam] (same members-only access as the roster). Never expires, never receives reminders.
🧑🤝🧑 Guest / Visitor
For meeting guests: $0, no renewal, attendance tracked so history carries over if they join later. Hidden from the main admin list unless you filter to include visitors, never on the public signup form, and not listed on the member roster.
How a Membership Works
Shortcodes
Add these shortcodes to WordPress pages and assign each page in Memberships → Settings → Page Assignments.
Public sign-up form. Collects first/last name, callsign, email, phone, address, license class, ARRL membership, and level selection. Initiates PayPal checkout on submit. New signups go into the approval queue before becoming active.
Members-only roster: active and lifetime members (and expired within the grace period) with officer titles at the top. Includes search, sortable columns, and contact icons. Use [mm_roster_in_memoriam] separately for Silent Keys. Visitors who are not active members see an access-denied message.
Optional In Memoriam table for Silent Key members — same login gate as the roster; outputs nothing when none are listed.
Member dashboard showing current level, status, expiry date, and a Renew button. Also lets members manage their own contact privacy settings (email, phone, address visibility on the roster).
Public self-service renewal page for members without a WordPress account. Members enter their email + callsign and are forwarded directly to checkout — no login required. Renewal-reminder emails also include a tokenized one-click renewal link with the same effect.
Self check-in kiosk for in-person events. Assign the page under Settings → Page Assignments → Event Check-In Page. When today matches an event, attendees enter their callsign to record attendance. New walk-ins are auto-created via callsign lookup. A QR code below the form lets attendees check in on their phones. The 📱 icon on the Events admin list links directly to this page for each event.
Public month-grid calendar of club events with prev/next/today navigation. Each event chip is colour-coded by type and links to a detail card below the grid showing time, location with map link, virtual link, and description. Mobile-responsive — collapses to a list view on phones. Fully public, no login required.
Admin Pages
Dashboard
Status counters (active, pending payment, awaiting approval, expired, total, revenue, expiring in 30 days), plus six expanded sections: Year at a Glance (new signups, revenue YTD, events held, attendance entries), Renewal Forecast (7/14/30/60-day buckets), Upcoming Events, Recent Activity feed, Current Officers, and Member Composition (by type, license class, and credentials). Quick action buttons for Add Member, Add Level, Add Event, and Run Renewal Reminders.
Members
Searchable, filterable member list with sortable columns. Officers appear at the top in title order with a title badge beside their name. Action icons for Edit, Activate, Deactivate, Send Reminder, and Transactions. The member edit screen covers all personal fields, level and status, officer title, DXCC certification, privacy settings, WordPress user linking, admin notes, cash/cheque payment recording, archive/unarchive, transaction history, and per-member attendance history.
Pending Approvals
Dedicated queue for new signups awaiting admin review. Menu item shows a count badge whenever members are waiting. Approve sends the welcome email; deny marks the record inactive.
Levels
Create and manage membership levels. Each level has a name, description, price, duration, and type (Standard / Lifetime / Silent Key). Slug uniqueness is enforced automatically.
Transactions
Full payment history. Shows PayPal transaction IDs for online payments and notes for cash/cheque payments. Filterable by member.
Events
Calendar of meetings and events with date, time, location, and virtual meeting URL. Per-event attendance form lists every active member with check-all / uncheck-all shortcuts, in-person/virtual radio buttons, virtual platform dropdown, and an optional notes field.
Attendance Report
Year-selectable report showing total events held, members who attended, and total prize entries. Per-member rankings, event-by-event breakdown, and a Prize Drawing Pool that visualises each entry as an individual name chip. Exportable as CSV.
Import / Export
Two sections: Members (CSV) and Plugin Settings (JSON). Import supports flexible date parsing and duplicate detection. Export can be filtered by status or member type.
Settings
Accordion layout covering PayPal credentials, email from-name/address, page assignments, payment return pages, roster grace period, admin notification recipients, role management, and custom email templates. Settings access is restricted to MM Administrators (and WordPress site administrators).
User Manual
Full in-plugin reference manual covering all 17 sections, available under Memberships → User Manual.
Roles & Permissions
The plugin creates three custom roles. WordPress site administrators automatically receive full access.
| Role | Members & Approvals | Events & Attendance | Levels | Settings | PayPal | Role Mgmt |
|---|---|---|---|---|---|---|
| MM Administrator | ✔ Full | ✔ Full | ✔ Full | ✔ Full | ✔ Full | ✔ Full |
| MM Manager | ✔ Full | ✔ Full | View only | ✘ Hidden | ✘ Hidden | ✘ Hidden |
| MM Member | Own profile only | ✘ | ✘ | ✘ | ✘ | ✘ |
[mm_my_membership] page to update their own privacy preferences — they do not get access to the WordPress admin dashboard.Requirements
wp-cron.php daily rather than relying on visitor-triggered WP-Cron.Version History
dxcc_standings table for the latest monthly snapshot; shows all modes with entity count, Honor Roll, and Lifetime flags. Mismatch detection with one-click sync against the DXCC Certified checkbox. No database schema changes.
country column added to the members table so walk-in visitor creation no longer returns an error.
[mm_checkin] shortcode; callsign entry, personalized greeting, auto-create visitors via QRZ/Callook, QR code for phone check-in. Event Check-In Page setting added. 📱 icon on Events list. Events list UI refresh: larger action icons, Location column truncation.
[mm_roster_in_memoriam] shortcode for Silent Keys on any page; main roster no longer includes in memoriam. No database schema changes.
[mm_renew_form] shortcode and tokenized one-click renewal links in reminder emails.
[mm_events_calendar] — month-grid view with prev/next nav, today highlight, and inline event details. Mobile-responsive.
Membership Manager v1.22.0 · Jeff Dale WB3ISP · GPL-2.0+ · CQ CQ DE WB3ISP 73