Stores Likely To Continue To Open Earlier On Thanksgiving

MINNEAPOLIS (WCCO) – We're about a month away from the unofficial start of the holiday shopping season.

Black Friday falls on Nov. 28 this year.

It's well known that Black Friday is king when it comes to holiday shopping. But it's looking more and more like Thanksgiving could be taking a bite out of Black Friday's reign.

"This is a non-stop trend. It's going to be getting, pretty much, worse and worse every single year. A lot of it has to do with competition," Dave Vang said.

Vang is a professor of finance at the University of St. Thomas.

He said this year a lot of retailers will open their doors at 6 p.m. Thanksgiving night.

As Thanksgiving sales soar, fewer shoppers are following the early morning Black Friday experience.

"I think I'd prefer that they didn't open up until early the day after Thanksgiving versus on Thanksgiving Day. So the focus stays on Thanksgiving versus getting out there to shop," shopper Jill Millette said.

But a lot of retailers believe they now have to open on the holiday to compete with their online retailers.

Vang said online shopping increases by about 10 percent each year.

So, he expects more retailers to extend their hours and to be open on holidays.

"And you're going to try and see advertising try to make family get-togethers be a shopping experience rather than a time to just get together as a family," Vang said.

And in a move to compete with online shopping, Target announced this week that it will offer free online shipping through Dec. 20 this year.

Read more
f

We and our partners use cookies to understand how you use our site, improve your experience and serve you personalized content and advertising. Read about how we use cookies in our cookie policy and how you can control them by clicking Manage Settings. By continuing to use this site, you accept these cookies.

`; function showPrivacyMessage() { document.querySelectorAll('iframe[data-source="codesnippet"], script[data-src], script[data-cmp-src]').forEach(el => { if (el.tagName === 'IFRAME') { const doc = el.contentDocument || el.contentWindow.document; // Inject external stylesheet into the iframe's const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://www.cbsnews.com/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=a1d1ebf0d76e54b63346475364aa1e5e'; 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 = '
'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i