You want to build a constituent query with one simple column, “Member? Yes/No,” next to name and email. It sounds like the easiest thing in the world. In practice, Altru doesn’t hand you a single tidy flag for it, and the obvious workarounds can quietly double your rows or mislabel people. Below is how to get a reliable yes/no (or something close enough) and the traps to avoid along the way.
Start by deciding what “member” means
Before touching the query designer, settle the definition. A yes/no column is only as good as the rule behind it, and different staff will assume different rules:
- Active today only, or active plus a grace period after expiration?
- Primary member only, or everyone on the membership (second adult, household members, add-on cardholders)?
- Do complimentary, staff, or lifetime memberships count?
- Does every membership program count, or only your general admission program and not, say, a corporate or donor circle program?
Write the answer at the top of the query description. Six months from now, someone will ask why a lapsed member showed “Yes,” and that note will save the conversation.
Option 1: Output membership fields and read them as yes/no
The most direct route is a constituent query that includes membership information as output: membership status, program, level, and expiration date. Anyone with a blank in those columns has no membership on record, and anyone with an active status is a member.
This works, but watch for two problems:
- Duplicate rows. A constituent with a renewal history, or who belongs to more than one program, can appear once per membership. Add filters so only the current or most recent membership comes through, or you will see the same person three times with three different statuses.
- Filtering out non-members by accident. If you put a filter like “membership status equals Active” on the query, non-members don’t show up as “No.” They just disappear. That’s fine for a member list, but not for a yes/no column across all constituents.
To keep everyone in the results, leave the membership fields as output only and apply your status rules afterward, either by reading the columns or in a spreadsheet.
Option 2: Use a selection of current members
A cleaner pattern for many teams is to separate the “who counts” logic from the report itself:
- Build a membership query that returns exactly the people you define as current members, using the rules you decided above. Save it as a selection.
- In your main constituent query, use that selection as a filter when you need members only, or as an exclusion when you need non-members only.
- When you need both groups in one list, run the main query twice (in selection, not in selection) and combine the results, labeling each set Yes or No.
The benefit is consistency. Every report that uses the selection uses the same definition, and when your policy changes you update one query instead of a dozen.
Option 3: Check for a membership smart field
Smart fields calculate a value per constituent ahead of time and can be used as query output, which is exactly the shape of a yes/no column. Whether your Altru database offers a membership-related smart field that fits your definition, and how much you can configure it, is worth confirming before you build around it. Look at the smart fields already set up in your database, test one in a sandbox or with a small query, and ask Blackbaud support if you’re unsure what’s available. Also remember that smart fields refresh on a schedule, so a member who joined this morning may not show “Yes” until the next refresh.
Option 4: Calculate the flag after export
If none of the above gives you a literal Yes/No, the practical fallback is to export the query with membership status and expiration date included, then add a formula column in a spreadsheet. Something like “Yes if status is active, or expiration date is today or later; otherwise No.” This also handles grace periods easily: just compare the expiration date against today minus your grace window.
The downside is that it’s manual. Someone has to rerun the export whenever the list needs to be current, and stale copies tend to linger on shared drives.
Common mistakes to double-check
- Household confusion. Decide whether the flag belongs to the person or the household. A spouse who isn’t listed on the membership may show “No” even though they walk in with a member card.
- Expiration date versus status. If status updates lag behind dates, a membership can look active after it has expired. Spot-check a few records that expired recently.
- Merged or duplicate constituents. A member with two records will show “Yes” on one and “No” on the other. Clean-up reduces this, but expect a few.
- Testing on real people. Pick five constituents you know well (a current member, a lapsed member, a household member, a comp, a donor who never joined) and confirm each gets the label you expect.
Keeping the flag up to date in other tools
Often the yes/no column is needed outside Altru: a Google Sheet for the education team, or a tag in your email platform so members get different messaging. Data Bridge syncs Altru query results to Google Sheets, Mailchimp, ActiveCampaign and other tools, so the query you build above (with its membership status and expiration columns) can feed those systems without someone exporting and re-uploading it by hand.
Quick answers
Is there a built-in “Is Member” checkbox on constituent records?
Not that you can rely on as a simple query field in every database. Confirm in your own database or with Blackbaud support, and plan on one of the approaches above if it isn’t there.
Why does my member query return the same person several times?
Membership output fields return one row per membership. Filter to the current or most recent membership to get one row per person.



