GroupsIO Group Manager
+ ++ A WordPress plugin built for + BITS, a + blindness-focused nonprofit and professional affiliate of the American + Council of the Blind. It keeps BITS’s Groups.io mailing lists in + sync with actual paid membership, automatically, so no one has to + manage list access by hand. +
+ +The problem
++ BITS runs its member communication over Groups.io mailing lists and + manages paid membership through Paid Memberships Pro (PMPro) on + WordPress. Before this plugin existed, keeping the two in sync was a + manual job — someone had to notice when a membership lapsed or a + new member joined, and update Groups.io by hand. Miss it, and either a + lapsed member keeps member-only access, or a new member goes + unreached. +
+ +What it does
+-
+
- + When a membership begins or changes, the plugin reads the mailing + list selections already captured on the member’s PMPro + profile and adds them to the corresponding BITS Groups.io lists + — both the lists every member must belong to, and any tied to + their specific membership level. + +
- + When a membership ends — expiration, cancellation, or account + deletion — the plugin automatically removes the member from + every BITS Groups.io list they were part of. + +
- + A nightly reconciliation job checks for drift between what PMPro + says a member’s access should be and what Groups.io actually + reflects, and corrects any mismatch. + +
- + A passwordless “magic link” feature lets a member reach + their WordPress profile by email, without needing to recall a + password. + +
How it’s built
+
+ Membership-change events are picked up via PMPro’s
+ pmpro_after_all_membership_level_changes hook and handed
+ off to a background job queue (Action Scheduler), so a member checking
+ out or an admin making a change is never blocked waiting on a
+ Groups.io API round trip. Every add and remove call is logged to a
+ dedicated audit table, with its own retention policy. The Groups.io
+ API client handles rate limiting (HTTP 429, honoring
+ Retry-After with jitter) and retries transient failures
+ with exponential backoff, and hard-stops all sync activity with an
+ admin alert if the API credential itself becomes invalid.
+
+ Because a single member can be registered under different email + addresses for different mailing lists, sync and removal logic + operates on (list, email) pairs rather than assuming one address + covers a member’s entire subscription. The plugin also honors + Groups.io’s own unsubscribe, bounce, and spam signals — + once flagged, a member is permanently excluded from future automatic + adds, in keeping with CAN-SPAM — and handles GDPR/CCPA + right-to-be-forgotten erasure with an immediate, no-grace-period + removal from every list. +
+ +Admin controls
++ Administrators work through a “GroupsIO Management” admin + menu with three pages: feature controls (mandatory lists, grace + period before removal, log retention, and an emergency kill switch), + subgroup management (creating, editing, and inspecting the Groups.io + subgroups themselves), and user assignment (a searchable member list + with per-member details and manual override tools for when + automation needs a human to step in). +
+ + + + +