91³Ô¹ÏÍø

Watch CBS News

Monroe County alert system glitch causes confusion during tornado warning

Early Wednesday morning, residents in Monroe County, Michigan, received countless alerts of a tornado warning urging them to seek shelter. Minutes later, another notification was sent with the all clear.

screenshot-2026-04-15-174910.png
CBS Detroit

"All night long, just kept going off. It was so annoying. Like nonstop," said Monroe resident Justin Redmon.

The back and forth caused quite a lot of confusion across the county.

"When we got up this morning, we had at least, I'm thinking, 40 calls," Monroe resident Sue Coseo said.

Residents were flooded with multiple phone calls, emails and text messages with an alert from the Monroe County Alert Notification System between 2 a.m. and 3 a.m.

screenshot-2026-04-15-174941.png
CBS Detroit

"In that instance, it becomes annoying, it becomes alarming, and also you get the chicken little syndrome, like it's not really a disaster, it's not really an emergency," said Monroe County Interim Emergency Management Director Brad Smith.

Smith tells CBS News Detroit that although a tornado never touched down, weather conditions made it possible, which prompted the alert, but there was a glitch in the system.

"We're working with the vendor to find out exactly what the situation, what the problem was, so that if it happens again, we can stop it or prevent it from being twenty, thirty, forty phone calls," Smith said.

Smith says that since the malfunction, many people have removed these notifications.

screenshot-2026-04-15-175038.png
CBS Detroit

"I'm asking people not to unsubscribe for the simple fact that this was hopefully a one-and-done mistake," said Smith.

Smith says these are lifesaving alerts that he encourages everyone to have during severe weather.

"The importance of getting these messages is very simple. Time. When the alerts go out, sometimes you have minutes, sometimes it's seconds. I'd rather be notified by mistake than not notified at all," he said.

Smith says if you're a resident who unsubscribed from these alerts and would like to re-subscribe, you can do that on .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });