📋 Membership Manager

A full-featured WordPress membership plugin built for amateur radio clubs

v1.22.0 WordPress 6.0+ PHP 7.4+ GPL-2.0+ WB3ISP

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

RegisterMember fills out the public registration form with personal details, callsign, and license class.
PayRedirected to PayPal to complete payment. Returned to the site on success, failure, or cancellation.
Pending ApprovalApplication waits in the admin queue. Opted-in admins are notified by email.
ApproveAdmin approves; status moves to active, welcome email sent, and the member appears on the roster.
RenewReminder emails at 60/30/15/7/1 days before December 31st. Member renews via the My Membership page.
ExpireUnpaid memberships expire automatically. Archived members are excluded from reminders.

Shortcodes

Add these shortcodes to WordPress pages and assign each page in Memberships → Settings → Page Assignments.

[mm_registration_form]

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.

[mm_member_roster]

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.

[mm_roster_in_memoriam]

Optional In Memoriam table for Silent Key members — same login gate as the roster; outputs nothing when none are listed.

[mm_my_membership]

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).

[mm_renew_form]

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.

[mm_checkin]

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.

[mm_events_calendar]

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 Member is a front-end only role. Members use the [mm_my_membership] page to update their own privacy preferences — they do not get access to the WordPress admin dashboard.

Requirements

🌐
WordPress6.0 or higher
🐘
PHP7.4 or higher
🗄️
DatabaseMySQL 5.6+ / MariaDB 10.0+
💳
PayPalBusiness account (REST API)
WP-CronFor automated reminders
💡 For reliable automated renewal reminders on low-traffic sites, configure a real server cron job to hit wp-cron.php daily rather than relying on visitor-triggered WP-Cron.

Version History

1.22.0 May 2026 DXCC Standings panel on the member-edit screen — queries a shared 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.
1.21.3 May 2026 Personalized check-in welcome message uses QRZ nickname when available ("Welcome Jeff!" instead of legal name). Minor patch bump.
1.21.2 May 2026 DB schema fix: country column added to the members table so walk-in visitor creation no longer returns an error.
1.21.1 May 2026 Country field on member records (optional; leave blank for USA). State dropdown expanded to include PR, GU, and VI. CSV import/export includes the new column.
1.21.0 May 2026 Self check-in kiosk — new [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.
1.20.2 May 2026 New [mm_roster_in_memoriam] shortcode for Silent Keys on any page; main roster no longer includes in memoriam. No database schema changes.
1.20.1 Apr 2026 User manual: Guest / Visitor coverage (levels, filters, Treasurer, prize pool, dashboard, Settings reference); developer checklist mentions marketing snippets. No database schema changes.
1.20.0 Apr 2026 Configurable officer titles & roles in Settings (add, edit, remove, reorder, restore defaults); included in settings JSON export. No database schema changes.
1.19.1 Apr 2026 Version bump with refreshed marketing snippets (badges, history, Guest / Visitor copy on this page). See WordPress plugin changelog for full details.
1.19.0 Apr 2026 Guest / Visitor membership level — attendance-only guests, optional admin list filter, excluded from public roster and registration; prize report lists attendance but not prize drawing entries for visitors.
1.18.0 Apr 2026 Treasurer view under Memberships → quick cash/cheque payments, core member field edits, and attendance for the 12 most recent events. No database changes.
1.14.0 Apr 2026 Self-service renewal for members without a WordPress account. New [mm_renew_form] shortcode and tokenized one-click renewal links in reminder emails.
1.13.1 Apr 2026 Callsign lookup output is now title-cased — names and addresses come through as "Jeff Dale" and "123 Main St" instead of the FCC's ALL CAPS format.
1.13.0 Apr 2026 Stripe Checkout integration alongside PayPal. Both gateways can be enabled simultaneously — members pick their preferred method on the registration and renewal forms.
1.12.0 Apr 2026 Callsign auto-fill — Callook.info (free) and QRZ.com XML API (paid) selectable in Settings. New applicants click Look up and the form fills in name, address, and license class automatically.
1.11.0 Apr 2026 Email audit log — every outgoing message is recorded with timestamp, type, subject, and recipient. New Email History panel on every member's profile shows the full communication trail.
1.10.0 Apr 2026 Public events calendar shortcode [mm_events_calendar] — month-grid view with prev/next nav, today highlight, and inline event details. Mobile-responsive.
1.9.6 Apr 2026 Google Maps URL field per event — 📍 pin appears beside the location in the events list, dashboard, and take-attendance header (opens in a new tab).
1.9.5 Apr 2026 Expanded dashboard — renewal forecast, year-to-date totals, upcoming events, recent activity feed, officers panel, and member composition breakdown.
1.9.4 Apr 2026 Permanent member deletion via Danger Zone on the member edit screen (MM Administrator only). Cascades to transactions, attendance, and reminder log entries.
1.9.3 Apr 2026 Self-hosted update checker — WordPress now detects new releases automatically via a JSON metadata feed and prompts users to update.
1.9.2 Apr 2026 Tightened MM Manager permissions — Settings page is now MM Administrator only. User Manual role matrix refreshed.
1.9.1 Apr 2026 Officer titles (President, Past President, Vice-President, Secretary, Treasurer, Director, Membership Coordinator, Prize Chairman) with officers pinned to the top of the lists.
1.9.0 Apr 2026 Member approval queue, per-admin notification opt-in for new members and new payments, dashboard "Awaiting Approval" stat card.
1.8.x Apr 2026 Events & Meetings calendar, per-event attendance tracking, annual attendance report, year-end prize drawing pool, DXCC certified field, packaging fixes.
1.7.x Apr 2026 Settings export/import as JSON, automatic update detection.
1.6.x Jun 2025 Cash/cheque payment recording, configurable PayPal return pages, settings accordion layout, roster grace period.
1.5.x Jun 2025 User Manual, action icons in Members list, archived member status, submenu icons, silent key fixes.
1.4.x Jun 2025 License Class and ARRL Member fields, sortable admin columns, Novice and Advanced license classes.
1.3.x Jun 2025 CSV import/export, editable email templates, three-tier role system, dbDelta column fix.
1.2.0 May 2025 WordPress user linking, roster visibility toggle, per-member privacy controls, admin notes.
1.1.0 May 2025 Lifetime and Silent Key member types, In Memoriam roster section, member type badges.
1.0.0 Apr 2025 Initial release — registration, PayPal, renewal reminders, roster, access control, admin backend.