Analyzing Iowa's primary election results
June 3 edition of "KHOI's Capitol Week"

It’s been a busy week! After being out late at Zach Lahn’s victory party on Tuesday, I joined Julie Gammack first thing Wednesday morning for a Substack live to talk about the primary elections. Watch here.
Then I recorded a segment with Arnie Arnesen about Iowa’s election landscape. That’s available this morning—look for “The Attitude with Arnie Arnesen” wherever you get your podcasts.
Our producer Mike Murphy and I recorded a special edition of “KHOI’s Capitol Week” live on Wednesday at noon, when KHOI Community Radio normally rebroadcasts our Monday evening show. That audio is at the top of this post, and you’ll find my written recap below. If your email provider truncates this message, you can read it without interruption here.
A quick heads up about upcoming events: this evening (June 4), I’ll join the Urbandale Area Democrats at 6:30 pm to talk about the 2026 legislative session. Then I’ll be on with the Grassroots Iowa Network at 8:00 pm to talk about Iowa’s campaign landscape. You can register for that free Zoom meeting here.
Next Tuesday, June 9, I will moderate a conversation in Iowa City about competitive state legislative races. Reach out if you’d like event details.
I’m having several house party fundraisers later this month. These are informal gatherings where we have some social time, and I talk about my reporting journey, the legislature’s work, and the upcoming campaigns. We always leave plenty of time for Q&A about anything related to Iowa politics.
Events are scheduled for Davenport (June 16), Newton (June 17), Des Moines (June 24), and Dubuque (June 27), with more in the works. Please reach out if you’d like to attend or help plan a house party in your area. There’s no minimum donation level.
If you can’t come but want to chip in—and are not an Iowa elected official, candidate, or paid campaign staffer or consultant on an Iowa campaign—you can make a one-time gift using a credit card, PayPal, Venmo, or personal check (message me for the mailing address), or a recurring donation via credit card or Substack.
Lahn scores upset in Republican primary for governor
We spent about a third of the show discussing the GOP primary for governor. We were pretty close to having the race go to convention, but Adam Steen didn’t do well enough to keep the leaders below the 35 percent threshold.
Unofficial results from the Iowa Secretary of State’s office show 80,338 votes for Zach Lahn (37.8 percent), 78,713 for Randy Feenstra (37.1 percent), 30,665 for Steen (14.4 percent), 14,662 for Brad Sherman (6.9 percent), and 7,260 for Eddie Andrews (3.4 percent).
Polk County tends to be among the first to report, and Zach Lahn jumped out to a early lead. All evening he stayed ahead as more results came in. His margin in Polk (2,586 votes) was greater than his statewide margin. So one way of looking at this race is that the Des Moines metro area carried the day.
I wasn’t too surprised by the outcome—as I wrote over the weekend, Feenstra was a terrible candidate who ran a bad campaign. But I was very surprised by how many counties Lahn carried.
By my count, Lahn had a plurality in 52 counties, Feenstra in only 44. Steen finished first in Greene County (three votes ahead of Lahn and nine votes more than Feenstra), and Steen also carried Van Buren County. Sherman carried Kossuth County, just eight votes ahead of Feenstra.
Feenstra didn’t dominate his home turf. Lahn carried 21 of the 36 counties in the fourth Congressional district. Feenstra carried just fourteen of the counties he represents, and one went to Sherman.
Even in Sioux County, where Feenstra grew up and has lived for decades, Lahn received 40 percent of the vote!
An early warning sign of the front-runner’s weakness was his underwhelming win against 2024 primary challenger Kevin Virgil, by a 60 percent to 40 percent margin. Feenstra’s gubernatorial campaign was feeble from the start and didn’t improve.
As we’ve regularly discussed on “KHOI’s Capitol Week,” Feenstra seemed to take the primary for granted, skipping every debate and multi-candidate forum. When Sioux County Republicans organized a forum for the candidates for governor last December, Feenstra didn’t show up but held his own meet and greet the same night, a few miles away. Iowa voters expect candidates to show up and answer questions.
Trump’s endorsement not enough for Feenstra
As signs pointed to a late surge for Lahn, President Donald Trump tried to bail out Feenstra with an endorsement last Friday. He posted again about the Iowa governor’s race on Truth Social Monday evening.
This is the first statewide GOP primary this cycle where Trump’s pick lost.
There’s no doubt in my mind that Trump’s endorsement helped Feenstra, but it came too late in the campaign. If he’d weighed in months ago, maybe Lahn wouldn’t have gained momentum. If he’d expressed support for Feenstra last summer, maybe Lahn wouldn’t have entered the race at all.
Feenstra was presumably counting on no one else having the resources to run a strong statewide campaign. But Lahn put $2.5 million of his own money into the race, spending heavily on television and digital advertising, as well as a field program.
I need to look more closely at the media buys, but it looks like Lahn’s ads were effective. Looking at the map of results by county, I noticed that Feenstra’s best areas were outside the Des Moines, Cedar Rapids, and Sioux City media markets (see media market map here). I would guess that Lahn didn’t spend much (if anything) in the Quad Cities, Omaha, Ottumwa/Kirskville, Quincy, Illinois, or Rochester, Minnesota markets. So Feenstra’s higher name ID carried the day.
Lahn was careful not to criticize Trump, saying he believed the president got “bad advice” and looked forward to working with Trump to keep Iowa red.
Lahn begins making case against Rob Sand
When I saw strong early returns for Lahn, I headed over to his watch party in West Des Moines. During his victory speech, he returned to what he calls the top four systemic issues he wants to work on: keeping young people in Iowa, helping family farmers stay in business, making public schools top in the nation, and addressing Iowa’s high cancer rate.
Lahn uses some rhetoric you don’t often hear from Republicans, like calling for breaking up Big Ag monopolies and eliminating tax breaks for large corporations. He also started laying out his case against Rob Sand, the Democratic nominee for governor.
Here’s my recording of his whole speech:
One reason Lahn surged late was that many Republicans believed Feenstra would lose to Sand. That was why influential right-wing commentator Steve Deace jumped ship from Steen to Lahn last weekend.
On Tuesday night, Lahn criticized Sand’s dependence on some big donors, specifically naming George Soros, Reid Hoffman, and Sand’s in-laws. He argued that Sand is putting Iowa “on the auction block.” He didn’t mention that Sand has raised millions of dollars from thousands of small donors.
Lahn put a lot of his own money into the race, and used a Trumpian line about how he “can’t be bought” because he’s his own biggest donor.
Lahn also claimed that Sand “wants you to believe he’s a moderate” but would govern like a radical.
Christian conservatives don’t vote as a bloc anymore
This race highlights the limited influence of Bob Vander Plaats and his FAMiLY Leader organization. Once upon a time, they supported winning candidates like Mike Huckabee, Rick Santorum, and Ted Cruz. But they endorsed Ron DeSantis before the 2024 Iowa caucuses, and he finished way behind Trump. This year they went all in for Adam Steen, and he finished a distant third. As I mentioned above, Steen only carried two counties, Brad Sherman one.
While Christian conservatives are an important Iowa GOP constituency, they don’t vote as a bloc.
It’s definitely time to stop calling Vander Plaats a “kingmaker”—I never thought that label was warranted anyway.
Thoughts on the primary turnout
The early vote numbers for Republicans were quite low. But more than 212,000 people cast ballots in the GOP primary, which was more than the 2022 primary, when just under 199,000 Republicans voted.
Democratic primary turnout this year was around 192,000, way up compared to the 2022 primary turnout of a little less than 159,000.
Many Republicans were concerned that Feenstra at the top of the ticket would depress GOP turnout for November. Lahn seems to have more potential to generate enthusiasm, so he could help boost their turnout in the general election.
Rob Sand rolls out general election message
State Auditor Rob Sand didn’t have an opponent in the Democratic primary, so he didn’t give a speech on Tuesday night. He came out of the gate Wednesday morning with a general election message.
His campaign released a memo arguing that Sand is “the strongest candidate” to win the governor’s race. According to an internal poll from late April, conducted by the Global Strategy Group, Sand led Lahn by 50 percent to 41 percent. I wouldn’t read much into that, because Lahn’s name ID must have been quite low at that point.
The memo also highlighted Sand’s huge campaign war chest and grassroots support, and began to define Lahn as a “longtime political operative and Kansas carpetbagger” supporting far-right policies. “As voters learn more about Lahn’s extreme record — from lying about where he lives to supporting policies that are making life worse for working families — they will see why he’s wrong for Iowa and send him packing back to Kansas,” the memo concluded.
Also on Wednesday morning, Rob Sand released his schedule for 100 town halls, published well ahead of time to allow people to plan to be there.
I noticed that Sand’s public events in most large counties will happen in September, and are scheduled late in the day.
Johnson County, 6:00 pm on September 14
Dallas County, 8:00 pm on September 16
Story County, 6:00 pm on September 21
Linn County, 6:00 pm on September 23
Black Hawk County, 6:30 pm on September 28
Scott County, 6:30 pm on September 29
Polk County, 6:30 pm on September 30
Presumably the idea is to build big crowds and get a lot of media coverage just as voters are tuning in to the governor’s race.
Sand also outlined his key campaign issues in remarks to reporters on Tuesday morning, which you can watch here. He declined to say how he had voted in the Democratic primary for U.S. Senate.
Turek wins Senate primary by wide margin
The Democratic race for U.S. Senate was called early, because Josh Turek defeated Zach Wahls by a wide margin: 120,213 votes to 71,621 (62.6 percent to 37.3 percent).
We didn’t have much public polling of this race, but the massive outside spending by the VoteVets super PAC seems to have been the decisive factor. What little polling we saw earlier this year found Wahls leading, probably due to his higher name ID. After VoteVets started spending heavily on positive advertising about Turek, things turned around. Some internal polling in May showed Turek 20+ points ahead.
Anecdotally, I heard many Democrats say they liked both candidates. They weren’t sure who would be the best one to take on Ashley Hinson. But as people were paying more attention and making up their minds, they saw many more positive messages about Turek, highlighting his inspiring personal story and his working-class background. That’s where I think VoteVets was most helpful.
I was surprised Turek didn’t do more to publicize Senator Tom Harkin’s endorsement during the campaign. He talked about it on Tuesday night, though. There’s a poetic aspect to his Senate bid, because the Americans with Disabilities Act (Harkin’s defining legacy) is what made Turek’s whole career possible. Now he has a chance to win back Harkin’s Senate seat.
Douglas Burns recorded Turek’s victory speech while I was at the Lahn event. Watch here:
Ashley Hinson easily wins GOP Senate primary
To no one’s surprise, Ashley Hinson won the Republican Senate primary, with 152,956 votes (74.0 percent) to 53,163 for her MAGA opponent Jim Carlin (25.7 percent). She had been the overwhelming favorite from the beginning, locking down Trump’s support and many other endorsements last September.
I was intrigued to see that Carlin’s vote share was very close to the 26.5 percent he received in his 2022 campaign against Senator Chuck Grassley. Arguably Hinson should have done much better against the under-funded Carlin, because there are no concerns about her age. (Grassley was nearly 90 during his last re-election bid.)
Clearly there is a strong anti-establishment contingent in the Iowa GOP.
As we discussed a couple of weeks ago, the only TV ad Hinson ran during this primary centered a general election message, signaling she wasn’t worried about offering red meat to Republican voters.
Republicans launch first ad against Turek
The National Republican Senatorial Committee, which is the main campaign arm of Senate Republicans, released a digital ad Tuesday night slamming Turek as the “Democratic Party’s establishment candidate.”
The ad quotes Turek advocating for a wealth tax, the assault weapons ban that was in place during the 1990s, and “an easier pathway to citizenship.” It also includes a clip of Turek saying, “I would not have supported any DHS funding.” Finally, Wahls is heard saying, “Senator Schumer wants a nominee whose vote he can count on.”
We will hear much more along those lines in the coming months.
Election forecasters shift Iowa ratings
Immediately after results came in Tuesday night, the Cook Political Report and Sabato’s Crystal Ball shifted their ratings on Iowa’s U.S. Senate race from “likely Republican” to “lean Republican.” Those moves reflect the widespread view that Turek was a stronger general election prospect than Wahls.
Sabato’s Crystal Ball also moved the governor’s race from lean Republican to “toss-up,” the same rating Cook Political has had for some time now.
Iowa’s first and third Congressional districts have had toss-up ratings for a long time. I noticed that Sabato is rating Iowa’s second Congressional district as lean R, while Cook Political still views that race (incorrectly, in my view) as likely R.
Miller-Meeks to face Bohannan for third time
We went through the primary results for U.S. House races.
In the first district, GOP incumbent Mariannette Miller-Meeks will face Democrat Christina Bohannan in November for the third time.
Miller-Meeks had a much more comfortable win this time, gaining 35,165 votes (71.5 percent) while MAGA challenger David Pautsch received 13,949 (28.4 percent). Two years ago, Miller-Meeks seemed to be caught off guard, beating Pautsch by a 56 percent to 44 percent margin. Her team was better prepared for this race.
On the Democratic side, Bohannan received 42,843 votes (81.4 percent) while progressive opponent Travis Terrell received 9,754 votes (18.5 percent).
This is expected to be one of the most competitive U.S. House races in the country. Independent candidate Michael Bridgford will be a wild card: he filed nominating paperwork on June 1. It’s not clear which side he could draw more votes from.
Lindsay James to face Joe Mitchell in IA-02
In the second district, which is an open seat, State Representative Lindsay James convincingly won the Democratic primary, with 27,678 votes (57.8 percent) to 11,519 votes for Clint Twedt-Ball (24.0 percent) and 8,660 votes (18.1 percent) for Kathy Dolter. It reminded me of Cindy Axne’s big win in the three-way 2018 primary to represent the third district.
James will face former State Representative Joe Mitchell in November. The heavy favorite, endorsed by Trump and many others, didn’t do as well as I expected with GOP voters. Mitchell prevailed with 24,369 votes (61.4 percent) to 15,230 votes (38.3 percent) for State Senator Charlie McClintock, who barely had a campaign and raised very little money.
Keep an eye on this race. I hope to write a deep dive soon.
Independent candidate Dave Bushaw has also qualified for the ballot, and Libertarian Rick Stewart is running too.
Dave Dawson wins Democratic primary in IA-04
There was no competition on either side in the third district, where GOP incumbent Zach Nunn will face Democrat Sarah Trone Garriott. So we skipped ahead to the fourth Congressional district. Chris McGowan was unopposed for the Republican nomination. He will face former State Representative Dave Dawson in November.
This three-way primary was very competitive. Dawson ended up with 11,285 votes (39.0 percent), while Stephanie Steiner received 8,832 votes (30.5 percent) and Ashley WolfTornabane 8,776 votes (30.3 percent).
Although IA-04 is a heavily Republican district, it can only be helpful for Democrats to have candidates actively campaigning in every corner of the state.
Four Libertarian candidates qualify for ballot
This is the first election year where independent and third-party candidates in Iowa had to file nominating papers by the date of the primary election (June 2). For many years, third party or independent candidates had until late August to file their paperwork. The legislature changed the law in 2025, and no one filed a lawsuit to challenge the new early filing deadline.
I went to the capitol on Tuesday morning, expecting to see two Libertarians file their paperwork with the Iowa Secretary of State: Greene County Attorney Thomas Laehn for U.S. Senate, and Nicholas Gluba for governor.
To my surprise, two Libertarians are running for Congress as well: Rick Stewart in IA-02 and Marco Battaglia in IA-03. I had been told earlier this year that Libertarians didn’t plan to field candidates in any U.S. House races. Stewart and Battaglia both told me they hadn’t planned to run, but volunteers convinced them to do so. In fact, Stewart said volunteers collected signatures on his behalf without his knowledge.
I’m sure Republican operatives will closely scrutinize all of the Libertarian petitions for errors that could get them disqualified from the ballot. All four candidates told me on Tuesday they are confident they collected enough extra signatures to withstand any challenge.
In 2024, Republicans successfully knocked three Libertarian Congressional candidates (including Gluba and Battaglia) off the ballot. They had been nominated by a convention, rather than using the labor-intensive process of collecting signatures.
Cournoyer wins GOP primary for state auditor
We had just a minute to talk about the only other competitive primary for an Iowa statewide office. Lieutenant Governor Chris Cournoyer won, with 99,984 votes (54.0 percent) to 84,661 votes (45.7 percent) for Iowa County Supervisor Abigail Maas. She will face Taylor Wettach, the Democratic candidate for state auditor.
Cournoyer was backed by most of the GOP establishment and raised more money for this race. From where I’m sitting, the strong showing for Maas reflects that anti-establishment sentiment I mentioned earlier.
Republicans will be relieved they didn’t have a repeat of the 2022 primary for state auditor, when Todd Halbur scored an upset win over the insiders’ favorite, Mary Ann Hanusa. The GOP didn’t lift a finger for Halbur during the general election campaign, and he ended up narrowly losing to Rob Sand.
That’s all for now—thanks for reading and subscribing!
Spencer Dirks and I will be back on Monday evening with more to say about the primaries, including results in key legislative races. We will also cover Governor Kim Reynolds’ final bill signings.


Thank you Laurie for a great analysis
Thanks Laura, more great analysis. What do you think about Lahn claiming he can bust up Big Ag when that's beyond the power of a governor? Or how he phrases his education policy as if he'll stop religious and rightwing teachers from pushing their ideology, a policy I suspect will actually be aimed at public school teachers?