VoteCheck
VoteCheck

Turnout measurement

Identifying voter turnout to drive your campaign or GOTV efforts

VoteCheck matches a list of people — a membership roll, a staff roster, a congregation, a voter universe — against the public record of who has participated in an election, and reports it back every morning. You get the turnout information you need in the form you can actually use — sanitized and anonymized if you are an employer tracking your own people, or a GOTV target list if you are running a campaign.

Daily through early voting Matched to the public record Built to the Texas Election Code
§1

What the service does

Usually you give VoteCheck a list of people. VoteCheck matches it against the public record of who has participated in a given election and reports back: how many of them have voted, how that is moving day to day, how it compares to the county and the region around you, who they are demographically, and where the nearest polling places are.

You do not have to bring a list. If you are working a district rather than a roster, we can build the universe from the voter file itself — by district, precinct, city or turf — and track its turnout the same way, day by day. That is the same public record every campaign already works from; you are simply not the one assembling it.

It is a turnout measurement and civic engagement tool. It is built so that a school district, a hospital system, a union local, a membership association or a campaign can run a real get‑out‑the‑vote program across everyone on its list and actually know whether it worked. What comes back depends on which of the two doors you came in — that is the next section.

§2 Tex. Elec. Code§87.121
Early voting roster
Tex. Elec. CodeCh. 18
Registration list

Two doors

There are two ways in, and they are not interchangeable: you are either a campaign working a voter universe, or an employer measuring your own people. Different upload, different storage, different product.

The employer door has two settings. Every employer account starts anonymized. An employer that needs to know which of its people to follow up with can sign an affidavit and switch — but that is a deliberate second step, not a different product and not a different door.

01

Candidate, party or PAC

You are working a voter universe, not a roster. You get the voter file back.

  • Upload VUIDs, or name a district and we build the universe
  • Full voter detail — name, address, precinct, history
  • GOTV target lists, mailable
  • Strike lists cut each morning through early voting
Door 02

Employer

You want your people to vote and you want to know whether it is working. Every employer account starts here, anonymized.

  • Turnout by unit, never a unit under 25 people
  • Daily movement, and comparison against your county
  • Polling places, traffic and weather, for scheduling around voting
  • Ready‑to‑send copy for everyone on your list
  • Match‑quality figures, so you know what the number is worth
Optional — by affidavit

Sign an affidavit and the same account reports named individuals and the full public voter record we hold for each of them.

  • Everything above, unchanged
  • Named individuals, with their unit and status
  • Their registered address, precinct and districts
  • Registration date, party and participation history
  • Contact details where we hold them, opt‑outs honored
  • Filter to the people who have not voted yet
  • Every view and export logged, and visible to your people

Not a toggle. It needs a sworn affidavit, named administrators, and a disclosure your people have consented to. It is a decision you take with your counsel once the legal, ethical and business case is settled — and we ask you to take it deliberately.

One thing sits between the two doors: the voter record itself — public county data, improved over time by what customers on both sides contribute to it.

Candidate · Party · PAC
Organization
You upload — or you don't A list of VUIDs, the registration numbers you already hold. Or no list at all: name a district, precinct or turf and we build the universe from the voter file.
You upload last_name, first_name, birth_year, zip, and an optional opaque dept_code. Nothing else is accepted.
Held separately Your own storage namespace. No organization's roster is reachable from it.
Held separately Your own storage namespace. No campaign list is reachable from it.
matched against — and merged back into
Shared — the voter record

Both sides are matched against the same thing: the county early‑voting rosters published daily under §87.121 and the Chapter 18 registration list. It also grows. Where your file carries a detail about a voter that the public record lacks — a current address, a date of birth, a way to reach them — that detail is merged into the voter’s record and tagged with your organization as its source. Your roster itself is never part of it, and neither side can see the other’s.

