Service Area Checker body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #f0f4f8 0%, #e0e7ff 100%); min-height: 100vh; margin: 0; display: flex; justify-content: center; align-items: center; } .container { background: #ffffff; padding: 40px; border-radius: 20px; box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); width: 90%; max-width: 700px; text-align: center; transition: transform 0.3s ease; } .container:hover { transform: translateY(-5px); } .logo { max-width: 220px; margin-bottom: 25px; transition: transform 0.3s ease; } .logo:hover { transform: scale(1.05); } h2 { color: #003087; margin: 0 0 25px; font-size: 28px; font-weight: 600; text-transform: uppercase; letter-spacing: 1.5px; background: linear-gradient(to right, #003087, #f58220); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } p { color: #555; margin-bottom: 30px; font-size: 16px; line-height: 1.5; } .input-group { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 25px; justify-content: center; align-items: center; } input { padding: 14px 20px; border: 2px solid #003087; border-radius: 30px; font-size: 16px; outline: none; transition: all 0.3s ease; min-width: 220px; background: #f9f9f9; } input:focus { border-color: #f58220; box-shadow: 0 0 8px rgba(245, 130, 32, 0.3); background: #fff; } button { padding: 14px 30px; background: linear-gradient(45deg, #f58220, #ff9f43); border: none; border-radius: 30px; color: white; font-weight: 600; font-size: 16px; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(245, 130, 32, 0.4); } button:hover { transform: translateY(-3px); background: linear-gradient(45deg, #e06e1c, #ff8c00); box-shadow: 0 6px 20px rgba(245, 130, 32, 0.6); } #result { margin-top: 25px; padding: 20px; border-radius: 15px; font-size: 18px; line-height: 1.6; transition: all 0.3s ease; border: 1px solid #ddd; } .sheboygan { background: rgba(0, 85, 184, 0.15); color: #003087; border-color: #003087; } .milwaukee { background: rgba(245, 130, 32, 0.15); color: #f58220; border-color: #f58220; } .either { background: rgba(102, 102, 102, 0.15); color: #666; border-color: #666; } .madison { background: rgba(255, 165, 0, 0.15); color: #ff8c00; border-color: #ff8c00; } .out-of-service { background: rgba(255, 0, 0, 0.15); color: #d00; border-color: #d00; } .error { background: rgba(255, 0, 0, 0.2); color: #d00; border-color: #d00; } small { font-size: 14px; display: block; margin-top: 10px; color: #777; }

Service Area Checker

Enter a zip code and/or a Wisconsin city to find the servicing office location.

