Members
Part of the IP4CMS portal. β All module guides
What it's for β Members is the people roster at the heart of IP4CMS. Every person your organisation deals with β residents, congregants, club members, ratepayers β is a member record here. Almost everything else in the portal (properties, billing accounts, communications, the member self-service portal) hangs off a member, so getting these records right is foundational. This module is where you add people, keep their details current, organise them by status and rank, and give them login access to their own portal.
Where to find it β Left navigation Members. Route /app/members. The roster (members list) is the landing screen; a single member opens at /app/members/:id, and the add/edit form is at /app/members/new and /app/members/:id/edit.
Before you start
- The
memberslicence module must be enabled for your tenant. Several features are gated behind sub-modules that may or may not be switched on for you: members:ranksβ rank assignmentmembers:primary_locationβ primary location/congregation assignmentmembers:requestsβ the join-request / invitation workflow- Related modules add tabs to a member when enabled:
locations,properties,pets,vehicles,documents,financials:transactions,partners. - You need the relevant permissions for each action (see Permissions & access). Creating, editing, deleting, importing and exporting each have their own permission.
Key tasks
Add a member
- From the roster, click Add Member (needs
members:create:all). This opens the member form at/app/members/new. - Fill in Personal information. First name and Last name are required (min 2 characters). Optional: Email (validated as an email if you enter one), Phone, Date of birth, Gender (Male / Female / Other / Prefer not to say), ID number, Membership number.
- Fill in Address if relevant: street Address, City, State, ZIP/postal code.
- Set Status (required, defaults to Active) β see Member statuses.
- If the matching sub-modules are enabled, assign:
- Primary location β searchable list of base locations (e.g. a congregation/branch).
- Rank β a single rank from the dropdown.
- Optionally add a profile photo (JPEG/PNG/GIF/WebP, under 5 MB).
- If your tenant has defined custom properties for members, switch to the Custom properties tab and fill them in.
- Click Save. You are taken to the new member's detail page.
Tip β There is also a faster path: from the roster use the OCR / scan ID option to photograph an ID card. The system extracts name, ID number and date of birth, creates a draft member, and opens the edit form pre-filled for you to review and complete.
Edit a member
- Open the member and click Edit Member (needs
members:update:all), or use the Edit action on a roster row. - The form is identical to Add, pre-populated. Change any fields, including rank, location, status, photo and custom properties.
- Click Save.
Delete a member
- Click Delete on the detail page or the roster row (needs
members:delete:all). You'll be asked to confirm. This is a soft delete β the record is removed from active lists but retained behind the scenes.
Member types (onboarding)
Member types are templates that drive guided onboarding β typically used at public self-registration. A member type has a Name, optional Description, an optional linked onboarding journey (onboarding type), an Active flag, and can switch on property onboarding (so a new member is walked through claiming a property/residency). Configure these under Settings β Member types (/app/settings/member-types; legacy path /app/flows/member-types). When someone self-registers and a member type is chosen, the member is created and the matching onboarding workflow is started for them.
Manage member statuses
Statuses track where a member sits in their lifecycle. The set is fixed: Pending, Active, Inactive, Deceased.
- Pending β newly added / awaiting approval; restricted from some actions until activated.
- Active β full standing.
- Inactive β excluded from active lists.
- Deceased β final state; the record is kept for history but blocked from further operations.
Set status on the member form, change it on the detail page, or change many at once with Bulk update status from the roster.
Manage ranks
Ranks are configured once, then assigned to members.
- Ranks (Settings β Member ranks,
/app/settings/member-ranks) β a hierarchy. Each rank has a Name, optional Description, an Order level (a unique number; higher = more senior), and an Is default flag (the rank new members fall back to). A member holds one rank.
Assign a rank on the member form, or from the member detail page (rank section β assign/change/remove).
Add custom properties / fields
Custom properties let your tenant store extra attributes on members without code changes.
- An administrator defines them under Settings β Custom properties β each has a Label, an auto-generated Key, a Type (text, number, boolean, date, select, multiselect), the modules it applies to (choose Members: Member), and flags for Required, Active, display order, and options for select/multiselect.
- On the member form, open the Custom properties tab to enter values. They are saved alongside the member.
Note β There are two related mechanisms. "Custom properties" (the tab, context members:member) is the current system. An older "custom fields" set (Additional information) may also appear on tenants that still use it.
Search & filter the roster
- The roster is a paginated grid. Type in the search box and press Enter to search across member fields.
- Use the Status toolbar filter to narrow by Pending / Active / Inactive / Deceased.
- Click a column header to sort; use per-column filters (e.g. text filters on name, email, phone) for finer control.
- Filters, sort, page and page size are remembered (saved in the URL and locally). Use Share filters to copy a link that reproduces your current view, and Clear filters to reset.
- Columns shown depend on enabled modules β Location and Partner only appear when their module is on. Account Code and Tags columns are always present.
Bulk actions, import & export
- Import (needs
members:import:all) β Import Members accepts a CSV or Excel file (.csv,.xlsx,.xls, up to ~10 MB). A bulk-upload modal is also available for larger batches that process in the background. - Export (needs
members:export:all) β downloads the current roster asmembers.csv. - Bulk delete β select rows, confirm, and remove several members at once.
- Bulk update status β select rows and apply one status to all of them.
Give a member portal access
A member can be granted a login to the member portal so they can self-serve.
- Open the member, go to the Users tab (requires
members:update:all). - Choose one of:
- Invite via Email β enter the member's email; they receive an invitation to set up their login.
- Create User β create the account directly (name, email, phone, password, role).
- Per-user you can Resend Invitation, Activate, Deactivate, or Delete the login.
Each portal user is scoped to that one member, so they only see their own record.
Members can also self-register
If public self-registration is enabled, prospective members sign up themselves (email/mobile + password, accepting your terms), optionally choosing a member type that starts an onboarding journey. These arrive as member requests (the members:requests sub-module): incoming join requests sit as Pending until an operator Approves (activates the member and links their login) or Rejects them. Operators can also send outgoing invitations (an emailed token, valid ~7 days). Email templates for the join, approval, rejection and invite notices are set in the member-request settings.
Member self-service (/members/me)
Once a member has portal access, they sign into the member portal and manage their own profile: view and edit their name, email, phone, date of birth, gender, upload or remove their profile picture, and see read-only account / billing details (account code, balance, currency) and their status. What they can edit is limited by the :own permissions on their member role β they can only touch their own record, never anyone else's.
How the data connects
What you enter on a member record feeds the rest of IP4CMS:
- Member record β stored as the central
memberrow (name, contact, status, IDs, photo, membership number). - Primary location β ties the member to a base location/congregation in the
locationsmodule, with a movement/location history. - Rank β a single assignment that drives seniority and role-based listings.
- Custom properties β stored against the member (context
members:member) and surfaced in search, exports and onboarding. - Account / billing β a member can be linked to a financial account (account code/name, balance, currency), feeding statements and transactions on the member's Transactions tab.
- Properties, pets, vehicles, documents β related records attached to the member when those modules are enabled, each as its own tab on the detail page.
- Portal users β login accounts scoped to the member, powering self-service at
/members/me. - Communications β because members carry email/phone, they are the audience the communications module targets.
Because so much references a member, treat the roster as the single source of truth for who exists. Tags, statuses and custom properties are the main tools for slicing it.
Permissions & access
- Licence module:
membersmust be enabled. Sub-modules (members:requests,members:ranks,members:primary_location) each unlock their own features and columns/tabs. - Operator (admin) permissions β
:allscope: members:read:allβ view the roster and any membermembers:create:allβ add members and create portal loginsmembers:update:allβ edit members, manage the Users tabmembers:delete:allβ delete membersmembers:export:allβ export the rostermembers:import:allβ import members- Request workflow:
members:requests:read,members:requests:create,members:requests:approve - Member-portal (self-service) β
:ownscope: member logins get the default member role, which grants onlymembers:read:ownandmembers:update:own. This is what limits a member to editing only their own profile. - The roster shows columns based on enabled modules, but enables actions (Add, Edit, Delete, Import, Export) based on your
:allpermissions β buttons are hidden if you lack them.
Tips & gotchas
- Status list is fixed. Pending / Active / Inactive / Deceased are hard-coded β you cannot add new statuses from the portal. Deceased is terminal: the member is kept for history but blocked from further actions.
- Default rank. Marking a rank as default means new members get it automatically when no rank is chosen. Order level must be unique across ranks.
- Module gating hides things silently. If you don't see a Location, Rank, Pets, Vehicles, Properties or Transactions section, the corresponding sub-module is probably switched off for your tenant β not a bug.
- Portal logins are member-scoped. A user created on a member's Users tab can only ever see that one member. To give someone broad portal access, that's a tenant-staff account, not a member login.
- Soft delete. Deleting a member removes it from lists but does not hard-purge it. A 404 on delete usually means it was already removed β the list just refreshes.
- Import format. Imports accept
.csv,.xlsx,.xls. For large files prefer the background bulk-upload (it reports total rows and processes asynchronously) over the simple import. - OCR is a shortcut, not a replacement. Scanning an ID pre-fills name, ID number and date of birth into a draft, but always review and complete the rest before saving.
- Membership number vs ID number. Membership number is your internal member reference; ID number is the national/identity number. They are separate fields β don't conflate them.