You receive Full voter detail — name, registered address, precinct, participation history. Mailable, because it is the public voter file you are entitled to, and cut into strike lists each morning as early voting proceeds.
You receive 02 — counts. Turnout by unit, never a unit smaller than 25 people, plus the match‑quality figures that tell you how much to trust them. 03 — the same, plus named people and their status. Never an address, VUID or precinct.
Door 01 · CampaignDoor 02 · Employer
Anonymized — defaultWith affidavit
What you uploadRegistration numbers — or nothing, and we build the universe from the voter fileName, birth year, ZIP — plus anything more you choose to share
Where your roster is storedCampaign namespaceOrganization namespace
Visible through the other doorNeverNever
Matched againstThe same voter record — shared
Voter details you supplyMerged into that record, tagged with your organization as the source
Your department codingYours alone — never joins the voter record
Individuals named to youYes — the voter fileNeverYes, with status
Address, precinct, districtsYes — public recordNever leavesYes, for people on your roster
Party and participation historyYesNever leavesYes, for people on your roster
Contact detailsYesNever leavesWhere we hold them, opt-outs honored
Filter to who has not votedYes — it is your voter fileNo such capability existsYes, and the filter used is logged
Smallest reportable unit25 people25 people, for aggregates
Requires a sworn affidavitNoNoYes
Access logged and shown to your peopleEvery view and export
How it reaches youDashboard and CSV exportDashboard and morning emailDashboard, morning email, and a full follow-up export

Why the default is anonymized. You hold the key that turns a row token back into a person, so a report split by whether someone voted is a targeting list with one step removed — which is why that split does not exist at all on the default setting, rather than merely being switched off. Lifting it is precisely what the affidavit is for: it moves that decision, and the responsibility for it, onto a named signer.

§3 Tex. Elec. Code§276.001
Retaliation against voter
Tex. Elec. Code§18.069
Voting history

The first question everybody asks

“Can you just send me the list of who voted and who hasn't?”

That depends entirely on which door you came in

If you are a candidate, party or PAC: yes, and it is not a special request — it is the product. You uploaded registration numbers, and whether someone participated is public record. You get it back in full.

If you are an employer on the default setting: no. There is no such report to run. The dashboard reports units, never individuals, and no export accepts a filter on whether someone voted — that capability is absent from the product rather than switched off. The only key that turns a VoteCheck token back into a person is the one handed to you at upload, and our copy of it is destroyed after seven days.

If you are an employer who has signed the affidavit: yes. That is what the affidavit is for, and it is why it is a sworn document and not a checkbox — a named person takes responsibility for holding that list. Every view and every export is written to a log your people can read, and the log records which filter was used, not merely that something was downloaded.

It is worth being precise about why, because the answer is not that the information is secret. In Texas, whether a registered voter participated in an election is public record — the registrar reports it to the Secretary of State after every election. How they voted is not, and never leaves the ballot box.

So the difference is not confidentiality — it is leverage. A campaign looking at a voter file is looking at strangers it can only ask for a vote. An organization looking at its own roster, split into those who voted and those who did not, is holding a list of identified individuals over whom it already has power, describing an act of political participation.

Where that organization is an employer, Texas law treats acting on it with unusual severity: subjecting an employee to a loss of wages or another benefit of employment in retaliation for how they voted — or for declining to say — is a third‑degree felony. The same asymmetry, in milder form, holds for a union and its members, a district and its staff, or a congregation and its people.

Nobody buying this service intends that. But a capability that exists can be requested, exported, forwarded, logged, discovered and subpoenaed. The list would sit in your systems for years, and every future dispute with every person on it would have to be litigated against its existence. We remove the exposure by not building the capability — which is also why we can give you a great deal more than a service that kept it would dare to.

§4

What we take, what stays yours, and what we refuse

Four fields identify a person well enough to match them against the voter file. You may send more, and if it tells us something about that person as a voter we will keep it and improve their record with it. What we have no use for is the shape of your organization — who reports to whom, who sits next to whom, what anyone is paid.

