The education director wants every school group booked for spring. Finance wants adult tour revenue split out from camps. The answer to both is a group sales query filtered by group type. Building it is mostly simple, but a few details decide whether the list you hand over is right or quietly off.
Start from the right query source
Create a new ad-hoc query and choose the source view built around group sales reservations, not the one built around constituents. If you start from constituents, you can reach reservation data, but each person or organization can show up once per reservation and your counts drift. Starting from reservations gives you one row per booking. Each row then carries the group, the event or program, the visit date, the status, and the money.
View names differ a little across Altru releases and depend on your security rights. If you aren’t sure which one is reservation-based, search the source list for “reservation” or “group sales.” If you still can’t find it, ask your Altru admin or Blackbaud support which view your role can use.
Find the group type field
In the field list on the left, expand the reservation node and look for Group type. That field holds the values configured in your group sales setup, such as School, Adult tour, Camp, or Scout troop. Drag it into the filter pane and pick the types you want with “one of.” Choose them from the list rather than typing them, so a spelling difference doesn’t wipe out your results.
Add it to the output too. Even if you filter to one type, seeing the value on every row is the quickest way to check that the filter did what you meant.
If you can’t find a group type field
Sometimes the field isn’t where you expect it, or your organization never filled it in consistently. Don’t guess at a substitute. Check these in order:
- Look one level down. Some reservation details sit under a related node (the group, the itinerary, or the reservation’s attributes) rather than on the top level. Search the field list for “type.”
- Check attributes. Some organizations track group category as a reservation attribute instead of, or in addition to, the built-in group type. If staff were trained that way, filter on the attribute.
- Check the group’s constituent record. If the group is an organization record, a constituency or organization type (School, for example) may be more reliable than anything on the reservation.
- Confirm before you build a report on it. If you aren’t sure the field exists for your version or role, test it in a sandbox or ask Blackbaud support. That beats building a monthly report on a field that turns out to be blank half the time.
Add the filters that make the list useful
A group type filter by itself returns every booking of that type for all time, including cancellations. Add these filters as well:
- Date range. Filter on the visit or event date if you need “who is coming,” or on the date the reservation was made if you need “what did we book.” These answer different questions. Write down which one the report uses.
- Status. Leave out canceled reservations unless you’re specifically reviewing cancellations. Decide whether tentative or pending holds count.
- Program or event, if group type alone is too broad. “School” across every program differs from “School” on field trip programs only.
For output, a practical set is: reservation name or number, group type, group (organization) name, primary contact name and email, visit date, program, number of attendees, total amount, and balance due. Add the contact’s phone if the list is meant for confirmation calls.
Check the results before you share them
Run the query and compare it to something you already trust. Pick a week you know well and see whether the school groups you remember are all there. If a familiar booking is missing, open that reservation and look at its group type. Nine times out of ten, the booking was saved with the wrong type or with none at all.
That leads to the less exciting part of this job: a query by group type is only as good as the data entry behind it. If the field is optional on your reservation form, some bookings will be blank. Two habits help:
- Save a second query that returns reservations with no group type in your date range, and work through it monthly.
- Keep the group type list short and clearly named. If staff have to pick between “School,” “School group,” and “K-12,” they will pick all three.
Save it so others can reuse it
Once the results look right, save the query with a plain name such as “Group reservations by type, upcoming visits.” Share it with the group sales and education staff who need it. If you plan to use it for a mailing or a Smart Field later, note the date logic in the description so nobody has to reverse-engineer it.
If you’ll export the same list every week to update a spreadsheet or contact a list of teachers, that manual export step is where things tend to slip. Data Bridge from Social Good can sync a saved Altru query to Google Sheets, Mailchimp, ActiveCampaign, and other tools. Altru stays the source, and the people who need the list see a current copy without asking you for a fresh export.
Quick answers
Can I see group type in a standard group sales report instead?
Some built-in reports group or filter by type, but options vary by report and version. A saved query gives you control over the exact filters and columns, which is why most admins end up with one.
Why do my attendee totals look higher than expected?
You most likely added a field from a child node, such as individual line items or ticket details, and each reservation is now repeated once per line. Remove that field or summarize the output.



