Query Survey Answers on Sales Orders in Altru
← Back to Blog

How to Report Marketing Survey Answers on Sales Orders in Altru

October 31, 2026

You added a “How did you hear about us?” question to your ticket sales, staff and guests have been answering it for months, and now marketing wants a simple report: which answers go with which orders, how many tickets, and how much revenue. Then you open a sales order query and can’t find the survey answers anywhere in the field list.

This guide covers why that happens, how to check what your Altru database actually exposes, and three workarounds that give marketing a usable answer without rebuilding your sales process.

Why the answers seem to be missing

Altru’s query tool only shows the fields and related records that a query source is built to reach. Survey responses are stored as their own records, connected to the transaction or constituent that produced them. If the sales order query source doesn’t include a path to those responses, they won’t appear in the field explorer, even though the data is in the database.

That’s the frustrating part: nothing is wrong with your data. The answers were captured. The sales order view just may not offer a route to them.

We’re not going to guess at exactly which query sources include survey data in your version of Altru, because that has changed over time and can depend on configuration. Confirm it in your own database before you build anything else.

Step one: find out where the survey data is reachable

  1. Search the field list in more than one query source. Open a new ad-hoc query against sales orders, then against constituents, then against revenue, and search the field explorer for “survey” or the wording of your question. Note which sources show it and what fields come with it (the answer, the date, the linked record).
  2. Check what the response is attached to. If the survey answer is tied to the constituent rather than the order, you can still report on it, but you’ll be matching by person, not by transaction. That matters for repeat visitors who answer differently on different visits.
  3. Look at anonymous sales. A lot of walk-up daily sales have no named constituent. If those answers are only reachable through a constituent, they may be hard or impossible to pull back to the order. Test this with a handful of known transactions before promising marketing a full count.
  4. If you still can’t find it, ask Blackbaud support. Ask specifically whether any query source returns survey responses together with the sales order identifier. A clear yes or no saves you hours of trial and error.

Workaround 1: Query from the survey side

If some query source exposes survey responses along with a linked record (a constituent, a transaction date, or better, an order or revenue identifier), start there instead of from sales orders. Pull the answer and whatever identifier is available, then add order details from that same source if it lets you reach them.

This is often the cleanest option when it works, because everything comes out of one query and can be refreshed on demand.

Workaround 2: Two queries and a join

When no single source has both the answers and the order details you need, run two queries and join them outside Altru:

  • Query A: survey responses with the best available key (order or revenue identifier if you can get it; otherwise constituent ID plus date).
  • Query B: sales orders for the same date range with the same key, plus ticket counts, program or event, sales method, and amount.

Export both and match them in a spreadsheet with a lookup on the shared key. If you’re matching on constituent and date instead of an order number, flag anything with more than one order that day so nobody double-counts revenue.

It’s manual, but it’s honest, and it shows you exactly which orders couldn’t be matched. Report that unmatched count alongside the results. A “how did you hear about us” chart built on half your orders tells a different story than one built on nearly all of them.

Workaround 3: Use selections to narrow the set

If you mainly need counts rather than order-level detail, create a selection from the survey-side query for each answer you care about (for example, everyone who answered “Social media”). Then, if your sales order or revenue query lets you filter by selection, use it there. You get ticket and revenue totals per answer without exporting anything, though you’re still matching through whatever record the selection is built on.

Things that make this easier going forward

  • Keep the answer list short and fixed. Free-text answers (“Instagram,” “insta,” “IG”) are painful to group. A short pick list reports cleanly.
  • Ask the question in the same place every time. If online sales ask it on the web form and the front desk asks it at checkout, confirm both land in the same survey so they can be reported together.
  • Save the queries and document the join. Write down which fields you matched on and why. Whoever runs this report next season will need it.
  • Decide what “attributed” means. Is it one answer per order, or per household? Agree with marketing before you hand over numbers.

Cutting out the export step

If you end up on the two-query approach, the repetitive part is exporting both every week and pasting them into the same spreadsheet. Data Bridge can sync Altru query results to Google Sheets, so the survey query and the sales order query each land in their own tab and your lookup formulas pick up new rows without anyone running exports by hand.

Quick answers

Can I add a custom field to the sales order query myself?
Generally not from the ad-hoc query screen itself; what a query source can reach is defined by the underlying query view. Building or extending query views is a more technical project, so ask Blackbaud support what is possible for your database before going that route.

Why do my survey counts not match my order counts?
Usually because some orders have no survey answer (skipped, or the question wasn’t asked on that sales channel) or because anonymous sales can’t be linked. Show the unmatched number rather than hiding it.

Continue reading

How to Track Instructor Activity for Scheduled Programs in Altru

How to Track Instructor Activity for Scheduled Programs in Altru

“How many classes did Maria teach last spring, and which ones?” It sounds like a question Altru should answer in ten seconds. In practice, many education departments end up digging through calendars, email threads, and a payroll spreadsheet to piece it together, because the instructor was never recorded anywhere a query could find. Altru is

How to Turn a Group Sales Overpayment Into a Donation in Altru

How to Turn a Group Sales Overpayment Into a Donation in Altru

A school books a field trip for 60 students, sends a check for the full quote, and then 48 kids show up. The teacher says, “Keep the difference, it’s a gift.” Now you have a group sales order that is overpaid, money that is really a donation, and a deposit that has to balance. The

Can a Spouse Be a Fundraiser in Altru? Solicitor Credit for Couples

Can a Spouse Be a Fundraiser in Altru? Solicitor Credit for Couples

It happens more often than you’d expect. A board member and her husband both care about your capital campaign. She asks a friend for a gift, but it was really his introduction and his follow-up phone call that closed it. Development wants him credited as the fundraiser on that gift. Then someone at the desk

Social Good platform

See it in action

Get started with Social Good

Book a demo to see Social Good Software in action for Altru.

Book a Demo
Social Good platform

See Social Good in action

Tell us a bit about your organization and we’ll take you straight to short demo walkthroughs of the software.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.