Saturday’s bird walk moved to the east gate. The Tuesday homeschool class has a new instructor. Next week’s camp session needs signed waivers before drop-off. Each of these messages is easy to write. The hard part is getting it to the right people, meaning everyone holding a ticket for that program on that date and nobody else, without someone spending an hour in spreadsheets first.
Altru knows who bought tickets for a scheduled program. What it doesn’t give you is a single obvious “message everyone in this session” button. In practice, you build the list from a query and then decide how to send it. Below is how to build that list so you can trust it, and which gaps to plan around.
Start with who actually belongs on the list
Before you build anything, decide what “attendee” means for this message. A program-level list isn’t the same as a session-level list, and the difference matters:
- One session: everyone ticketed for a specific program on a specific date and time. Use this for logistics such as location changes, weather, or what to bring.
- Every session of a program: everyone holding any upcoming ticket for that program. Use this for things like a policy change across a whole camp season.
- Past attendees: people whose session has already happened. Use this for thank-yous, surveys, or invitations to the next series.
Write down which one you need. Most list mistakes come from querying the program when you meant the session, or the other way around.
Build the attendee query
Program attendance usually lives on sales orders and the tickets attached to them, mostly from advance sales and online orders. Build a query on that data and filter it down:
- Filter by program and event date/time. For a single session, filter on the specific scheduled event, not just the program name, so you don’t pick up other dates.
- Exclude canceled and refunded orders. Check how exchanges show up in your data too. A guest who moved from Saturday to Sunday shouldn’t get Saturday’s update.
- Return the purchasing constituent, not the ticket line. One parent buying four camp tickets should get one email, not four. Group by constituent or deduplicate on email address.
- Pull the primary email address and the fields you’ll want in the message: first name, program name, session date and time, and ticket count.
- Respect communication preferences. Operational messages (“your class moved rooms”) and promotional ones (“join us next month”) are often handled differently under your opt-out policy. Decide which kind this is and filter the same way every time.
Save the query with a clear name and a date or session filter you can change. The next time a session changes, you’re editing one filter instead of rebuilding.
Check the count before you send
Compare the query’s results to the session’s capacity or sold count. If 40 tickets sold and the query returns 12 people, that may be right (families buying several tickets each), or you may be missing orders. A few minutes of comparison here prevents the worse problem of telling half a class about a cancellation.
Who your query will miss
Some people with a ticket won’t be reachable from a sales-order query, and you should know who before you rely on it:
- Walk-up and daily sales buyers often have no constituent record or email attached. If a program allows same-day purchases at the desk, some attendees simply aren’t on the list.
- Group sales are usually tied to the group contact, not the individuals in the group. Your message goes to the teacher or tour leader, who has to pass it on.
- Gift recipients and companions aren’t reached when the buyer and the attendee are different people, unless you capture attendee details separately.
- Records with stale or duplicate emails send the message to an old inbox, or send it twice.
For time-sensitive changes (a canceled session, a new meeting point), pair the email with a phone call to anyone without an email address and a note on your website or event page.
Sending the message
Once the query is right, you have a few options:
- Altru’s own email tools. Depending on how your Altru is configured, you may be able to send communications to a selection built from a query. Capabilities and setup vary, so confirm what your system supports in a sandbox or with Blackbaud support before you depend on it for urgent notices.
- Export to your email platform. Export the query and import it into the tool your marketing team already uses. This works, but each export is a snapshot. Anyone who buys after the export is missed, and someone has to repeat the process for every session.
- Automated sends from the query. For recurring messages, like reminders two days before every class or a survey the day after, a tool that reads the saved query on a schedule removes the manual export entirely.
Whatever you use, record the communication somewhere your team can see it, ideally on the constituent record or in a shared log, so the desk knows what guests were told when they show up with questions.
Make the routine messages automatic
One-off changes will always need a person to write them. Most program communication is predictable, though: a confirmation at purchase, a reminder before the session, and a follow-up afterward. Those are worth setting up once per program type rather than handling session by session.
That’s the job Social Good’s Email Designer was built for. It sends automated, branded emails, such as reminders and post-visit follow-ups, from your Altru queries without manual exports. Your attendee query stays in Altru, and the emails go out on schedule as new tickets are sold.
Quick answers
Can I email everyone in one session without touching other dates?
Yes, if your query filters on the specific scheduled event or date and time rather than the program as a whole.
Why are some ticket holders missing from my list?
Usually it’s walk-up sales without a constituent record, group sales tied to a group contact, or canceled and exchanged orders filtered out. Compare the query count to tickets sold to find the gap.