Kept — improves the voter record

  • last_name
  • first_name
  • birth_year or date_of_birth
  • zip
  • street address
  • email
  • phone

The first four are the match key; ZIP is deliberately excluded from the identity token, so someone who moves house is still recognized as the same person. Anything beyond the key is merged into that voter’s record and tagged with your organization as its source.

Yours alone — never leaves

  • dept_code  (optional, opaque)
  • row_token

Your department coding exists so your report can group people into units. It is opaque to us, it never joins the voter record, and no other customer can see it. Send codes rather than names and we never learn what your departments are called.

Refused at the door

  • SSN / national ID
  • salary, compensation
  • payroll or HRIS number
  • manager or supervisor
  • org chart, co‑worker links

Refused by content, not just by column heading. A file whose “notes” column turns out to hold phone numbers is rejected the same way as one that labels them honestly.

Contact details that arrive with a roster are kept on the voter’s record, tagged with your organization as their source, and used to make that record more complete. They are never used by us to reach your people, and the voter file cannot be searched by the organization that contributed to it — so no one can ask it who belongs to you. All outreach is yours, sent through your own channels, to everyone on your list.

§5

How a roster becomes a measurement

This sequence runs once per upload, in order. Steps three and four are the ones that make everything downstream safe.

  1. 01The file is read and checked Required fields present, prohibited fields rejected, and a hard ceiling on how many rows may fail before the whole upload is refused rather than silently half‑loaded.
  2. 02Each person becomes a token An HMAC‑SHA256 of their name and birth year under a salt unique to your campaign, rendered as VC4F91A0C3E8B2. The same person re‑uploaded next month produces the same token, so nobody is ever counted twice.
  3. 03You are given the only key A crosswalk of token ↔ name is generated for you to download and keep. It is the sole means of turning our output back into your people.
  4. 04We destroy our copy The names are purged from our store and the crosswalk expires after seven days. From that point the correlation exists only on your side of the boundary.
  5. 05Tokens are matched to the voter file Confident matches settle. Everything else is held open, never deleted — so a fuller roster uploaded later can resolve it without creating a duplicate person. On the first real roster we processed, 48.5% of rows were too ambiguous to settle on names alone; discarding them would have quietly overstated turnout.
  6. 06Attributes are captured in aggregate For settled matches only: age band, sex, precinct, and party lean inferred from primary participation. Never written back against a name, because by now there is no name to write it against.
§6

What you actually receive

Removing the individual list does not thin the product out. It is what lets us be generous with everything else.

Every morning, 7am The daily report How many have voted, the overnight movement, and your position against the county baseline — plus a block of ready‑to‑send copy for your all‑staff message, written to be sent to everyone.
Live The dashboard Turnout against county, region and comparable populations. Age, sex and party‑lean breakdowns. A geographic view of where your people sit relative to polling places.
Per election Polling places, traffic and weather The sites nearest you, ranked by distance from your own address — never from an individual's — with hour‑by‑hour road conditions sampled through the voting day and the forecast at each site.
On request The audience export Every enrolled person as a token, with no vote status attached. One list, for one message, to everyone.

The dashboard

Example · real figures from a live roster

The VoteCheck dashboard: headline counts for voted, since yesterday,
                  not yet voted, needing review and unregistered; a party-lean bar; age
                  and sex charts; and a rail comparing this group against the county
                  and region.
Counts first, then who they are. Turnout is calculated only on the people we could confidently identify, and the banner says what share that is — nobody is quietly folded into a denominator. State and national comparisons read “not yet available” rather than showing a figure we cannot stand behind.

The morning report

Example · real figures from a live roster, entity name shown

The top of a VoteCheck daily email: a ready-to-send copy block, the
                    administrator's own figures, and turnout against county and region.
