GIG Member Insights
Member analytics for Global Innovation Gathering. Charts and a world map of the BuddyPress membership, segments filtered on any profile field, configurable member lists, and CSV / Excel / branded PDF exports. Replaces the "Users Insights" plugin.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/globalinnovationgathering/gig-member-insights/archive/refs/heads/main.zipA WordPress plugin that shows who Global Innovation Gathering's members are, where they are, and how they take part. It replaces the discontinued Users Insights licence with a tool built around GIG's own BuddyPress profile fields and brand.
Everything runs inside wp-admin. Member data never leaves the site, except for one optional step: coordinates (only coordinates) are sent to the free Photon geocoder when looking up a missing country.
Features
Overview dashboard. Every chart responds to the current filters, so you can open the dashboard for "Africa" or "Fab Labs" just as easily as for everyone.
- Headline figures: members, countries, continents, new members in the last 30 days (with the change against the previous 30), share active this month, average profile completeness, share with a known location.
- A world map (choropleth) and top-countries list, plus members per continent and per UN world region.
- Membership growth (running total, or new members per month).
- Community activity per month by type (status updates, comments, group joins…), and the most active members.
- An automatic chart for every multiple-choice profile question (Initiative's type, Open source adoption…), plus member types, groups and profile completeness.
- Click any bar, map country or month to filter by it.
Members list.
- Filter on any field, including every BuddyPress profile question. The operators fit the field type: is any of / includes all of, contains, before / after / within the last N days, greater than / between, is empty… Filters combine with match all or match any, alongside a quick search.
- Choose the columns and drag them into order.
- Sort on any column, select members across pages, and bulk-add or remove team tags.
- Saved segments, shared with the whole team. They store the filters, not a fixed list, so they stay current. Quick views are built in: new members, active, dormant, incomplete profiles, country unknown.
- A member drawer with the full profile (showing each answer's visibility), completeness and missing questions, team tags, internal team notes, recent activity, and a manual country override.
Exports. Every export is written to an export log (who, when, what, how many) for GDPR record-keeping.
-
Excel (.xlsx): GIG-red header row, frozen and filterable, plus Summary and By country sheets. Falls back to .xls on servers without the zip extension.
-
CSV: UTF-8 with BOM so Excel shows accents correctly, and protected against spreadsheet formula injection.
-
PDF: one branded A4 page per member, ready to hand to partners or use in strategic meetings. You pick which profile questions appear on the pages (all of them by default, independent of the Members list columns); the dialog warns which questions the chosen privacy level will blank out. Each page has the GIG logo, GIG red and the Open Sans fonts. It shows the member's photo (or their initials), name, organisation, location and member-since date, a key-facts strip, then the profile grouped by section, with a link to the public profile. An optional dark-slate cover page summarises the selection: members, countries, continents, a continent breakdown and the top countries. A footer carries the GIG address and "Prepared for …".
-
Privacy levels for every export:
- Public answers only (the PDF default)
- Public + members-only answers
- Everything (internal)
The first two respect each member's own visibility choice for every question, and leave out internal fields (e-mail, phone, team tags and notes, engagement data).
Explorer.
- Pick any field to see its distribution as values, a histogram or a timeline.
- For free-text answers ("Areas of expertise", "Interests") it shows the most mentioned words and recurring phrases, which is useful for matchmaking and programme design. Click a word to filter by it.
- Cross-tabs split one question by another, e.g. Initiative's type × Continent, shown as a chart and a table.
Data quality.
- How many members answered each profile question; click a question to list who hasn't.
- A profile completeness distribution: filter to incomplete profiles, export the list, send a reminder.
- How each member's country was found, and a one-click lookup for members who have map coordinates but no recognisable country in their address.
- A list of members with an unknown country, each with an inline country picker.
Location intelligence. Members type their city into the OSM Location field (from the OSM Members Map plugin). The plugin reads the country from that address text in any language and script ("Deutschland", "Brasil", "مصر", "日本", "ประเทศไทย"…), using a multilingual alias table of 250 countries. It then derives the continent and UN world region. When the text has no country, it falls back to reverse-geocoding the member's map coordinates through Photon, and the team can still set a country by hand.
Engagement tracking. Each member is classed as Active, Occasional, Dormant or Never active, based on BuddyPress last activity and logins. Login counting starts when the plugin is activated, since WordPress doesn't record logins on its own.
Requirements
- WordPress 6.0+, PHP 7.4+
- BuddyPress with Extended Profiles. Activity, Groups and Friends are optional and add their charts and fields when active. Without BuddyPress, the plugin still works with the core user fields.
- Optional: the OSM Members Map plugin, for map coordinates.
Installation
- In wp-admin go to Plugins → Add New → Upload Plugin, upload
gig-member-insights.zipand activate it. - Open Member Insights in the admin menu. Administrators get access automatically. To give another role access, grant it the
gigmi_view_insightscapability, e.g. with a role-editor plugin. - Check Member Insights → Settings. The location fields, organisation field and completeness questions are detected automatically; adjust them if needed.
- On the Data quality tab, run the country lookup once for members whose address has no country.
Settings
| Setting | What it does |
|---|---|
| Location fields | Profile fields read, in order, to find each member's city and country. |
| Organisation field | Shown under the member's name in lists and on PDF pages. |
| Completeness questions | Which questions count towards "profile completeness". |
| Active / dormant days | Thresholds for the engagement classes (default 30 / 180 days). |
| Excluded roles, spammers | Leave staff or test accounts out of every figure. |
| Default columns | Columns new viewers see in the Members list. |
| PDF defaults | Footer organisation name, address and contact lines, default privacy level, cover page on/off. |
| Reverse geocoder URL | Photon endpoint; point it at a self-hosted instance if you prefer. |
How it works
includes/class-fields.php: the field registry. It covers core account fields, every BuddyPress xProfile field (auto-discovered with its group, options and default visibility), and derived fields (country, continent, region, city, engagement, completeness, activity, groups, member types, team tags and notes).includes/class-dataset.php: builds one flat row per member with a few bulk SQL queries. The result is cached in a transient that is flushed whenever a profile, account, group membership, tag or note changes.includes/class-query.php: filters (all operators), search and sorting.includes/class-stats.php: dashboard aggregates, field explorer, keyword extraction and cross-tabs.includes/class-countries.php+data/countries.php: multilingual address → country resolution.includes/class-geo-resolver.php: batched Photon reverse geocoding for members without a recognisable country.includes/class-export.php,includes/class-xlsx-writer.php: CSV and Excel downloads, privacy levels, and the export log.includes/class-rest.php: the/wp-json/gigmi/v1/API used by the admin app (capability-checked).assets/js/admin.js: the admin app (vanilla JS, no build step).assets/js/pdf.js: PDF profiles, built in the browser with pdfmake, which is loaded only when a PDF is exported.
Uninstalling the plugin (deleting it, not just deactivating it) removes its settings, segments, export log, team tags and notes, login counts and detected countries. BuddyPress profile data is never modified.
Credits
- Chart.js (MIT), chartjs-chart-geo (MIT)
- pdfmake (MIT)
- world-atlas (ISC; Natural Earth data, public domain)
- Country data from world-countries (ODbL) and countries-list (MIT)
- Open Sans (SIL Open Font License, see
assets/fonts/OFL.txt)
License
GPLv2 or later.
Author
Ricardo Ruiz Freire