Campaigns matter, and a chaotic last month in the Wisconsin Democratic primary is a prime example.
In the Marquette Law School Poll’s final survey of Wisconsin voters, July 22-27, Francesca Hong received 38%. Her unofficial vote total in the August 11 primary election is 39.3%. And 34% said they were undecided. The remarkable difference between poll and outcome was that the poll had David Crowley at 7% and he won with 39.8%. Mandela Barnes, who dropped out three days after the poll was completed, had 16% in the final survey. One clear thing is that the vast majority of late-deciding voters went to Crowley and very few went to Hong.
The race was complicated by three candidates dropping out, and Crowley reentering, in the final month.
On the demographics of the race, older voters were both the least supportive of Hong and the most undecided age group. They also said they were more likely to vote than did younger voters, providing a potential advantage to Crowley, though they had not settled on him at the time of the final poll.
Another unusual aspect of the race was the very late endorsement of Crowley by Gov. Tony Evers. In our final poll, more than one-third (36%) of Democratic primary voters said that this endorsement made them more likely to support Crowley. Evers’ job approval with Democrats was also over 85%.
Non-response bias is always a potential source of error in polls. In this case, the age and ideological makeup of the survey samples of primary voters was similar to the pre-primary makeup of Democrats, suggesting that young, very liberal, Hong supporters were not overrepresented. Those groups strongly supported her but were not an unusually large share of the samples. Older and moderate voters were more undecided and less supportive of Hong in both of our July polls but had not settled on the very newly returned Crowley at the time of the last survey.
And Hong’s actual vote of 39% was barely different from her 38% in the final poll, further demonstrating that her supporters were not overrepresented in the survey.
Turnout was much larger than in recent Democratic primary contests: an unofficial 792,009, compared to 640,247 in the 2024 Senate primary and 538,857 in the 2018 gubernatorial primary. We don’t know the makeup of that surge beyond the polling results, but this turnout was considerably larger than expected.
On the substantive side, Hong’s performance was generally impressive during most of the campaign, but the late shifts from poll to vote suggest the limits of her appeal.
Finally, in our mid-July poll (July 8-16), 80% of Democratic primary voters said that it was extremely or very important to nominate a candidate who could win against the Republican in November, and electability became an increasingly common topic in the closing weeks of the campaign. And in the mid-July poll, Hong trailed Republican Tom Tiffany by 3 percentage points, whereas then-candidate Barnes led Tiffany by 4 points (this poll was conducted while Crowley was out of the race).
The chaotic changes of candidates, plus the governor’s late endorsement and increasing electability concerns, all made for a surprising endgame to the race.
Note: Below are the tables from the July 29 release showing survey results of the vote and percent undecided, by age and by ideology.
In Wisconsin, anybody can vote early by mail or in-person at an early voting site for any reason, and many people do. This is referred to, interchangeably, as “early” or “absentee” voting.
In the August 2026 primary, 25.8% of ballots were cast by mail and another 11.9% in-person at an early voting center. Thirty-eight percent of Wisconsin Democrats didn’t wait until election day to cast their ballot in the governor’s primary.
Voting early is risky in a primary election, because the nature of the contest can change a lot in the weeks before a race. The first absentee ballots were sent out in late May and early voting centers opened on July 28th. David Crowley withdrew his candidacy on July 8th. On July 17th, Sara Rodriguez dropped out and Crowley reentered. On July 30th, Mandela Barnes–then polling in second place–ended his campaign. Any voter casting a ballot before July 30th ran the risk of wasting their vote on a candidate no longer running by election day on August 11th.
Statewide, 8.5% of absentee ballots were cast before Crowley dropped out the first time. Thirteen percent were cast while Crowley was officially out of the race but Rodriguez was still in. Then, another 17.7% were cast after Crowley reentered but before Barnes dropped out. Across Wisconsin, 39% of early voters cast their ballot before the final field was set.
How many of them voted for a candidate who subsequently dropped out? Doubtlessly, some of them. According to the Associated Press on Wednesday afternoon, the three suspended campaigns (Rodriguez, Barnes, and Hughes) collectively received 68,343 votes, or 8.6% of the total. Recall that Crowley defeated Hong by about 3,800 votes.
In most places, it is impossible to tell who those early voters voted for, because their ballots are counted along with those of regular, election day voters at each individual polling place. The complete results for each ward are reported one time, including ballots from every mode of voting.
However, many larger municipalities count their early votes separately at a central count location. The City of Milwaukee is one of these. In Milwaukee, the process of counting absentee ballots often drags on late into the night, well after the election day results from each ward have been tallied and published. Because Milwaukee always has tens of thousands of absentee ballots, this means that close statewide elections can never be called until those votes are reported–a process that occurs all at once and involves some drama as elections officials (accompanied by a police escort) transfer thumb drives containing the absentee results from the central count location to the courthouse. Once the thumb drives arrive, the early votes are added to the ward totals where each voter would’ve gone had they voted on election day. This instantaneous addition of thousands of votes to Milwaukee’s total is commonly called the “ballot dump.”
The ballot dump causes much angst in Wisconsin by providing fodder for conspiracy theorists who watch Milwaukee’s late addition of votes lift Democratic candidates to victory, as happened in 2018, 2020, and 2024. In fact, state law prohibits Milwaukee’s election commission from taking steps to speed up their central count, such as pre-processing absentee ballot signatures and envelopes before election day, and Republican legislative leadership killed a bipartisan bill aimed at reforming this in 2023.
As bad as these late-night ballot updates are for confidence in our elections, they are useful for researchers like me. We can use them to measure differences between the early vote and the election day vote. The contents of the early vote ballot dump are not explicitly reported, but by subtracting the election day totals for each ward from the final, complete totals, we can see exactly how early voters cast their ballots.
Crowley led Hong by just over 1,000 votes in Milwaukee’s election day returns, and he doubled that raw vote lead once the city’s absentee ballots were added. Unlike in several previous general elections, Milwaukee’s late night ballot dump did not change the leader of the 2026 Democratic primary. The added ballots merely added to the lead he already held in AP’s running tally. When it was all said and done, the City of Milwaukee was not individually decisive in Crowley’s statewide victory. He won the state by around 3,800 votes. Of that victory margin, the City of Milwaukee contributed about 2,200 votes–half from early voters and half from election day ballots.
Votes for Crowley vs. Hong
City of Milwaukee1
vote mode
David Crowley
Francesca Hong
Crowley net
early
9,423
8,357
+1,066
in-person
28,564
27,473
+1,091
total
37,987
35,830
+2,157
1 Excludes three wards (24th, 25th, & 27th) which did not separately report election day and early votes.
Data Source: Milwaukee County Election Commission unofficial election night results posted at 10:36PM and 1:09AM. Analysis by John Johnson (johndjohnson.info).
Milwaukeeans who cast their ballots early did waste their votes at a much higher rate. This table shows the share received by each candidate listed on the ballot among early vs. election day voters.
Share of the Vote, by Vote Mode
City of Milwaukee1
Dem. Gov. candidate
early
in-person
total
David Crowley
38.7%
47.4%
44.9%
Francesca Hong
34.3%
45.6%
42.3%
Joel Brennan
5.1%
2.3%
3.1%
Kelda Roys
4.1%
3.0%
3.3%
Mandela Barnes
10.4%
0.9%
3.7%
Missy Hughes
0.3%
0.1%
0.2%
Sara Rodriguez
7.0%
0.6%
2.5%
write-in:
0.1%
0.0%
0.1%
1 Excludes three wards (24th, 25th, & 27th) which did not separately report election day and early votes.
Data Source: Milwaukee County Election Commission unofficial election night results posted at 10:36PM and 1:09AM. Analysis by John Johnson (johndjohnson.info).
Sara Rodriguez, who ended her campaign on July 17th, received 7% of early votes and only 0.6% of election day ballots. Mandela Barnes, who dropped out on July 30th, took 10.4% among early voters but just 0.9% on election day.
All told, 17.7% of early voters voted for somebody who dropped out before the election, compared to just 1.6% of election day voters. In this way, election day voters appear to have been very well informed about which candidates remained actively in the running.
People who waited to vote until election day also appear to have consolidated more behind one of the two front-runners. Joel Brennan and Kelda Roys remained in the race until the very end, but they never drew much support. Combined, 9.2% of Milwaukee’s early voters picked one of these minor candidates. This fell to 5.3% by election day.
As discussed above, Crowley received a similar number of net votes (relative to Hong) in both the election day totals and the smaller absentee totals. But in percentage terms, Crowley actually did better with early voters, among whom he beat Hong by 4.4 points, than among election day voters, among whom his margin of victory shrank to 1.8 points. By the end of the race, Milwaukee’s Democratic primary voters had thoroughly consolidated behind the two frontrunners, with Hong winning 45.6% of election day voters to Crowley’s 47.4%.
Talk about a come-from-behind victory. David Crowley’s roughly 3,200-vote, 0.4-point victory in the Wisconsin Democratic primary came after every public poll—and Crowley’s own internal survey—showed him trailing Francesca Hong by double digits in the weeks preceding the election. The late-July Marquette poll, for instance, showed Hong drawing the support of 38%, followed by 16% for Mandela Barnes and 7% for Crowley. Thirty-four percent remained undecided in that poll.
Those undecided voters apparently broke heavily for Crowley, following Barnes’s exit from the race and high-profile endorsements from politicians like Congresswoman Gwen Moore. He wound up winning the race with roughly 39.8% of the vote to Hong’s 39.4%.
It took Milwaukee’s “ballot dump”—separately tallied absentee votes added in the wee hours of Wednesday morning—to seal Crowley’s 2026 victory. But Crowley did not win his home county by an overwhelming margin. Here, he won 43.0% to Hong’s 41.5%, a considerably smaller margin of victory than he achieved in any of Milwaukee’s neighboring counties.
Crowley is no stranger to close races like this one. He won his current office, Milwaukee County Executive, by an almost equally slim margin in 2020, when he defeated State Senator Chris Larson by 0.6 points and just over 1,000 votes.
More than just a narrow margin of victory connects Crowley’s 2020 and 2026 campaigns. Consider the following two maps, which show how Crowley fared across each Milwaukee County ward in those two elections.
In both campaigns, Crowley (a moderate Democrat) faced off against a progressive challenger running clearly to his left. In 2020, this challenger was State Senator Chris Larson, whose district covers the east side of Milwaukee. In 2026, his main opponent, Francesca Hong, was a member of the Democratic Socialists of America (and endorsed by Larson).
To a remarkable degree, Hong and Larson won similar parts of Milwaukee County in their respective campaigns against Crowley.
Within the city, Crowley’s significant sources of votes in either election were the majority Black north side along with some of the more conservative, majority white neighborhoods on the city’s western fringe. Hong and Larson won everywhere else, with particular strength in the liberal strongholds between I-43 and Lake Michigan. This progressive strength also extended into adjacent suburbs including St. Francis, Shorewood, Cudahy, and South Milwaukee—all places where Crowley trailed both Hong and Larson.
However, Crowley handily won a different set of suburbs. On the north shore, he carried River Hills, Bayside, and Brown Deer. To the southwest, he won Greenfield, Greendale, Franklin, and Hales Corners. His support grew the most on the north shore between these two elections. For example, he ever-so-slightly lost Fox Point to Larson in 2020, but he defeated Hong in that wealthy suburb by more than 25 points.
In other words, Crowley reliably draws support from a seemingly contradictory set of places. In Milwaukee County, he wins the poorest wards and the richest, the most Black and the most white, the most Democratic and the most Republican.
This coalition has served Crowley well in campaigns against challengers to his left. Now, for the first time in his career, he will need to test his political skills against a Republican opponent.
Bonus map
Wisconsin’s elections are independently administered by each of its 72 counties. This means that there isn’t an official source for statewide ward-level election returns until the state Elections Commission collects and certifies them several weeks after the election. In the meantime, it is my custom to collect and standardize ward results from as many counties as practical. Here is a link to an interactive map containing the ward results I’ve gathered so far for the Democratic primary. Save the link; as I add more counties, the map will automatically display that data.