Two blocks, deliberately separated. Copy your team can send to everyone, then the figures that are yours alone. The percentage only appears in the sendable copy when you are ahead of the county.
The demographic section of a VoteCheck daily email: party lean as a
                    single stacked bar, then age and sex as horizontal bars where the
                    solid part of each bar is the share who have voted.
Who they are, in aggregate. Party lean, age and sex. Bar length is headcount and the solid part has voted. Anything under 25 people is counted into a withheld row rather than broken out.

On a phone

Example · the same report at 414pt

The daily VoteCheck report on a phone: the card takes the full device
                  width, type stays at full size, and the charts reflow rather than
                  being scaled down.
Built to reflow, not to shrink. The card takes the device width instead of the whole thing being scaled to fit, so the type stays readable and the bars keep their proportions.

Why the export has no status column

Because its complement is trivial. Hand someone a list of who voted and they can subtract it from the roster they already own to get the people who did not. A “non‑voter” list and a “voter” list are the same artefact viewed from either end, and either one turns an all‑staff reminder into targeted contact based on an individual's participation. So there is one list, it contains everyone, and it carries no status to filter on.

§7

The thresholds that protect the individual

Aggregates can leak. A department of three, broken out by turnout, names people as surely as a list does. Every figure VoteCheck publishes passes a floor first.

25Minimum people in any organizational cohort before it is reported. Smaller groups are counted into a Withheld row — present in the total, never characterised.
10Minimum in a geographic cell before it appears on a map.
5 ptsTurnout rates are banded, not given to the decimal, so two reports cannot be differenced to isolate a person.
1,340 ftRadius of the deterministic offset applied to every mapped point, so density is honest and no location is.

The same discipline governs the wording of your daily report. When your group's turnout sits below the county baseline, the percentage is withheld from the copy we hand you and the message leads with a count or the deadline instead. Publishing a low participation rate to a group tells them that not voting is normal here, and that is a measurable depressant. The figure is still on your dashboard — it is your number. It is simply not the sentence we suggest you send.

§8 Tex. Elec. Code§18.066, §18.067, §18.009, §18.069, §276.001, §276.004

Where this sits in the Texas Election Code

The design above was drawn against these provisions. This is a description of engineering decisions and the constraints they answer — it is not legal advice, and it does not substitute for your own counsel's reading.

ProvisionWhat it establishes How VoteCheck is built around it
§18.069 The registrar reports each voter's participation in an election to the Secretary of State. Participation is public; ballot choices are not. Our matching uses only participation. No product surface implies, infers or reports how anyone voted.
§18.066
§18.067
The statewide voter registration list is available on affidavit that it will not be used to advertise or promote commercial products or services. Misuse is a Class A misdemeanour. Outputs are civic turnout measurement in aggregate. The service sells no product to any voter, and the data drives no advertising. Registered use and affidavit are held at the Politiquera level.
§18.009 Restricts use of information taken from a registration list. The registration list is never redistributed. What leaves the system is counts and bands, plus tokens that only you can resolve.
§276.001 Retaliation against a voter — including an employer subjecting an employee to loss or reduction of wages or another benefit of employment over how they voted, or over refusing to say. A third‑degree felony. The single most important provision here. The individual‑level list that would make this offence possible to commit is never created, never exportable, and cannot be reconstructed from our store.
§276.004 Unlawfully prohibiting an employee from voting. The polling‑place, traffic and weather tooling exists to help scheduling enable voting — ranked from your location, for anyone deciding when to release people to go and vote.

There is a straightforward way to describe the boundary to your own board: VoteCheck reads public participation data and returns statistics. It does not return records about identified individuals, because it does not retain the identities required to make one.

§9

What happens when you sign up

