Switching general admission to timed entry changes more than the front desk. The first month-end afterward, someone in finance asks why admissions revenue in Altru doesn’t match last year’s format, or why the totals in two different reports disagree. Usually nothing is wrong with the numbers. The time slots changed how admissions revenue is organized, and the old reports were never built for that.
Below is how to think about admissions revenue once every ticket belongs to a specific date and time, and how to build reporting that finance, operations, and leadership can all trust.
What actually changes with timed tickets
Under a general admission setup, a ticket is mostly a price type sold on a given day. With timed entry, each ticket is tied to a program and a scheduled event (the time slot). That has three consequences for reporting:
- More rows. One day of admission might now be ten or twenty time slots. Any report grouped by event turns into a long list unless you roll it up by program or by date.
- Two dates per ticket. Every sale now has a date it was sold and a date the guest is scheduled to visit. With heavy advance and online sales, those can be weeks apart.
- More channels feeding the same program. Timed tickets are often sold online, at the desk, and through group sales at once. If you used to treat “admissions” as “what the desk sold,” that definition no longer holds.
Decide which date you are reporting on
This is the question that settles most disagreements. Before building anything, agree with finance on the answer:
- Sale date (transaction date): matches deposits, batches, and what posts to the general ledger. This is usually what finance wants for monthly close.
- Visit date (event date): matches attendance and tells operations how much revenue each day of visitors produced. This is usually what program and visitor-experience staff want.
Neither is wrong. Problems start when one report uses sale date and another uses visit date, and both get labeled “admissions revenue.” A ticket bought on December 28 for a January 3 visit lands in different months depending on which you pick. Label every report with the date basis in the title.
Build one admissions query you can reuse
Altru’s standard sales and revenue reports are a good starting point, but timed entry usually calls for a query you control. Build it once, save it, and point everyone at it. Useful fields to include:
- Program name (so all time slots roll up under one admission product)
- Event date and start time
- Transaction or sale date
- Price type (adult, child, senior, member, comp)
- Quantity and amount
- Discounts applied
- Sales channel or sales method, if your setup records it (online, on site, group)
- Order status, so refunds and exchanges are visible rather than silently netted
Field names and where they live in the query tool vary by how your database was set up, so test the query against a single day you already know the answer for. Pick a day, total the desk and online receipts by hand, and confirm the query matches before you trust it for a full month.
Watch these edge cases
- Exchanges. When a guest moves to a different time slot, check whether your records show it as a change to the original order or as a refund plus a new sale. The second pattern can inflate gross sales and refunds at the same time.
- Member and comp tickets. Zero-dollar tickets matter for attendance but can distort average revenue per visitor. Keep them in the query, but report paid and unpaid admissions separately.
- Fees. If you charge a service fee or let guests cover processing costs, decide whether that counts as admissions revenue or a separate line. Finance will have an opinion.
- Group sales. Group reservations for a timed program may carry deposits or invoices on a different schedule than individual tickets. Make sure they are either included on purpose or excluded on purpose.
Reconcile against finance, not just against other reports
The query is only useful if it ties out. Once a month, compare your sale-date admissions total to the revenue that posted through batches for the same period. Small differences usually trace to refunds processed in a later month, payments that are still open, or fees. Write down what explains the gap each month. After two or three cycles you will know which differences are normal and which mean something needs a closer look.
If you are unsure how a specific transaction type posts in your configuration, test it in a sandbox or ask Blackbaud support before changing a report that finance depends on.
Comparing to years before timed entry
Year-over-year comparisons get messy when last year’s admissions lived in a different program structure. Two approaches tend to work:
- Compare at the program level by date (daily or monthly totals), not by event, since last year had no time slots.
- Keep a simple mapping of old price types to new ones, so “adult general admission” last year lines up with “adult timed entry” this year.
Expect advance sales to shift revenue earlier on a sale-date basis. That shift is real, not a reporting error, and it is worth explaining to leadership the first time they see it.
Getting the numbers to the people who use them
Once the query is solid, the remaining work is distribution: exporting it, pasting it into a spreadsheet, and sending it around every week. Data Bridge from Social Good syncs Altru query results to Google Sheets and other tools, so a saved admissions query can feed a shared sheet or dashboard without someone running manual exports. The query design and date decisions above still come first.
Quick answers
Why don’t my event-level and daily totals match?
Usually because one is grouped by visit date and the other by sale date. Check the date basis before looking for missing transactions.
Should time slots be separate programs?
Generally no. Keeping slots as events under one admission program makes rollup reporting far simpler.



