About Iowa First Check
Iowa First Check is an independent project run by an Iowan who was curious about the 2026 governor's race and wanted to make it easier to compare the candidates, their proposals and campaign activity.
We try to trace every piece of information to its original source and provide links so readers can review the evidence themselves. The project is not affiliated with any candidate, campaign, news organization, aircraft owner or data provider. No campaign pays for or directs it, and it does not tell anyone how to vote.
Where the information comes from
- Candidate events — campaign websites, news coverage and campaign social media posts. Some events may be private or require registration, so confirm details with the campaign before attending.
- Aircraft activity — public ADS-B flight data from the OpenSky Network for tail number N512MM, linked to Zach Lahn.
- Campaign finance — reports filed with the Iowa Ethics and Campaign Disclosure Board.
- Policy positions — candidates' published platforms, advertisements and public statements, including debates and interviews.
Limitations
The website can only track information that is publicly available or provided to us. Unpublished events may be missing. Aircraft data shows that a plane moved, but not who was aboard or why. Campaign finance information reflects reports as filed and is not a real-time record.
How overnight locations are calculated
For each night beginning November 6, 2025 — the date Zach Lahn entered the governor's race — Iowa First Check uses the aircraft's last reliably identified arrival airport in the available flight record. The airport's state determines whether that night is listed as Iowa, Kansas or another state. Nights for which the aircraft's location cannot be established are listed as unknown.
An overnight location is a property of the aircraft record. It does not indicate who was aboard, who used the aircraft, the purpose of a trip or where any person stayed. ADS-B coverage can be incomplete, and some departures or destinations may not be identified. Overlapping ADS-B records that appear to describe the same movement are treated as one flight, not counted twice. The tracking period ends at the last night the available data actually covers — an incomplete or not-yet-collected period is reflected by a shorter tracking period, not by assuming the aircraft stayed put. Figures reflect the records available at the time of the site's latest data refresh, and the same figures are shown on the homepage and on the full flight log.
How Google digital-ad figures are calculated
Source: Google's Political Advertising Transparency Report, via its public BigQuery dataset (bigquery-public-data.google_political_ads.creative_stats). "Direct-campaign ads" covers only ads bought through each candidate's own confirmed Google advertiser account, starting from that candidate's own campaign-announcement date — it is not a count of all Google advertising in the governor's race. Google reports spend and impressions only as ranges; Iowa First Check always shows Google's own range and never converts it into a single estimated number.
Each row in Google's dataset is one ad record (one distinct creative upload), not one unique message — the same script or footage is often uploaded as several ad records with minor edits, so a "total ad records" figure overcounts distinct messages, and an impression range counts displays, not unique people. An ad record is shown as "active" if its own reported date range extends through Google's most recent reporting date; the spend figure attached to an active ad is the cumulative total Google reports for that ad since it began running, not a current daily or weekly rate.
Outside spending by parties, PACs, or other groups is included in governor-race totals only after a specific ad ID has been individually reviewed and classified as being about this race — an advertiser's own identity or general targeting is never treated as sufficient by itself, since the same national organization can run ads about many unrelated races that happen to also target Iowa. Message-content figures (what an ad argues, its tone, its topics, and any fact-reviewed claims) likewise appear only for ads that have actually been reviewed; an unreviewed ad is never assumed to have any particular purpose or tone.
Updates and suggestions
Event, aircraft and news information is refreshed several times a day and checked before publication.
Have an idea for other useful public information we could track or analyze? Email siteowner@iowafirstcheck.com.
How it's built
Iowa First Check uses HTML, CSS and JavaScript to organize public records and other publicly available information. Much of the collection process is automated through APIs and Python-based tools. Google Analytics tracks aggregate traffic (page views, general location, device type) — no accounts, no personal profiles.