Members & roles
Add, invite, search, and import members, and walk a new member through onboarding.
How do I add a member?
There's one Add member button — the single primary action in the Members page header. Seats & terms and Onboarding each moved off the header into a tab strip below it, so Add member no longer competes with them for attention (Import CSV stays a plain button next to it — the directory's search, filters, and CSV export live directly on this same Members page, in the toolbar above the roster). It opens a side panel that creates the person's directory profile right away. The panel runs the full height of the window and scrolls inside itself, so it never runs off the bottom of the screen no matter how much you fill in.
It's laid out in the order the decisions actually happen:
- Who they are — first name and email are required; last name is optional (for a member who goes by a single name), and pronouns are too.
- Their role on the board — their position and their role, side by side, because one sets the other (see below).
- Meetings already scheduled — shown only when the board has upcoming meetings on the calendar. Meetings scheduled before this person was added emailed their invitations to the roster as it stood then, so this option (on by default) sends the new member one email listing everything already scheduled — dates, times, and a link to the Meetings page to see details and RSVP. Committee meetings aren't included, since a brand-new member isn't on a committee yet. Turn it off to add them silently.
- Sign-in access — the "Invite them to sign in" toggle, shown to administrators and the chair.
- Contact & profile details — labelled emails and phone numbers (add as many as you need with Add email / Add phone), a full mailing address, an emergency contact, photo, bio, and the email notification preference, tucked into a collapsible section so the quick path stays quick. Everything in it is optional and saves whether or not you expand it.
Everyone you add shows up in the directory immediately.
Position and role
A position is a seat your board has defined — Chair, Treasurer, Director at large. A role is what the person may do in BoardTools. They're related but separate, and the panel treats them that way:
- Picking a position is optional and does not require an invitation. A board member can serve a term without ever signing in, so the position field is always there. Positions with no seats left are listed but can't be chosen, and each one shows how many seats are open.
- Picking a position fills in the matching role — choose Treasurer and the role becomes Treasurer. You can still change it afterwards for someone who needs different access than their seat implies.
- Their term starts today, invitation or not. Picking a position seats them straight away — the row shows that seat and its term in the Seat & term column the moment you add them, and the board-composition figures above the roster count it. Inviting them to sign in is a separate grant that changes nothing about the seat; adjust the dates any time under Seats & terms, or end the term there if the appointment falls through.
If your board hasn't defined any positions yet, the field says so and links to Seats & terms, where you create them. For the fuller explanation, see Roles vs. positions.
Sign-in access
- Leave the toggle off to just record someone in the directory. Nothing is emailed and they can't sign in yet — handy for keeping contact details for someone who doesn't need board access. The role you chose sits waiting and takes effect if you invite them later.
- Turn it on to also email them a secure link to accept and set up sign-in access. Until they take it up, they appear in the directory with an amber Invited status badge; it turns into the green Active badge the first time they sign in, whether or not they used the link (see What are the member statuses? below). See Getting started: sign in for what accepting looks like from their side.
Who can invite? The "Invite them to sign in" toggle — and the per-row Invite to sign in action below — are shown only to administrators and the chair. If you don't see them, ask a board administrator or your chair to send the invitation. Everyone who can add a member can still seat them on a position.
Added someone without an invite and want to give them access later? Open that row's ⋯ actions menu and choose Invite to sign in — it emails the same secure link and flips them to Invited until they accept. (You'll only see it for members who don't already have sign-in access.)
Invitation gone unanswered? Once someone shows an Invited badge, their row's ⋯ actions menu offers Resend invite in place of "Invite to sign in" — it sends a fresh copy of the same secure link (a new expiry, the old link stops working) so it lands back at the top of their mailbox instead of making them dig up the original. The same menu also offers Revoke invitation for that row — see below.
Sent, expired, and revoked invitations
An Invitations button sits next to Import CSV in the Members page header, shown to the same administrators and chair who can invite. It opens the full list of the board's invitations, live and past. Every invitation link has an expiry, and on Members → Invitations, each invitation in the list shows when it was sent and when it expires — or, once that date has passed, that it has expired. An expired invitation shows an Expired badge instead of "Pending" (never a stale "Pending" for a link that no longer works), and the exact same Expired badge appears on the Members roster itself, in place of "Invited", for anyone whose invitation died before they accepted — the roster and the invite list always agree.
Resend stays available on an expired invitation — click it and the person gets a fresh link with a new expiry, exactly as if you'd resent a still-live one. Revoke also stays available on an expired invitation: even though its link already stopped working on its own, revoking it explicitly closes the door — the row can no longer be resent, and you'd need to send that person a whole new invitation to reach them again. Pending invitations (live or expired) can be resent or revoked from Members → Invitations (also reachable from the setup wizard's Invite members step, open any time via Settings → Open setup walkthrough) — or revoked directly from the Members roster row's own ⋯ actions menu, without leaving the directory. Revoke asks you to confirm first — it names the person and warns that their existing link stops working immediately and you'll need to send a new invitation to invite them again, since there's no way to undo a revoke.
Each member row leads with their photo — or their initials when they haven't added one — next to their name. A single Contact cell holds both email and phone, each with its own small icon action: mail to start a message, call to dial, and copy to put the address or number on your clipboard. Contact details you aren't allowed to see (a fellow member who has hidden their email or phone) show a Private state instead of the value — see privacy choices.
A summary above the roster shows the board's composition at a glance — seats filled and vacant, quorum, how many members hold a voting seat, and how many terms expire soon — with a bar showing the role breakdown across currently serving members (active or on leave). A board that keeps its full historical roster — resigned, removed, or past members — never sees those figures inflated by people who no longer serve; the role bar always reconciles with the seats-filled and voting-member counts beside it. Select the Voting members figure to jump straight to that same list of people below, with the Voting members only filter already applied.
The Quorum figure follows your board's configured quorum rule — simple majority, two-thirds, a fixed number, or a majority of filled seats — set in Settings → Governance. The line under the number names the rule in force ("two-thirds of seats (9 voting)"), so the figure never implies a majority your bylaws don't use, and it agrees with the quorum shown on a meeting's attendance page. When no voting seat is held the figure shows an em dash rather than a threshold.
Whether a term counts as still current — and so whether it holds a seat toward Quorum and Voting members, and whether that person is included in the Voting members only filter and CSV export — is judged against your board's own configured timezone (set on its Settings page), not wherever the server happens to run. So these figures always agree with the date on your board's own calendar, including late in the evening or early in the morning, and with what Seats & terms shows for the same term.
A board with 25 or fewer members shows the roster as a card grid by default, readable by face; a grid/table toggle switches to the dense table view (and back) at any time, on any size board.
From the Members page, each row has an inline email notification toggle and a ⋯ actions menu. What the menu offers depends on your role: an administrator or the chair can edit any profile, remove a member, invite a member to sign in, and change a member's status, and any member can edit their own row. Removing a member asks you to confirm first. If you can't change a row, its preferences show as read-only — you won't see controls that wouldn't work.
Above the roster, a quick search box, role filter, status filter, and voting members only checkbox narrow the list by name/email, role, status, or whether a member currently holds a voting seat — the same seats-and-terms fact the Voting members figure above counts, so ticking it (or arriving via that figure's link) always shows exactly that many rows. Combining search, role, status, and voting narrows the list by all of them at once, and each one round-trips through the page's URL so a filtered view is bookmarkable and shareable. On narrower screens these sit behind a Filters button so they don't push the roster below the fold — tap it to expand them; it opens on its own the moment a filter is already active, so a filtered view never looks unexplained.
Sorting the roster
In the table view, the Member, Role, Status, and Seat & term column headers are clickable — select one to sort the roster by that column, and select it again to reverse the direction. A small caret next to the header name shows which way it's currently sorted; the order round-trips through the page's URL too, so a sorted view is just as bookmarkable and shareable as a filtered one, and it composes with the search/role/status filters above. Seat & term sorts by when each member's current term ends — soonest first by default — so it's the fastest way to see who's up for renewal before a term-renewal cycle; members with no current seat, or an open-ended term, sort to the bottom either way.
Bulk actions
If you can invite members or change their status, each roster row also gets a checkbox. Tick the checkbox on each row you want (or the header checkbox to select everyone currently shown), and a bulk action bar appears above the table with Invite selected to sign in and Set status controls. Each one applies to every selected member in a single action, reports back how many succeeded, and the selection clears once the batch finishes. Selecting members and using either control works fully from the keyboard.
Choosing Removed, Resigned, or Past as the bulk status always asks
you to confirm first, naming how many members are affected — the same
confirmation a single row's status change asks for. A member who can't
actually be changed (for example, one who already has sign-in access, when
you bulk-invite) is reported individually rather than stopping the rest of
the batch. Bulk actions need the same member.manage permission as the
per-row invite and status-change controls; everyone else keeps seeing the
full roster without the checkboxes.
How do I view a member's profile?
Select any member's name — in the roster, or from an audit entry — to open their profile page. It's a read-only view that gathers, in one place:
- their photo (or initials), name, pronouns, role, and status;
- their seats and terms (current terms are marked, with a short history);
- their contact details — email, phone, mailing address, and bio;
- the committees they sit on, with their committee role (each committee name links straight to that committee);
- their attendance across past meetings — present / remote / absent counts, an attendance rate, and their most recent meetings. Only you and the people who record attendance (an administrator, the chair, or a staff liaison) see this section; see Attendance history & rates for exactly which meetings count and which are excluded; and
- their open tasks — the action items currently assigned to them, in the same read-only table as the Tasks page. Each row links back to that task on the Tasks page.
What you see respects the member's privacy choices: you always see your own full profile, an administrator or the chair sees everyone's, and a fellow board member sees only the details that member has chosen to share. Private fields — administrator notes, emergency contact, and someone else's communication preferences — are never shown to fellow members. Assigned tasks are the one exception: they aren't a privacy choice at all — the Tasks page already shows every task's assignee to any member who can see it — so a member's open tasks appear on their profile for every viewer.
If you're allowed to edit the profile (it's yours, or you're an administrator or the chair), an Edit profile button appears at the top; everyone else sees the profile read-only. The edit page lets you update every one of the contact details above — add or remove labelled emails and phone numbers, fill in the full mailing address, and add an emergency contact — plus your name, pronouns, photo, and bio. See Your profile & account for the full field list.
You can't remove yourself, the last member, or the board's only chair. These guards stop a click from accidentally locking everyone out: your own row never shows a Remove option (ask another administrator to remove you instead), and removing the board's very last member or its only chair is refused with an explanation. To actually retire a board, use Delete board on the Settings page instead of removing every member one by one.
How do I export the directory?
Next to the search box and filters described above, an Export CSV button downloads the current view — it always reflects whatever search, role, status, and voting-members-only filters are active, never a wider unfiltered set. It's hidden when there's nothing to export (no members, or none matching the current filters).
The downloaded CSV includes a Status column alongside Name, Email, and Role, using the same words the Status badge shows (for example "On leave" or "Resigned") — so a status-filtered export, an insurer request, or an annual filing never leaves a former board member indistinguishable from a sitting one.
What the export contains depends on your own role — exactly the same as what you'd see opening each member's profile. Board administrators and the chair get the full export: every contact detail on file, including phone numbers and home mailing addresses. Anyone who can run an export without also being able to manage the roster — today, a Staff Liaison — gets the same directory-contact view they already see on screen: names, roles, statuses, and whichever contact fields a member has chosen to share. A home mailing address, in particular, is private by default (see What do other board members see about me?) and never appears in that export unless the member has opted to share it — the column still exists in the file, just empty, so the file always opens with the same columns no matter who ran it. Your own row is never redacted in your own export, whatever your role. Every export is recorded in the audit log, naming which of these two views it produced.
How do I bulk-add members from a spreadsheet?
Open Members → Import CSV. Paste your CSV text or upload a file, preview the parsed rows (anything that can't be imported is flagged with a plain- language reason), then confirm to add them all at once. Separate First name / Last name columns are preferred; a single combined Full name (or Name) column is still accepted and split automatically.
Uploaded files must be plain-text CSV under 5 MB; anything larger is rejected with an explanatory message before it's even read. The preview also caps at the first 2,000 rows — if your file is larger, the Review page shows a warning banner explaining the tail was dropped, and asks you to split the file and re-upload the rest.
What if some rows in the preview are already flagged as skipped?
If the preview shows any rows the importer can't add (missing name, invalid email, already a member, duplicated in the file, or an unrecognized role), a Download skipped rows (CSV) button appears at the top of the Review table. The download is a small CSV listing each skipped row's line number, name, email, role, and the plain-language reason — so you can fix them in your spreadsheet, save it, and re-import the corrected file without hunting the errors out of the on-screen table. Re-importing the whole file is safe: rows that already succeeded are simply skipped as already-a-member.
What does it mean if a row "failed" after I confirm?
After you confirm the import, the Review table's Status column updates to show what actually happened to each row — not just what the preview expected. Most rows will read Imported. A row can instead read:
- Failed to import — something rejected that specific row while saving (for example its data didn't pass validation). The confirmation below the table lists every failed row by its row number, email, and a plain-language reason, so you don't have to guess which rows to fix. Correct the row(s) in your CSV and re-import — re-importing the whole file is safe, since rows that already succeeded are simply skipped as already-a-member.
- Skipped — already a member — someone else added that email to the board in the moment between your preview and your confirm. That's not a failure: the person is already on the roster, so there's nothing to fix or retry for that row.
The import never automatically retries a failed row — you always fix the CSV and re-import.
What happens when a new member joins?
The Onboarding page walks a new member through a short checklist. It always shows your own checklist — the member you're signed in as — so what you acknowledge is recorded against you and no one else. Each item is a link to where you finish it, and checks itself off automatically once you've actually done it — there's nothing to mark done by hand:
- Complete your profile — links to your own edit-member page; it's checked off once you've added a phone number, a mailing address, or an emergency contact.
- Read & acknowledge governing documents — links down to the governing documents list on the same page; it's checked off once you've acknowledged every one of them, matching the acknowledgment list right below it. Each document's title in that list is itself a link to that document's own page, so you can actually open and read it before you acknowledge — a document with no file uploaded yet says so instead of linking anywhere. Once you've acknowledged a document, its row shows the date you did so, in your board's own timezone.
- Confirm your seat & term — links to the Seats & terms page; it's checked off once an administrator has assigned you a current (not-yet-ended) term on a seat.
What are the member statuses?
A member's status reflects where they are in their time on the board: Prospective, Nominated, Invited, Active, On leave, Emeritus, Resigned, Removed, or Past. It's shown as a badge next to their name throughout the directory (Invited carries an amber badge, kept deliberately distinct from Active's green so a pending invitation never reads as an accepted sign-in at a glance). Invited means they were added with a sign-in invitation and haven't taken it up yet — it clears to Active automatically the first time they sign in. That's true however they get there: they don't have to use the emailed link. If they sign in some other way (their email address is already a BoardTools sign-in, say, or they go straight to your board's address and sign in there), the roster catches up on its own the moment they arrive, and their outstanding invitation is marked accepted. If that invitation's link expires before they sign in at all, both the roster and that member's own profile page show Expired instead of Invited on that same badge — the two surfaces always agree — see Sent, expired, and revoked invitations above for what to do about it (Resend still works). An administrator or the chair changes a member's status from that row's ⋯ actions menu, which offers only the transitions that are valid from the member's current status.
The Invited badge is about sign-in access, not standing on the board: an Invited member holds their seat from the moment you add them. They appear on meeting attendance rosters, can be marked Present (including by Mark all present), count toward quorum, and receive meeting reminders and availability polls — none of that waits on them logging in.
Good governance tip: keep statuses current as people join, step back, or leave — it's what your "seats up this cycle" view and succession planning rely on. See Roles vs. positions.
How does AI minutes drafting handle our board's information?
What the minutes assistant sends, what it never sends, why a human always approves, and how to keep the feature switched off.
What can each role do?
The six board roles in BoardTools — chair, admin, treasurer, director, staff liaison, and observer — and what each one is allowed to do.