Reports & Exports
Last updated August 6, 2026
Download voting results, anonymized ballots, participation records, and admin activity logs. Meeting sessions with proxy delegation or check-in turned on add the proxy register and check-in report. Keep your records complete for compliance, transparency, and board meeting minutes.
Overview
Every VoteAlly voting session generates exportable data across four categories. These exports give you a complete, auditable record of what happened during any vote, from aggregate results down to individual admin actions.
Meeting sessions add two more when the relevant feature is turned on: a proxy register if proxy delegation is enabled, and a check-in report if attendance check-in is enabled. Both are covered below alongside the four standard exports.
The four standard exports live on the Reports & Activity tab inside any voting session. The two governance exports are downloaded from the tab that owns the feature: the proxy register from the Proxies tab, and the check-in report from the Check-in tab. All files are CSV format, ready to open in Excel, Google Sheets, or any spreadsheet tool.
Satisfy board governance requirements with complete voting records. Attach exports to meeting minutes for a verifiable audit trail.
Share anonymized results with your membership. Ballot exports prove vote integrity without revealing who voted for what.
Download and archive participation data and results for long-term storage outside VoteAlly. Keep your own copy before voter information is automatically removed.
The admin activity log tracks every action taken by every administrator, including IP addresses and timestamps.
Export Types
Final Tally Results CSV
The primary results export. Contains the vote count and percentage for every option on every question. For motions, this shows pass/fail totals. For elections, this shows each candidate's vote count and their share of the total.
| Column | Description |
|---|---|
| QuestionID | Unique identifier for the question |
| QuestionTitle | The question text as displayed to voters |
| Status | Question status (OPEN, CLOSED, etc.) or round number for STV |
| OptionID | Unique identifier for the candidate or option |
| OptionName | Display name of the candidate or option (e.g. "Yes", "No", "Jane Smith") |
| Votes | Number of votes received |
| Percentage | Share of total votes (e.g. "65.2%") |
No voter identity: This export contains only aggregate counts. There is no way to connect a vote count back to an individual voter.
Anonymous Ballot Audit CSV
A raw, anonymized record of every ballot cast during the session. Each row is one ballot. This export is designed for independent verification: anyone can confirm that the number of ballots matches the reported totals, and receipt codes let individual voters verify their ballot was recorded.
| Column | Description |
|---|---|
| BallotID | Unique system identifier for the ballot record |
| ReceiptCode | The receipt code shown to the voter after casting (for self-verification) |
| Timestamp | Date and time the ballot was cast (standardized format) |
| QuestionID | Which question this ballot was cast on |
| QuestionTitle | The question text for readability |
| CastGroupID | Groups the rows produced by one split-weight cast (see below) |
Fully anonymized: This export does not include voter email, name, or any identifying information. The ballot's actual vote choice is not included either. It proves a ballot exists and was recorded, nothing more.
CastGroupID and split casts: When a voter divides their weight across several options with split vote allocation, that single act of voting produces several ballot rows, one per option. CastGroupID is shared by every row from the same cast, so they can be identified as one voter's split ballot rather than several separate voters. Without this column, one member's split cast would be indistinguishable from multiple people each casting a single ballot. It appears on both Live Meeting and Scheduled Election sessions, since split voting is not limited to meetings.
Voter Participation CSV
Shows every eligible voter and whether they participated in each question. This is the "who voted" report, not the "how they voted" report. Use it to track engagement, follow up with non-voters, or verify quorum.
| Column | Description |
|---|---|
| Voter's email address | |
| Name | Voter's display name (if provided) |
| MemberID | The voter's member ID (e.g. unit number, membership number) |
| QuestionTitle | The question being reported on |
| Participated | YES or NO |
| VotedAt | Date and time the voter cast their ballot (blank if they did not vote) |
| Weight | The voter's vote weight (1 for standard, higher for weighted voting) |
Anonymity preserved: While this report shows who voted, it does not reveal what they voted for. Vote choices are never linked to voter identity in any export.
Proxy Register CSV
Available on Meeting sessions with proxy delegation turned on. The proxy register lists every appointment made on the session, delegator to holder, along with its status.
| Column | Description |
|---|---|
| Delegator Name / Unit / Weight | The member who appointed a proxy |
| Holder Name / Unit / Weight | The member who was appointed to vote on the delegator's behalf |
| Status | The current state of the appointment (e.g. active, revoked, voided) |
| Assigned At | When the appointment was made |
| Revoked At | When the delegator revoked their own appointment, if they did |
| Voided At / Voided By / Void Reason | When an administrator voided the appointment, who did it, and the recorded reason |
This is a history, not a snapshot of what is currently active. Every appointment made on the session appears here, including ones that were later revoked or voided. Read the Status column before treating any row as a live appointment. Filtering to only "active" rows, or assuming every row still holds, is a common misreading of this export.
Check-In Report CSV
Available on Meeting sessions with attendance check-in turned on. The check-in report lists who was admitted, when, and by which method: self-serve with the meeting code the chair announces at the meeting, or admitted by name at the admin desk.
| Column | Description |
|---|---|
| Name / Unit / Weight | The voter's identity and assigned weight |
| Checked In / Checked In At | Whether the voter was admitted, and when |
| Method | Meeting code (self-serve) or registration desk (admitted by an administrator) |
| Checked In By | The administrator who admitted the voter, for desk check-ins |
| Held Proxies / Held Delegated Weight | How many proxy appointments the voter holds, and the combined weight of the delegators they represent |
| Effective Weight | The weight this voter would cast, their own weight plus anything they hold by proxy |
One row per voter on the roll, not one row per check-in. Voters who were never admitted still appear, with a blank check-in block, so the report is a complete attendance record rather than only a list of arrivals. It is an accurate record of who was present and how they got in; the organization's chair still makes any quorum determination from it.
Admin Activity Log CSV
A complete audit trail of every administrative action taken on the session. This includes session creation, question changes, voter imports, status transitions, and export actions themselves. Every entry records who did it and when.
| Column | Description |
|---|---|
| Timestamp | Date and time the action occurred (standardized format) |
| User | Email of the admin who performed the action |
| Action | Action type (e.g. QUESTION_CREATED, STATUS_CHANGE, VOTERS_IMPORTED) |
| Target | The object acted upon (question title, voter email, session name, or voter count) |
| Details | Additional context (status changes, updated fields, file names, reasons) |
How to Export
Open your voting session
Navigate to the voting session you want to export data from. You can access any session from your organization dashboard.
Go to the Reports & Activity tab
Click the "Reports" tab in the session sidebar. This opens the reports page with the four standard export options and the activity log. The proxy register and the check-in report are downloaded from the Proxies and Check-in tabs instead.
Choose your export type
You will see three export cards: Voter Participation, Final Tally Results, and Anonymous Ballot Audit. Click "Download CSV" or "Download Audit Logs" on the card you need.
Download begins immediately
The CSV file downloads directly to your browser. No waiting, no email delivery. The file is generated on-demand with the latest data at the time of download.
For the Activity Log, use the inline export button
The Admin Activity History section at the bottom of the page has its own export button (the download icon next to the search bar). This export respects any active filters, so you can narrow down the data before downloading.
STV / Ranked Choice Results
Ranked choice (Single Transferable Vote) questions produce a different format in the Results CSV. Instead of a single row per candidate with a flat vote count, STV results include round-by-round data showing how votes transferred between candidates until winners were determined.
VoteAlly uses a proportional transfer method (Weighted Inclusive Gregory) to redistribute surplus votes, and the Droop quota (the minimum number of votes needed to win a seat) to determine winners. All of this is reflected in the export.
What each round row contains:
| Field | Value |
|---|---|
| Status | "Round 1", "Round 2", etc. instead of the question status |
| Votes | The candidate's vote total in that round (may include partial votes from transfers) |
| Percentage | Replaced by candidate status: "elected", "eliminated", "hopeful", or "exhausted" |
Additional summary rows:
- Exhausted Ballots per round: ballots where all of the voter's ranked candidates have been eliminated, so the ballot can no longer count toward any remaining candidate
- Quota: the minimum number of votes a candidate needs to win a seat
- Winners: the final list of elected candidates
- Total Exhausted: the total number of ballots that could no longer count toward any candidate, across all rounds (only shown if greater than zero)
Tip: When presenting STV results to your board, the summary rows at the bottom give you the key numbers: the quota, the winners, and how many ballots were exhausted. The round-by-round detail is available for anyone who wants to verify the counting process.
Proxy Attribution: Why the Numbers Can Differ From the Tally
On a session with proxy delegation, each question in the Results CSV ends with a Proxy Attribution block. It reports weight and voters represented directly versus represented by proxy, using these four rows:
| Row | What it counts |
|---|---|
| Weight represented directly | Current weight of voters who cast their own ballot on this question |
| Weight represented by proxy | Current weight of voters whose proxy holder cast on their behalf |
| Voters represented directly | Count of voters in the row above |
| Voters represented by proxy | Count of voters in the row above it |
Notice the word: "represented," not "voted." That is deliberate, not a typo. A proxy holder casts one ballot carrying the combined weight of everyone who appointed them; those delegators did not click anything themselves, but they are still counted as represented, because that is what actually happened to their vote.
Why these figures can differ from the tally above them
The tally in the main Results CSV sums the weight frozen onto each ballot at the moment it was cast. The Proxy Attribution block sums each voter's current weight, as of the moment the export runs. If the roll was corrected after a vote was cast, a weight changed, a unit reassigned, the two figures legitimately differ. Neither is wrong. They measure different things. The tally is what was actually counted toward the result; the attribution block is who is represented, and at what weight, as of right now.
Worked example. Fraser Ridge Housing Cooperative holds its board election on March 11, 2027. Before the session leaves DRAFT, a member with a weight of 3 appoints a neighbor, weight 2, as proxy holder. On election day, the holder casts one ballot carrying a combined weight of 5, and that 5 is frozen onto the ballot's tally. Two days later, the co-op's registrar corrects a records error and updates the delegating member's weight from 3 to 4, reflecting a share transfer that had been filed before the election but not yet processed. When the board exports results on March 15, the tally above still shows the ballot's frozen weight of 5. The attribution block splits the two members apart: "Weight represented by proxy" is 4, the delegating member's current weight, while the holder's own weight of 2 falls under "Weight represented directly", because the holder cast a ballot themselves. The two rows total 6 against a frozen tally of 5. Both numbers are correct. The tally reflects what was actually counted in the outcome; the attribution block reflects who is represented and at what weight the roll shows today.
For the full mechanics of delegation and effective weight, see the proxy voting setup guide. For how a member with divided instructions casts one ballot across several outcomes, see split vote allocation.
Activity Log Filtering
The Admin Activity History table supports several filtering options to help you find specific records. All filters can be combined, and the CSV export respects whatever filters are active.
Text Search
Use the search bar to find records matching admin emails, question titles, voter emails, session names, or action reasons. The search runs across multiple fields simultaneously.
Action Type Filter
Click the "Action" column header to open a dropdown of all action types recorded for this session. Select a specific type (e.g. SESSION_STATUS_CHANGED, VOTER_IMPORTED) to show only those records.
Date Range Filter
Click the "Timestamp" column header to set a start and/or end date. This narrows the log to a specific time window. Useful for isolating activity on a particular meeting day or investigating a specific incident.
Tip: Apply your filters first, then click the export button. The downloaded CSV will contain only the filtered records, making it easy to produce focused reports for specific investigations or time periods.
Data Format & Security
File Format
CSV (Comma-Separated Values) with standard text encoding. Compatible with Excel, Google Sheets, Numbers, LibreOffice, and any data analysis tool.
Column Headers
Every CSV includes a header row as the first line. Column names are consistent across exports and use a combined-word format (e.g. QuestionTitle, ReceiptCode, VotedAt).
Timestamps
All timestamps use a standardized format in UTC (e.g. 2025-03-15T14:30:00.000Z). This ensures consistent sorting regardless of your local timezone.
Spreadsheet Safety
All cell values are cleaned so that special characters cannot be misread as spreadsheet formulas. This protection is applied automatically to every export.
Audit Trail
Every export action is itself logged in the activity log. The system records who downloaded the export, how many records were included, and what filters were applied (for activity log exports).
Compliance & Best Practices
- Export immediately after closing a session. Download every export that applies to your session as soon as it ends. VoteAlly has configurable data retention periods, and voter personal information is automatically removed after the retention window. Once that happens, participation exports will no longer contain email addresses and names.
- Attach results to your board meeting minutes. The Results CSV provides the official vote counts. Include it as an appendix to your meeting minutes for a complete governance record.
- Archive ballot audits separately. The anonymous ballot audit is your proof of vote integrity. Store it alongside (but separate from) the results so that an independent party could verify the count if challenged.
- If proxy delegation or check-in is enabled, download those registers too. The proxy register and check-in report are separate exports, covered above, and are not included in the four standard exports. Archive them with your other governance documents; the proxy register is a full history, including revoked and voided appointments, not just what is currently active.
- Use the activity log for dispute resolution. If a member questions a procedural decision, the admin activity log shows exactly what happened, who did it, and when. Export the relevant window with date filters.
- Keep participation and check-in records as input to a quorum determination. VoteAlly does not calculate or confirm quorum. The participation export and, on Meeting sessions, the check-in report give the chair or board an accurate record of who took part, which they use to determine quorum under the organization's own bylaws. This is especially important for HOA annual meetings and bylaw votes.
- Store exports in your organization's document management system. CSVs are small, portable files. Upload them to your SharePoint, Google Drive, or board portal alongside your other governance documents.
Frequently Asked Questions
Are exports anonymized?
It depends on the export. The Ballots CSV is fully anonymized with no voter identity information. The Results CSV contains only aggregate vote counts. The Participation CSV includes voter emails and names because its purpose is to show who participated, but it never reveals how anyone voted. Vote choices are never linked to voter identity in any export.
Can I export while voting is still open?
Yes. All exports are available at any time, including during an active session. The data reflects the current state at the moment you download. Results and participation will update as more votes come in, so an export taken mid-session is a snapshot, not the final record.
What format are the files?
All exports are CSV files with standard text encoding and a header row. They open directly in Excel, Google Sheets, Numbers, and any spreadsheet or data analysis tool. Timestamps use a standardized format in UTC for consistent, unambiguous date handling.
Is there a limit on how many records I can export?
Results, ballots, and participation exports include all records for the session with no limit. The activity log export caps at 10,000 records per download. For sessions with very large audit trails, use the date range filter to export in segments.
Can I see who exported data?
Yes. Every export action is recorded in the admin activity log. The log entry includes the admin email, the export type, the number of records exported, and a timestamp. For activity log exports, it also records which filters were applied.
What happens to exports after voter personal data is removed?
If you export before voter personal data is removed, your downloaded files retain the original data. If you export afterward, the Participation CSV will have blank email and name fields because that information has been removed from the database. Always download participation data before the retention window expires.
Is the proxy register a list of currently active appointments?
No. The proxy register is a history. It lists every appointment made on the session, including ones that were later revoked or voided, so read the Status column before treating any row as a live appointment. It is available on Meeting sessions with proxy delegation turned on.
What does the CastGroupID column in the ballot audit mean?
When a voter splits their weight across several options, the cast produces several ballot rows, one per option. CastGroupID identifies those rows as a single act of voting. Without it, one member's split cast would look like several separate voters in the export. This column appears on both Live Meeting and Scheduled Election sessions, since split voting is not a Meeting-only feature.
Why do the Proxy Attribution numbers in the results export not match the tally above them?
They measure different things, and neither is wrong. The tally above sums the weight frozen onto each ballot at the moment it was cast. The Proxy Attribution block sums each voter's current weight. If the roll was corrected after a vote was cast, such as a weight change or a unit reassignment, the two figures legitimately differ.