Five steps. Nothing runs and nothing is billed until you have seen the price and said yes.

  1. 01You create the campaign and upload your roster Four fields per person: last name, first name, birth year and ZIP. You choose the election to track. The file is checked and matched on the spot, so the next step uses your real numbers rather than an estimate.
  2. 02We price it and email you a proposal Priced off the roster you just uploaded, itemised, with the annual alternative shown if it would suit you better. Nothing has started and nothing has been billed.
  3. 03You accept, and we invoice One link in that email. Accepting confirms the figures so we can raise an invoice — it does not take payment. Purchase orders accepted.
  4. 04We approve the campaign A person here checks it and turns it on. Until then it is not visible to your administrators and no reports go anywhere.
  5. 05Reports every morning at 7am Through early voting and Election Day, with a final wrap-up the morning after. Your dashboard is live throughout.
§10

What it costs

Priced per cycle — from load, about two weeks before early voting opens, through the day after Election Day. The two doors are priced on different things, because they are buying different things: a campaign pays for the size of the universe it chooses, a private group pays for the size of the roster it already has.

Campaigns — per registered voter

You name the race — a city council seat, a school district, a state house or congressional district, a whole county — and the registered voters in that jurisdiction set the price. One rate, whatever the size: five cents a voter, per election cycle.

Registered voters in your race Per cycle
Each registered voter in the jurisdiction$0.05
Minimum
Any race smaller than 30,000 registered voters lands here.
$1,500 / cycle

The count is the one the county certifies for that entity at each election, so it is a number you can check. Every cycle includes the universe build, the daily roster match through early voting, strike lists cut each morning, and the full voter detail for that universe. There is no separate onboarding fee for a campaign.

Annual — parties, PACs and anyone running more than one race

A county party works the March primary, the May runoff, the May uniform date and November. Paid by the cycle that is four separate universes and four separate invoices. The annual plan replaces both.

You name a footprint — the largest area you will work in the year, usually a county or a congressional district. For 2.5× that footprint's cycle price you get every race inside it, all year: primaries, runoffs, the May uniform date, November, and any special called in between. Sub‑universes cost nothing extra, so a county party can pull a precinct, a city, a school district or a state house district out of its footprint as often as it likes.

Footprint Per cycle Annual
A small city — Elsa (6,469)$1,500$3,750
A city — McAllen (94,684)$4,734$11,836
A state house district — HD‑41 (125,197)$6,260$15,650
A congressional district — CD‑15 (366,449)$18,322$45,806
A county — Hidalgo (515,820)$25,791$64,478

It pays for itself on the third race. Two races in a year and paying by the cycle is cheaper — we will say so rather than sell you the subscription. Runoffs are already included, not billed at half.

Estimate a campaign universe

Counts are the registered voters actually in our file for each area today.

Estimated. The figure that counts is the one in the proposal we send once the universe is defined — priced off the file itself, and nothing is billed until you accept it.

Private groups — per person on your roster

The band is set by how many people are on your roster.

People on roster Per cycle
Up to 250$1,500
251 - 1,000$3,500
1,001 - 2,500$6,500
2,501 - 5,000$10,000
5,000+$1.75 / person

Every cycle includes the roster upload and match, the daily morning report through early voting and Election Day, ready-to-send copy for everyone on your list, turnout broken down by unit, the final wrap-up, and email and phone support while the cycle runs.

Estimate a private group

Everyone you would upload, not only those who vote.

Estimated. The figure that counts is the one in the proposal we email you once your roster is uploaded — that one is priced off the file itself, and nothing is billed until you accept it.

Add-ons

Polling-place lookup
The early-voting and Election Day sites nearest you, with hours, road conditions through the voting day and the forecast at each one.
$500 / cycle
Campus & department breakdowns
Turnout reported separately per campus or department, alongside the organization-wide figure. Any unit with fewer than 25 identified people is counted but not broken out.
$750 / cycle

Runoffs for existing customers are billed at half the cycle price. Per-cycle fees are invoiced at roster load; annual plans up front or by semester. Purchase orders accepted.

Track an election Sign in with Google to get started. New campaigns are reviewed before they go live.