Election Day has come and gone, and Boston has elected its first new mayor in a generation. Congratulations to Mayor-elect Marty Walsh, who prevailed by a 4-point margin, very close to what the final public poll found the Friday before the election. Our poll, conducted in mid-October, was the first to show a tightening race, with City Councillor John Connolly clinging to a 2-point lead. This chart from the Huffington Post shows Walsh closing the gap:
// <![CDATA[
document.write('http://elections.huffingtonpost.com/pollster/embed/2013-boston-mayor-connolly-vs-walsh#!maxdate=2013-11-13&estimate=official‘); if (location.host === “m.huffpost.com”) { jQuery(‘iframe[src^=”http://elections.huffingtonpost.com/pollster”%5D&#8217;).parent().each(function() { if (jQuery(this).hasClass(‘flex-video’)) { jQuery(this)[0].style.height = ‘400px’; } }); }
// ]]>
Despite the trend in the public polling, strong turnout early on Election Day in Beacon Hill, the Back Bay, Chinatown, and the Waterfront suggested a path to victory for Connolly. But as the day wore on, other wards began to turn out strongly, driven in part by Walsh’s excellent ground game. In the end, it was Walsh, not Connolly, who was able to expand from his base of support in South Boston and coastal Dorchester into the center of the city. Walsh, who had touted the endorsements of his former rivals Felix Arroyo, Charlotte Golar Richie and John Barros, carried most of the minority-majority precincts in the city, including Roxbury, Mattapan and, crucially, vote-rich Hyde Park.
We at MPG were busy Election Day, analyzing the turnout as it was reported and trying to predict what it might mean for the final outcome. And when the final results were posted, we mapped them to show who had won each precinct and by how much. We’ve collected our tweets from those two busy days below. We hope those looking to understand what happened in Boston’s first open mayoral election in a generation will find them useful.

!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?’http’:’https’;if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+”://platform.twitter.com/widgets.js”;fjs.parentNode.insertBefore(js,fjs);}}(document,”script”,”twitter-wjs”);