// Service area definitions - easily updatable with new zip codes const serviceAreas = { madison: { zips: new Set([ "53503", "53544", "53587", "53507", "53951", "53516", "53504", "53599", "53517", "53578", "53583", "53522", "53913", "53560", "53515", "53572", "53574", "53528", "53566", "53570", "53561", "53920", "53508", "53593", "53555", "53717", "53562", "53719", "53529", "53550", "53930", "53597", "53901", "53705", "53502", "53792", "53726", "53706", "53701", "53702", "53707", "53708", "53725", "53744", "53774", "53782", "53783", "53784", "53785", "53786", "53788", "53790", "53791", "53793", "53794", "53955", "53715", "53575", "53713", "53521", "53703", "53711", "53520", "53954", "53969", "53038", "53094", "53098", "53502", "53503", "53507", "53508", "53515", "53516", "53517", "53521", "53523", "53527", "53528", "53529", "53531", "53532", "53534", "53536", "53538", "53545", "53548", "53549", "53551", "53555", "53558", "53559", "53560", "53561", "53562", "53563", "53570", "53571", "53572", "53574", "53575", "53578", "53579", "53583", "53589", "53590", "53593", "53594", "53596", "53597", "53598", "53701", "53702", "53703", "53704", "53705", "53706", "53707", "53708", "53711", "53713", "53714", "53715", "53716", "53717", "53718", "53719", "53725", "53726", "53744", "53774", "53777", "53778", "53779", "53782", "53783", "53784", "53785", "53786", "53788", "53789", "53790", "53791", "53792", "53793", "53794", "53911", "53925", "53955", "53960" ]), message: "is a Madison Area address that could be covered, but management should be contacted", style: "madison" }, milwaukee: { zips: new Set([ "53512", "53192", "53195", "53179", "53181", "53158", "53109", "53585", "53128", "53157", "53142", "53184", "53102", "53101", "53125", "53104", "53159", "53170", "53194", "53511", "53525", "53143", "53147", "53191", "53152", "53168", "53141", "53501", "53114", "53576", "53140", "53144", "53105", "53542", "53171", "53176", "53148", "53505", "53115", "53537", "53546", "53547", "53139", "53403", "53177", "53182", "53405", "53121", "53401", "53408", "53406", "53167", "53138", "53404", "53185", "53126", "53120", "53190", "53108", "53150", "53103", "53154", "53132", "53149", "53119", "53156", "53172", "53153", "53129", "53130", "53189", "53110", "53221", "53220", "53228", "53127", "53146", "53118", "53235", "53151", "53207", "53227", "53219", "53215", "53183", "53137", "53187", "53234", "53204", "53214", "53295", "53178", "53188", "53186", "53233", "53290", "53203", "53201", "53237", "53259", "53263", "53274", "53278", "53288", "53293", "53208", "53018", "53202", "53122", "53213", "53226", "53205", "53005", "53008", "53045", "53210", "53212", "53206", "53072", "53211", "53222", "53216", "53007", "53058", "53225", "53218", "53066", "53029", "53209", "53217", "53051", "53089", "53056", "53046", "53064", "53224", "53223", "53036", "53052", "53017", "53003", "53092", "53022", "53033", "53097", "53047", "53076", "53016", "53037", "53027", "53012", "53086" ]), message: "is served by our Milwaukee Office", style: "milwaukee" }, sheboygan: { zips: new Set([ "53928", "53923", "53935", "53946", "53932", "54965", "53956", "53957", "54923", "54941", "54967", "54983", "54949", "53933", "53931", "53916", "54940", "54971", "53557", "54980", "54961", "53919", "54969", "54922", "54963", "54986", "54929", "53963", "54964", "53039", "53922", "54933", "54947", "54931", "54974", "54927", "53032", "54904", "54944", "54932", "54906", "53034", "54170", "53065", "53050", "54942", "54903", "53035", "53006", "54985", "53099", "54956", "54979", "54937", "54902", "54901", "54914", "54152", "54106", "54957", "53048", "54936", "53091", "54107", "54935", "54912", "54913", "54111", "54919", "54911", "54915", "53002", "54952", "54136", "54140", "54113", "53019", "54165", "53088", "53049", "53010", "54162", "54169", "54127", "53086", "54131", "54137", "53057", "54130", "54129", "53040", "53079", "54155", "53090", "53014", "54154", "53095", "54180", "54123", "54171", "54139", "54313", "53023", "54110", "54115", "54160", "53061", "53026", "53062", "54304", "54101", "53011", "54303", "53001", "53060", "54173", "53012", "54301", "54305", "54306", "54307", "54308", "54324", "54344", "53075", "54126", "53073", "53021", "53020", "54141", "54207", "53080", "54302", "53093", "53042", "54153", "54232", "53024", "53031", "54245", "54311", "54230", "53004", "53074", "53013", "53085", "54229", "53070", "54227", "54215", "54157", "53015", "53063", "53044", "54247", "54208", "53083", "53081", "54220", "54214", "53082", "54217", "54143", "54221", "54228", "54240", "54204", "54241", "54205", "54216", "54213", "54226", "54201", "54235", "54209", "54212", "54211", "54202", "54234", "54210" ]), message: "is served by our Sheboygan Office", style: "sheboygan" } }; // Wisconsin ZIP to city mapping (partial from your table, truncated for brevity) const wisconsinZipCityMap = { "53001": "Adell", "53002": "Allenton", "53003": "Ashippun", "53004": "Belgium", "53005": "Brookfield", "53006": "Brownsville", "53007": "Butler", "53008": "Brookfield", "53010": "Campbellsport", "53011": "Cascade", "53012": "Cedarburg", "53013": "Cedar Grove", "53014": "Chilton", "53015": "Cleveland", "53016": "Clyman", "53017": "Colgate", "53018": "Delafield", "53019": "Eden", "53020": "Elkhart Lake", "53021": "Fredonia", "53022": "Germantown", "53023": "Glenbeulah", "53024": "Grafton", "53026": "Greenbush", "53027": "Hartford", "53029": "Hartland", "53031": "Hingham", "53032": "Horicon", "53033": "Hubertus", "53034": "Hustisford", "53035": "Iron Ridge", "53036": "Ixonia", "53037": "Jackson", "53038": "Johnson Creek", "53039": "Juneau", "53040": "Kewaskum", "53042": "Kiel", "53044": "Kohler", "53045": "Brookfield", "53046": "Lannon", "53047": "Lebanon", "53048": "Lomira", "53049": "Malone", "53050": "Mayville", "53051": "Menomonee Falls", "53052": "Menomonee Falls", "53056": "Merton", "53057": "Mount Calvary", "53058": "Nashotah", "53059": "Neosho", "53060": "Newburg", "53061": "New Holstein", "53062": "New Holstein", "53063": "Newton", "53064": "North Lake", "53065": "Oakfield", "53066": "Oconomowoc", "53069": "Okauchee", "53070": "Oostburg", "53072": "Pewaukee", "53073": "Plymouth", "53074": "Port Washington", "53075": "Random Lake", "53076": "Richfield", "53078": "Rubicon", "53079": "Saint Cloud", "53080": "Saukville", "53081": "Sheboygan", "53082": "Sheboygan", "53083": "Sheboygan", "53085": "Sheboygan Falls", "53086": "Slinger", "53088": "Stockbridge", "53089": "Sussex", "53090": "West Bend", "53091": "Theresa", "53092": "Mequon", "53093": "Waldo", "53094": "Watertown", "53095": "West Bend", "53097": "Mequon", "53098": "Watertown", "53099": "Woodland", "53101": "Bassett", "53102": "Benet Lake", "53103": "Big Bend", "53104": "Bristol", "53105": "Burlington", "53108": "Caledonia", "53109": "Camp Lake", "53110": "Cudahy", "53114": "Darien", "53115": "Delavan", "53118": "Dousman", "53119": "Eagle", "53120": "East Troy", "53121": "Elkhorn", "53122": "Elm Grove", "53125": "Fontana", "53126": "Franksville", "53127": "Genesee Depot", "53128": "Genoa City", "53129": "Greendale", "53130": "Hales Corners", "53132": "Franklin", "53137": "Helenville", "53138": "Honey Creek", "53139": "Kansasville", "53140": "Kenosha", "53141": "Kenosha", "53142": "Kenosha", "53143": "Kenosha", "53144": "Kenosha", "53146": "New Berlin", "53147": "Lake Geneva", "53148": "Lyons", "53149": "Mukwonago", "53150": "Muskego", "53151": "New Berlin", "53152": "New Munster", "53153": "North Prairie", "53154": "Oak Creek", "53156": "Palmyra", "53157": "Pell Lake", "53158": "Pleasant Prairie", "53159": "Powers Lake", "53167": "Rochester", "53168": "Salem", "53170": "Silver Lake", "53171": "Somers", "53172": "South Milwaukee", "53176": "Springfield", "53177": "Sturtevant", "53178": "Sullivan", "53179": "Trevor", "53181": "Twin Lakes", "53182": "Union Grove", "53183": "Wales", "53184": "Walworth", "53185": "Waterford", "53186": "Waukesha", "53187": "Waukesha", "53188": "Waukesha", "53189": "Waukesha", "53190": "Whitewater", "53191": "Williams Bay", "53192": "Wilmot", "53194": "Woodworth", "53195": "Zenda", "53201": "Milwaukee", "53202": "Milwaukee", "53203": "Milwaukee", "53204": "Milwaukee", "53205": "Milwaukee", "53206": "Milwaukee", "53207": "Milwaukee", "53208": "Milwaukee", "53209": "Milwaukee", "53210": "Milwaukee", "53211": "Milwaukee", "53212": "Milwaukee", "53213": "Milwaukee", "53214": "Milwaukee", "53215": "Milwaukee", "53216": "Milwaukee", "53217": "Milwaukee", "53218": "Milwaukee", "53219": "Milwaukee", "53220": "Milwaukee", "53221": "Milwaukee", "53222": "Milwaukee", "53223": "Milwaukee", "53224": "Milwaukee", "53225": "Milwaukee", "53226": "Milwaukee", "53227": "Milwaukee", "53228": "Milwaukee", "53233": "Milwaukee", "53234": "Milwaukee", "53235": "Saint Francis", "53237": "Milwaukee", "53259": "Milwaukee", "53263": "Milwaukee", "53274": "Milwaukee", "53278": "Milwaukee", "53288": "Milwaukee", "53290": "Milwaukee", "53293": "Milwaukee", "53295": "Milwaukee", "53401": "Racine", "53402": "Racine", "53403": "Racine", "53404": "Racine", "53405": "Racine", "53406": "Racine", "53408": "Racine", "53501": "Afton", "53502": "Albany", "53503": "Arena", "53504": "Argyle", "53505": "Avalon", "53506": "Avoca", "53507": "Barneveld", "53508": "Belleville", "53510": "Belmont", "53511": "Beloit", "53512": "Beloit", "53515": "Black Earth", "53516": "Blanchardville", "53517": "Blue Mounds", "53518": "Blue River", "53520": "Brodhead", "53521": "Brooklyn", "53522": "Browntown", "53523": "Cambridge", "53525": "Clinton", "53526": "Cobb", "53527": "Cottage Grove", "53528": "Cross Plains", "53529": "Dane", "53530": "Darlington", "53531": "Deerfield", "53532": "Deforest", "53533": "Dodgeville", "53534": "Edgerton", "53535": "Edmund", "53536": "Evansville", "53537": "Footville", "53538": "Fort Atkinson", "53540": "Gotham", "53541": "Gratiot", "53542": "Hanover", "53543": "Highland", "53544": "Hollandale", "53545": "Janesville", "53546": "Janesville", "53547": "Janesville", "53548": "Janesville", "53549": "Jefferson", "53550": "Juda", "53551": "Lake Mills", "53553": "Linden", "53554": "Livingston", "53555": "Lodi", "53556": "Lone Rock", "53557": "Lowell", "53558": "Mcfarland", "53559": "Marshall", "53560": "Mazomanie", "53561": "Merrimac", "53562": "Middleton", "53563": "Milton", "53565": "Mineral Point", "53566": "Monroe", "53569": "Montfort", "53570": "Monticello", "53571": "Morrisonville", "53572": "Mount Horeb", "53573": "Muscoda", "53574": "New Glarus", "53575": "Oregon", "53576": "Orfordville", "53577": "Plain", "53578": "Prairie Du Sac", "53579": "Reeseville", "53580": "Rewey", "53581": "Richland Center", "53582": "Ridgeway", "53583": "Sauk City", "53584": "Sextonville", "53585": "Sharon", "53586": "Shullsburg", "53587": "South Wayne", "53588": "Spring Green", "53589": "Stoughton", "53590": "Sun Prairie", "53593": "Verona", "53594": "Waterloo", "53595": "Dodgeville", "53596": "Sun Prairie", "53597": "Waunakee", "53598": "Windsor", "53599": "Woodford", "53701": "Madison", "53702": "Madison", "53703": "Madison", "53704": "Madison", "53705": "Madison", "53706": "Madison", "53707": "Madison", "53708": "Madison", "53711": "Madison", "53713": "Madison", "53714": "Madison", "53715": "Madison", "53716": "Madison", "53717": "Madison", "53718": "Madison", "53719": "Madison", "53725": "Madison", "53726": "Madison", "53744": "Madison", "53774": "Madison", "53777": "Madison", "53782": "Madison", "53783": "Madison", "53784": "Madison", "53785": "Madison", "53786": "Madison", "53788": "Madison", "53790": "Madison", "53791": "Madison", "53792": "Madison", "53793": "Madison", "53794": "Madison", "53801": "Bagley", "53802": "Beetown", "53803": "Benton", "53804": "Bloomington", "53805": "Boscobel", "53806": "Cassville", "53807": "Cuba City", "53808": "Dickeyville", "53809": "Fennimore", "53810": "Glen Haven", "53811": "Hazel Green", "53812": "Kieler", "53813": "Lancaster", "53816": "Mount Hope", "53817": "Patch Grove", "53818": "Platteville", "53820": "Potosi", "53821": "Prairie Du Chien", "53824": "Sinsinawa", "53825": "Stitzer", "53826": "Wauzeka", "53827": "Woodman", "53901": "Portage", "53910": "Adams", "53911": "Arlington", "53913": "Baraboo", "53916": "Beaver Dam", "53919": "Brandon", "53920": "Briggsville", "53922": "Burnett", "53923": "Cambria", "53924": "Cazenovia", "53925": "Columbus", "53926": "Dalton", "53928": "Doylestown", "53929": "Elroy", "53930": "Endeavor", "53931": "Fairwater", "53932": "Fall River", "53933": "Fox Lake", "53934": "Friendship", "53935": "Friesland", "53936": "Grand Marsh", "53937": "Hillpoint", "53939": "Kingston", "53940": "Lake Delton", "53941": "La Valle", "53942": "Lime Ridge", "53943": "Loganville", "53944": "Lyndon Station", "53946": "Markesan", "53947": "Marquette", "53948": "Mauston", "53949": "Montello", "53950": "New Lisbon", "53951": "North Freedom", "53952": "Oxford", "53953": "Packwaukee", "53954": "Pardeeville", "53955": "Poynette", "53956": "Randolph", "53957": "Randolph", "53958": "Reedsburg", "53959": "Reedsburg", "53960": "Rio", "53961": "Rock Springs", "53962": "Union Center", "53963": "Waupun", "53964": "Westfield", "53965": "Wisconsin Dells", "53968": "Wonewoc", "53969": "Wyocena", "54001": "Amery", "54002": "Baldwin", "54003": "Beldenville", "54004": "Clayton", "54005": "Clear Lake", "54006": "Cushing", "54007": "Deer Park", "54009": "Dresser", "54011": "Ellsworth", "54013": "Glenwood City", "54014": "Hager City", "54015": "Hammond", "54016": "Hudson", "54017": "New Richmond", "54020": "Osceola", "54021": "Prescott", "54022": "River Falls", "54023": "Roberts", "54024": "Saint Croix Falls", "54025": "Somerset", "54026": "Star Prairie", "54027": "Wilson", "54028": "Woodville", "54082": "Houlton", "54101": "Abrams", "54102": "Amberg", "54103": "Armstrong Creek", "54104": "Athelstane", "54106": "Black Creek", "54107": "Bonduel", "54110": "Brillion", "54111": "Cecil", "54112": "Coleman", "54113": "Combined Locks", "54114": "Crivitz", "54115": "De Pere", "54119": "Dunbar", "54120": "Fence", "54121": "Florence", "54123": "Forest Junction", "54124": "Gillett", "54125": "Goodman", "54126": "Greenleaf", "54127": "Green Valley", "54128": "Gresham", "54129": "Hilbert", "54130": "Kaukauna", "54131": "Freedom", "54135": "Keshena", "54136": "Kimberly", "54137": "Krakow", "54138": "Lakewood", "54139": "Lena", "54140": "Little Chute", "54141": "Little Suamico", "54143": "Marinette", "54149": "Mountain", "54150": "Neopit", "54151": "Niagara", "54152": "Nichols", "54153": "Oconto", "54154": "Oconto Falls", "54155": "Oneida", "54156": "Pembine", "54157": "Peshtigo", "54159": "Porterfield", "54160": "Potter", "54161": "Pound", "54162": "Pulaski", "54165": "Seymour", "54166": "Shawano", "54169": "Sherwood", "54170": "Shiocton", "54171": "Sobieski", "54173": "Suamico", "54174": "Suring", "54175": "Townsend", "54177": "Wausaukee", "54180": "Wrightstown", "54201": "Algoma", "54202": "Baileys Harbor", "54204": "Brussels", "54205": "Casco", "54207": "Collins", "54208": "Denmark", "54209": "Egg Harbor", "54210": "Ellison Bay", "54211": "Ephraim", "54212": "Fish Creek", "54213": "Forestville", "54214": "Francis Creek", "54215": "Kellnersville", "54216": "Kewaunee", "54217": "Luxemburg", "54220": "Manitowoc", "54221": "Manitowoc", "54226": "Maplewood", "54227": "Maribel", "54228": "Mishicot", "54229": "New Franken", "54230": "Reedsville", "54232": "Saint Nazianz", "54234": "Sister Bay", "54235": "Sturgeon Bay", "54240": "Tisch Mills", "54241": "Two Rivers", "54245": "Valders", "54246": "Washington Island", "54247": "Whitelaw", "54301": "Green Bay", "54302": "Green Bay", "54303": "Green Bay", "54304": "Green Bay", "54305": "Green Bay", "54306": "Green Bay", "54307": "Green Bay", "54308": "Green Bay", "54311": "Green Bay", "54313": "Green Bay", "54324": "Green Bay", "54344": "Green Bay", "54401": "Wausau", "54402": "Wausau", "54403": "Wausau", "54405": "Abbotsford", "54406": "Amherst", "54407": "Amherst Junction", "54408": "Aniwa", "54409": "Antigo", "54410": "Arpin", "54411": "Athens", "54412": "Auburndale", "54413": "Babcock", "54414": "Birnamwood", "54415": "Blenker", "54416": "Bowler", "54417": "Brokaw", "54418": "Bryant", "54420": "Chili", "54421": "Colby", "54422": "Curtiss", "54423": "Custer", "54424": "Deerbrook", "54425": "Dorchester", "54426": "Edgar", "54427": "Eland", "54428": "Elcho", "54429": "Elderon", "54430": "Elton", "54433": "Gilman", "54435": "Gleason", "54436": "Granton", "54437": "Greenwood", "54440": "Hatley", "54441": "Hewitt", "54442": "Irma", "54443": "Junction City", "54446": "Loyal", "54447": "Lublin", "54448": "Marathon", "54449": "Marshfield", "54450": "Mattoon", "54451": "Medford", "54452": "Merrill", "54454": "Milladore", "54455": "Mosinee", "54456": "Neillsville", "54457": "Nekoosa", "54458": "Nelsonville", "54459": "Ogema", "54460": "Owen", "54462": "Pearson", "54463": "Pelican Lake", "54464": "Phlox", "54465": "Pickerel", "54466": "Pittsville", "54467": "Plover", "54469": "Port Edwards", "54470": "Rib Lake", "54471": "Ringle", "54473": "Rosholt", "54474": "Rothschild", "54475": "Rudolph", "54476": "Schofield", "54479": "Spencer", "54480": "Stetsonville", "54481": "Stevens Point", "54482": "Stevens Point", "54484": "Stratford", "54485": "Summit Lake", "54486": "Tigerton", "54487": "Tomahawk", "54488": "Unity", "54489": "Vesper", "54490": "Westboro", "54491": "White Lake", "54492": "Stevens Point", "54493": "Willard", "54494": "Wisconsin Rapids", "54495": "Wisconsin Rapids", "54498": "Withee", "54499": "Wittenberg", "54501": "Rhinelander", "54511": "Argonne", "54512": "Boulder Junction", "54513": "Brantwood", "54514": "Butternut", "54515": "Catawba", "54517": "Clam Lake", "54519": "Conover", "54520": "Crandon", "54521": "Eagle River", "54524": "Fifield", "54525": "Gile", "54526": "Glen Flora", "54527": "Glidden", "54529": "Harshaw", "54530": "Hawkins", "54531": "Hazelhurst", "54532": "Heafford Junction", "54534": "Hurley", "54536": "Iron Belt", "54537": "Kennan", "54538": "Lac Du Flambeau", "54539": "Lake Tomahawk", "54540": "Land O Lakes", "54541": "Laona", "54542": "Long Lake", "54543": "Mc Naughton", "54545": "Manitowish Waters", "54546": "Mellen", "54547": "Mercer", "54548": "Minocqua", "54550": "Montreal", "54552": "Park Falls", "54554": "Phelps", "54555": "Phillips", "54556": "Prentice", "54557": "Presque Isle", "54558": "Saint Germain", "54559": "Saxon", "54560": "Sayner", "54561": "Star Lake", "54562": "Three Lakes", "54563": "Tony", "54564": "Tripoli", "54565": "Upson", "54566": "Wabeno", "54568": "Woodruff", "54601": "La Crosse", "54602": "La Crosse", "54603": "La Crosse", "54610": "Alma", "54611": "Alma Center", "54612": "Arcadia", "54613": "Arkdale", "54614": "Bangor", "54615": "Black River Falls", "54616": "Blair", "54618": "Camp Douglas", "54619": "Cashton", "54620": "Cataract", "54621": "Chaseburg", "54622": "Cochrane", "54623": "Coon Valley", "54624": "De Soto", "54625": "Dodge", "54626": "Eastman", "54627": "Ettrick", "54628": "Ferryville", "54629": "Fountain City", "54630": "Galesville", "54631": "Gays Mills", "54632": "Genoa", "54634": "Hillsboro", "54635": "Hixton", "54636": "Holmen", "54637": "Hustler", "54638": "Kendall", "54639": "La Farge", "54641": "Mather", "54642": "Melrose", "54643": "Millston", "54644": "Mindoro", "54645": "Mount Sterling", "54646": "Necedah", "54648": "Norwalk", "54649": "Oakdale", "54650": "Onalaska", "54651": "Ontario", "54652": "Readstown", "54653": "Rockland", "54654": "Seneca", "54655": "Soldiers Grove", "54656": "Sparta", "54657": "Steuben", "54658": "Stoddard", "54659": "Taylor", "54660": "Tomah", "54661": "Trempealeau", "54662": "Tunnel City", "54664": "Viola", "54665": "Viroqua", "54666": "Warrens", "54667": "Westby", "54668": "West Salem", "54669": "Wilton", "54670": "Wilton", "54701": "Eau Claire", "54702": "Eau Claire", "54703": "Eau Claire", "54720": "Altoona", "54721": "Arkansaw", "54722": "Augusta", "54723": "Bay City", "54724": "Bloomer", "54725": "Boyceville", "54726": "Boyd", "54727": "Cadott", "54728": "Chetek", "54729": "Chippewa Falls", "54730": "Colfax", "54731": "Conrath", "54732": "Cornell", "54733": "Dallas", "54734": "Downing", "54735": "Downsville", "54736": "Durand", "54737": "Eau Galle", "54738": "Eleva", "54739": "Elk Mound", "54740": "Elmwood", "54741": "Fairchild", "54742": "Fall Creek", "54743": "Gilmanton", "54745": "Holcombe", "54746": "Humbird", "54747": "Independence", "54748": "Jim Falls", "54749": "Knapp", "54750": "Maiden Rock", "54751": "Menomonie", "54754": "Merrillan", "54755": "Mondovi", "54756": "Nelson", "54757": "New Auburn", "54758": "Osseo", "54759": "Pepin", "54760": "Pigeon Falls", "54761": "Plum City", "54762": "Prairie Farm", "54763": "Ridgeland", "54764": "Rock Falls", "54765": "Sand Creek", "54766": "Sheldon", "54767": "Spring Valley", "54768": "Stanley", "54769": "Stockholm", "54770": "Strum", "54771": "Thorp", "54772": "Wheeler", "54773": "Whitehall", "54774": "Chippewa Falls", "54801": "Spooner", "54805": "Almena", "54806": "Ashland", "54810": "Balsam Lake", "54812": "Barron", "54813": "Barronett", "54814": "Bayfield", "54816": "Benoit", "54817": "Birchwood", "54819": "Bruce", "54820": "Brule", "54821": "Cable", "54822": "Cameron", "54824": "Centuria", "54826": "Comstock", "54827": "Cornucopia", "54828": "Couderay", "54829": "Cumberland", "54830": "Danbury", "54832": "Drummond", "54835": "Exeland", "54836": "Foxboro", "54837": "Frederic", "54838": "Gordon", "54839": "Grand View", "54840": "Grantsburg", "54841": "Haugen", "54842": "Hawthorne", "54843": "Hayward", "54844": "Herbster", "54845": "Hertel", "54846": "High Bridge", "54847": "Iron River", "54848": "Ladysmith", "54849": "Lake Nebagamon", "54850": "La Pointe", "54853": "Luck", "54854": "Maple", "54855": "Marengo", "54856": "Mason", "54857": "Mikana", "54858": "Milltown", "54859": "Minong", "54861": "Odanah", "54862": "Ojibwa", "54864": "Poplar", "54865": "Port Wing", "54867": "Radisson", "54868": "Rice Lake", "54870": "Sarona", "54871": "Shell Lake", "54872": "Siren", "54873": "Solon Springs", "54874": "South Range", "54875": "Springbrook", "54876": "Stone Lake", "54880": "Superior", "54888": "Trego", "54889": "Turtle Lake", "54890": "Wascott", "54891": "Washburn", "54893": "Webster", "54895": "Weyerhaeuser", "54896": "Winter", "54901": "Oshkosh", "54902": "Oshkosh", "54903": "Oshkosh", "54904": "Oshkosh", "54906": "Oshkosh", "54909": "Almond", "54911": "Appleton", "54912": "Appleton", "54913": "Appleton", "54914": "Appleton", "54915": "Appleton", "54919": "Appleton", "54921": "Bancroft", "54922": "Bear Creek", "54923": "Berlin", "54926": "Big Falls", "54927": "Butte Des Morts", "54928": "Caroline", "54929": "Clintonville", "54930": "Coloma", "54931": "Dale", "54932": "Eldorado", "54933": "Embarrass", "54935": "Fond Du Lac", "54936": "Fond Du Lac", "54937": "Fond Du Lac", "54940": "Fremont", "54941": "Green Lake", "54942": "Greenville", "54943": "Hancock", "54944": "Hortonville", "54945": "Iola", "54946": "King", "54947": "Larsen", "54948": "Leopolis", "54949": "Manawa", "54950": "Marion", "54952": "Menasha", "54956": "Neenah", "54957": "Neenah", "54960": "Neshkoro", "54961": "New London", "54962": "Ogdensburg", "54963": "Omro", "54964": "Pickett", "54965": "Pine River", "54966": "Plainfield", "54967": "Poy Sippi", "54968": "Princeton", "54969": "Readfield", "54970": "Redgranite", "54971": "Ripon", "54974": "Rosendale", "54976": "Saxeville", "54977": "Scandinavia", "54978": "Tilleda", "54979": "Van Dyne", "54980": "Waukau", "54981": "Waupaca", "54982": "Wautoma", "54983": "Weyauwega", "54984": "Wild Rose", "54985": "Winnebago", "54986": "Winneconne" }; // Reverse mapping: city to array of zips const cityToZips = Object.entries(wisconsinZipCityMap).reduce((acc, [zip, city]) => { const lowerCity = city.toLowerCase(); acc[lowerCity] = acc[lowerCity] || []; acc[lowerCity].push(zip); return acc; }, {}); // Helper function to determine service area from zip function getServiceArea(zip) { const isMadison = serviceAreas.madison.zips.has(zip); const isMilwaukee = serviceAreas.milwaukee.zips.has(zip); const isSheboygan = serviceAreas.sheboygan.zips.has(zip); if (isMadison) return "madison"; if (isMilwaukee && isSheboygan) return "either"; if (isMilwaukee) return "milwaukee"; if (isSheboygan) return "sheboygan"; return "out-of-service"; } // Helper function to capitalize strings function capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1); } // Helper function to format location string function formatLocation(zip, city, zipCity) { if (!zip) return capitalize(city); if (!city) return `Zip ${zip}`; return zipCity.toLowerCase() === city.toLowerCase() ? `${capitalize(city)} (zip ${zip})` : `Zip ${zip} (${zipCity})`; } // Helper function to get service areas for a city's zips function getCityServiceAreas(cityZips) { const areas = new Set(); cityZips.forEach(zip => { const area = getServiceArea(zip); if (area !== "out-of-service") areas.add(area); }); if (areas.size === 0) return "out-of-service"; if (areas.size > 1 && areas.has("milwaukee") && areas.has("sheboygan")) return "either"; return areas.values().next().value; } // Main function to check service area function checkServiceArea() { const zip = document.getElementById("zipInput").value.trim(); const city = document.getElementById("cityInput").value.trim(); const resultDiv = document.getElementById("result"); resultDiv.className = ""; resultDiv.innerHTML = ""; // Input validation if (!zip && !city) { resultDiv.innerHTML = "Please enter a zip code and/or a city to proceed."; resultDiv.classList.add("error"); return; } if (zip && !/^\d{5}$/.test(zip)) { resultDiv.innerHTML = "Please enter a valid 5-digit zip code."; resultDiv.classList.add("error"); return; } if (city && !cityToZips[city.toLowerCase()]) { resultDiv.innerHTML = `${capitalize(city)} is not recognized as a Wisconsin city. Please check spelling or confirm it�s in Wisconsin.`; resultDiv.classList.add("error"); return; } let serviceArea, location, extraMessage = ""; const zipCity = zip ? wisconsinZipCityMap[zip] : null; const commercialNote = "
For significant commercial projects, please vet with sales or management."; if (zip && !city) { // Zip only: Show service area and possible cities if (!zipCity) { resultDiv.innerHTML = `Zip ${zip} is not recognized in our Wisconsin database.`; resultDiv.classList.add("error"); return; } serviceArea = getServiceArea(zip); const cities = Object.entries(wisconsinZipCityMap) .filter(([z, _]) => z === zip) .map(([_, c]) => capitalize(c)) .join(", "); location = `Zip ${zip}`; extraMessage = `
Possible cities: ${cities}`; } else if (city && !zip) { // City only: Show service areas and possible zips const cityZips = cityToZips[city.toLowerCase()]; serviceArea = getCityServiceAreas(cityZips); location = capitalize(city); const servicedZips = cityZips.filter(zip => getServiceArea(zip) !== "out-of-service").join(", "); extraMessage = `
Possible zip codes: ${cityZips.join(", ")}${servicedZips ? "
Serviced zips: " + servicedZips : ""}
`; } else { // Both zip and city: Show service area based on zip if (!zipCity) { resultDiv.innerHTML = `Zip ${zip} is not recognized in our Wisconsin database.`; resultDiv.classList.add("error"); return; } serviceArea = getServiceArea(zip); location = formatLocation(zip, city, zipCity); if (zipCity.toLowerCase() !== city.toLowerCase()) { extraMessage = `
Note: ${capitalize(city)} doesn�t match zip ${zip} (${zipCity}) - using zip for service area.`; } } // Output generation if (serviceArea === "either") { resultDiv.innerHTML = `${location} can be served by either our Sheboygan or Milwaukee Office${extraMessage}${commercialNote}`; resultDiv.classList.add("either"); } else if (serviceArea === "out-of-service") { resultDiv.innerHTML = `${location} is probably outside our service area${extraMessage}
For significant commercial projects, please vet with sales or management.`; resultDiv.classList.add("out-of-service"); } else { const { message, style } = serviceAreas[serviceArea]; resultDiv.innerHTML = `${location} ${message}${extraMessage}${commercialNote}`; resultDiv.classList.add(style); } } // Event listeners for Enter key ["zipInput", "cityInput"].forEach(id => { document.getElementById(id).addEventListener("keypress", event => { if (event.key === "Enter") checkServiceArea(); }); });

Our Process

When disaster strikes, you can count on Kelmann. Learn more about how we work together.

LET’S WORK TOGETHER

Team Kelmann

Join our priority program; we’ll create an emergency response plan for your property.

JOIN THE TEAM

Insurance

We’ll walk with you through the insurance process, acting as your advocate and partner.

LEARN MORE

The entire team at Kelmann was extremely professional, responsive and truly provided the peace of mind we were looking for after we found our master bathroom and basement flooded. They not only responded right away, but gave us the peace of mind that everything would be resolved.

William G.

Can’t say enough good things about this company and the people who work there! Specifically, Bill G. and Austin B. did an exceptional job for us. They definitely went the extra mile! These guys are professional, friendly, knowledgeable and so easy to work with.

Cindie Z.

Our insurance company (USAA) has Kelmann as their top-rated vendor in the Southeastern Wisconsin area for a reason – they are exceptional. We are through phase 1 of a project and the experience so far has been great!

Ken P.

I cannot say enough good things about this company. From start to finish, they were professional, courteous, and compassionate. They worked well with my insurance company and provided me with a finished product that far exceeded my expectations. I look forward to working with them in the near future.

Casey F.

Having a truck run into the front of my house was an unexpected event to say the least. I could not have been happier with the service Kelmann Restoration provided. I would highly recommend Kelmann Restoration!

Daniel P