and runs during HTML parse, but hubspotutk is set by js.hs-analytics.net, measured loading at ~834ms. On a first visit the cookie does not exist yet, so a single read returns nothing and the visitor gets no external ID at all — and a first visit is exactly what an ad click is. So poll briefly until HubSpot sets it. The SDK loads lazily (~4.5s) and replays a queue, so an init queued a second or two in still lands before any events are transmitted. */ (function attachExternalId() { var attempts = 0; var MAX_ATTEMPTS = 40; /* 40 x 200ms = 8s, then give up quietly */ var timer = null; function tryAttach() { var raw = getExternalId(); if (!raw) { if (++attempts >= MAX_ATTEMPTS && timer) clearInterval(timer); return; } if (timer) clearInterval(timer); sha256Hex(raw).then(function (hash) { oaiq("init", { user: { external_id_sha256: hash } }); }).catch(function () {}); } tryAttach(); /* returning visitor: immediate */ if (!getExternalId()) timer = setInterval(tryAttach, 200); })(); /* --------------------------------------------------------------------------- 2. Load the SDK off the critical path Whichever comes first: the main thread going idle after load, or the first sign of real user intent. No preconnect on purpose — a TLS handshake during LCP for a script we deliberately deferred is a net loss. Measured on clickpost.ai: load event 3614ms, SDK fetched 4508ms. ------------------------------------------------------------------------ */ var loaded = false; var INTENT = ["pointerdown", "keydown", "scroll"]; function loadSdk() { if (loaded) return; loaded = true; INTENT.forEach(function (t) { removeEventListener(t, loadSdk, { passive: true }); }); var s = document.createElement("script"); s.src = SDK; s.async = true; s.fetchPriority = "low"; document.head.appendChild(s); } INTENT.forEach(function (t) { addEventListener(t, loadSdk, { passive: true, once: true }); }); addEventListener("load", function () { window.requestIdleCallback ? requestIdleCallback(loadSdk, { timeout: 2500 }) : setTimeout(loadSdk, 1500); }, { once: true }); /* --------------------------------------------------------------------------- 3. Conversion id sha256(lowercase(email) + "|" + formId + "|" + ISO-hour), first 20 hex, "lead_" prefix. - email lowercased/trimmed so casing does not fork the id - formId keeps two different forms in the same hour from colliding - the hour bucket is only the server's fallback; the id computed here is sent to the relay verbatim, so the two paths cannot disagree even when a submit straddles an hour boundary Ads Manager's own sample omits event_id. We send it so the pixel event and the relay event collapse into one conversion instead of counting twice. ------------------------------------------------------------------------ */ function buildEventId(email, formId) { var seed = [ String(email || "").trim().toLowerCase(), String(formId || ""), new Date().toISOString().slice(0, 13) ].join("|"); return crypto.subtle.digest("SHA-256", new TextEncoder().encode(seed)).then(function (buf) { var hex = Array.prototype.map.call(new Uint8Array(buf), function (b) { return b.toString(16).padStart(2, "0"); }).join(""); return "lead_" + hex.slice(0, 20); }); } /* Guards a re-fire from the history.pushState that book-a-demo-core.js runs after submit, and from back-navigation onto the same state. */ function firedOnce(id) { try { if (sessionStorage.getItem("oaiq_" + id)) return true; sessionStorage.setItem("oaiq_" + id, "1"); return false; } catch (e) { return false; /* private mode / blocked storage: fire rather than lose it */ } } /* Path 2. keepalive lets the request finish even if the page navigates away. Failures are swallowed deliberately: a reporting call must never surface an error to someone who just submitted a form. The relay hashes the email server-side into user.emails_sha256 and adds the caller's IP and user agent, so this event carries the same match signals the pixel gets for free. */ function sendToRelay(email, formId, eventType, eventId) { try { var payload = { token: RELAY_TOKEN, email: email, form_id: formId || "", event_type: eventType, event_id: eventId, /* verbatim, so both paths always match */ source_url: location.href }; var oppref = getOppref(); if (oppref) payload.oppref = oppref; var externalId = getExternalId(); if (externalId) payload.external_id = externalId; fetch(RELAY_URL, { method: "POST", keepalive: true, headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }).catch(function () {}); } catch (e) {} } /* Capture the email while the form is still on the page. onFormSubmitted does not reliably carry submissionValues, and by then the form may be removed. */ var lastEmail = ""; document.addEventListener("submit", function (e) { var f = e.target; if (!f || !f.querySelector) return; var i = f.querySelector('input[name="email"], input[type="email"]'); if (i && i.value) lastEmail = i.value; }, true); /* Every HubSpot form on the site reports through this one message event, so no module or theme JS needs editing to add coverage. */ window.addEventListener("message", function (e) { var d = e.data; if (!d || d.type !== "hsFormCallback" || d.eventName !== "onFormSubmitted") return; var email = (d.data && d.data.submissionValues && d.data.submissionValues.email) || lastEmail; if (!email) return; /* without an email there is no stable id to dedupe on */ var eventType = EVENT_BY_FORM[d.id] || EVENT_DEFAULT; buildEventId(email, d.id).then(function (id) { if (firedOnce(id)) return; oaiq("measure", eventType, { type: DATA_TYPE }, { event_id: id }); /* path 1 */ sendToRelay(email, d.id, eventType, id); /* path 2 */ }); }); })();

91ÊÓÆµ

Assess Your Post-Purchase Brand Readiness Start Assessment

Home > Blog >

Holiday Retail Sales in the US: What Brands Need to Know in 2026

Holiday Retail Sales in the US: What Brands Need to Know in 2026

Manjusha Pal
By Manjusha Pal
Sathish Loganathan
Reviewed by This article has been thoroughly reviewed, fact-checked, and compiled using comprehensive, up-to-date information provided by ClickPost — a trusted authority in logistics and eCommerce shipping solutions. Our editorial process ensures accuracy, relevance, and reliability for our readers. Sathish Loganathan

Ready to delight customers after checkout?

Trusted by 600+ brands

In this blog

    TL;DR Summary

    • US holiday retail sales (November to December core retail, as defined by the National Retail Federation) crossed $1 trillion for the first time in 2025.

    • Based on the CNBC/NRF Retail Monitor, holiday sales grew 4.1% over 2024, landing near the top of NRF’s 3.7% to 4.2% forecast range and just above the trillion-dollar mark.

    • For 2026, NRF projects full-year retail sales growth of 4.4% to $5.6 trillion, in a report developed with Oxford Economics.

    • NRF has not yet published a standalone 2026 holiday-season dollar figure, so treat any 2026 holiday number as an extrapolation rather than an official projection.

    Key pointers

    • The long-run holiday curve slopes upward. Core holiday sales rose from about $567.6 billion in 2012 to a record above $1 trillion in 2025.

    • October buying events continue to pull demand forward. Retailers who stage promotions early tend to smooth peak-week pressure on fulfillment.

    • Watch consumer prices, tariff-driven cost pressure, and federal spending disruptions. A government shutdown around the holidays can delay federal pay and reduce private-sector income, with the latter weighing most heavily on lower-income households.

    • Use NRF economic modeling alongside your own store-level and channel data to tune buys and protect margin, rather than relying on any single headline figure.

    Introduction

    The holiday quarter is a stress test for the retail sector. When brands talk about holiday retail sales in the US, they usually mean the November-to-December core-retail window tracked by the National Retail Federation (NRF), which excludes automobile dealers, gasoline stations, and restaurants. From 2012 to 2024, core holiday sales climbed from roughly (Oberlo, restating NRF data). By , 2024 core holiday sales reached $994.1 billion.

    That climb continued into 2025. NRF forecast the season would cross the trillion-dollar line for the first time, and . For leaders planning 2026 inventory, media, and staffing, the useful question is no longer whether the milestone gets hit. It is the parts of the basket that hold up when sentiment is soft and prices are high.

    Key highlights

    • 2025 was the first trillion-dollar holiday season. Core holiday sales grew 4.1% over 2024, near the top of .

    • A record over the five-day Thanksgiving-to-Cyber-Monday weekend in 2025, with online shoppers up about 9% year over year.

    • in 2025. Physical stores still accounted for most spending through the early weeks of the season.

    • For 2026, to $5.6 trillion, citing income growth, household balance sheets, and labor-market stability as the main drivers.

    • Seasonal hiring cooled. Research projected , down from 442,000 the prior year, consistent with a slower-paced labor market.

    Holiday retail sales: the 2012 to 2025 pattern and the 2026 outlook

    NRF defines the holiday period as November 1 to December 31 and strips out auto dealers, gas stations, and restaurants to focus on core retail. The series shows steady growth for most of the 2010s, two outsized pandemic-era years, and a return to a more normal pace since.

    A decade of holiday retail: from steady climb to pandemic surge and back

    For much of the 2010s, annual holiday growth , suggesting a healthy but predictable consumer. Two years break the pattern. The pandemic-era 2020 season was lifted by stimulus payments and a fast shift to online buying, and as households spent accumulated savings.

    Since that peak, growth has settled back toward pre-pandemic rates, though on a much higher nominal base. , up 4.3%, and 2025 pushed the total above $1 trillion for the first time.

    NRF core holiday sales by year

    Year Sales (USD billions) Annual change Commentary
    2012 567.6 0.026 Restated baseline; steady pre-pandemic growth.
    2017 678.9 0.05 Strong pre-pandemic year.
    2019 716.7 0.037 Last full year before the pandemic.
    2020 ~781 0.09 Pandemic surge 1 (stimulus, channel shift).
    2021 ~886.7 0.124 Pandemic surge 2 (reopening, peak growth).
    2022 ~961 0.047 Return to a normal rate at higher prices.
    2024 976.1 0.043 Stabilization is just short of $1 trillion.
    2025 Above 1,000 0.041 First trillion-dollar holiday season (Retail Monitor).

    Note: figures blend NRF press-release actuals with the restated Oberlo series, which is why some values carry a tilde. The 2020 and 2021 growth rates shown here follow the restated series; NRF’s final press releases reported 8.2% for 2020 and 14.1% for 2021 ($886.7 billion). Reconcile to a single source before republishing. The source data omits 2023 and should add it if a clean figure is available.

    Sources: , , , , , , , ,

    2026 outlook

    NRF issued its 2026 forecast in partnership with Oxford Economics, projecting full-year retail sales growth of 4.4% to $5.6 trillion. That is above the roughly 3.6% average annual growth NRF cites for the last decade (excluding the atypical 2020 to 2022 stretch).

    The forecast is nominal, but NRF expects goods inflation to stay in a lower band, so a meaningful share of the projected growth may reflect real gains rather than price increases.

    Metric Value Notes
    2026 full-year retail sales (NRF forecast) $5.6 trillion Nominal, core retail; developed with Oxford Economics.
    2026 YoY growth (vs. 2025) 4.40% Above the ~3.6% ten-year average, excluding 2020 to 2022.
    Main supports Income growth, household balance sheets, labor stability NRF flags these as more predictive than sentiment.
    Watch items Tariffs, goods inflation, geopolitical risk NRF notes it may reforecast if conditions shift.

    NRF publishes a full-year 2026 number, not a standalone 2026 holiday-season dollar figure. Any 2026 holiday-specific projection you cite should be labeled as an internal extrapolation.

    Sources: — NRF forecasts 2026 retail sales to grow 4.4% to $5.6T (with Oxford Economics). — NRF + Oxford Economics: 2026 outlook drivers (income, balance sheets, labor stability).

    What the pattern means for buyers

    The long arc points to broad-based demand that has absorbed inflation and a slower post-2021 pace without breaking. For most brands, the practical read is margin discipline, not top-line anxiety: targeted promotions and smarter fulfillment tend to convert holiday demand more profitably than blanket discounting. Staffing to a realistic traffic forecast matters as much as the promotion calendar, since over-hiring erodes the same margin the season is meant to protect.

    What is driving the curve

    Several economic indicators shape each holiday season.

    1. Income and jobs: Wage growth that outpaces inflation and a stable labor market underpin consumer spending. Where private-sector income softens, discretionary categories pull back first.

    2. Prices and value: Elevated prices push shoppers toward deals. Promotions have moved earlier, with October buying events capturing wallets ahead of the peak weeks.

    3. Channel mix: Online sales continue to rise during the season (digital grew by about 7% in 2025). Brands often test offers online, then roll out proven bundles in stores.

    4. Policy noise: Tariff uncertainty and any federal government shutdown that delays federal pay can temporarily dampen demand, with the sharpest effect on lower-income households.

    5. Confidence and behavior: Sentiment shifts affect basket mix. NRF notes that sentiment has been historically disconnected from actual spending, so value items, essentials, and small luxuries often hold up even when confidence readings are weak.

    What NRF leadership signals

    Guidance from the trade body helps calibrate expectations, though it reads as directional rather than precise.

    • NRF President and CEO Matthew Shay framed the 2025 season around consumers who are cautious in sentiment yet fundamentally strong and said December data landed the season near the top of NRF’s forecast. His practical point for retailers: stay promotional but disciplined.

    • NRF Chief Economist Mark Mathews has emphasized income growth, manageable debt-service ratios, and more than two years of real wage gains as the reasons the base case stays positive, while flagging tariffs and geopolitical risk as the main threats to watch.

    Operational readiness: turning data into capacity

    A forecast only matters if it turns into sell-through. A few tactics that tend to hold up:

    • Plan for the peak. Use the NRF calendar to shape labor and logistics. Stage stores earlier, then flex staffing based on point-of-sale data confirming demand. Note that a late Thanksgiving pushed Cyber Monday into December 2025, shifting where the peak lands week to week.

    • Protect value perception. Deploy bundles and price locks that preserve margin while signaling fairness, rather than deep across-the-board cuts.

    • Segment by income. Lower-income households trim discretionary items first. Build entry-price alternatives so you keep those baskets without discounting your whole line.

    • Scenario-plan policy risk. If a shutdown or tariff escalation looms, model a slower pace in affected regions and categories and adjust buys to avoid overstock you have to clear in January.

    • Measure what matters. Track sales mix, basket size, and service SLAs together. These tell you sooner than headline totals whether demand is holding and where carryover risk is building.

    Closing thoughts: running at the speed of the calendar

    The holiday quarter is where plans meet reality. The decade-long record shows stepwise expansion, interrupted but not broken by shocks, and 2025 confirmed the first trillion-dollar season. For 2026, NRF’s 4.4% full-year outlook points to another above-average year, with the usual caveats around tariffs and geopolitics.

    NRF's signal is measured optimism: keep value clear, keep service reliable, and staff to a forecast you can defend. Brands that read their own channel data alongside NRF’s modeling and that stay ready to flex if federal spending wobbles are better positioned to protect margin while meeting demand.

    For a sense of how much of that demand now runs through digital channels, see what percentage of holiday shopping happens online.

    Frequently asked questions

    How much did US holiday retail sales total in 2025?

    Core holiday sales (November 1 to December 31, excluding auto dealers, gas stations, and restaurants) grew 4.1% over 2024, according to the CNBC/NRF Retail Monitor, crossing $1 trillion for the first time. That landed near the top of NRF’s 3.7% to 4.2% forecast range.

    What is NRF's forecast for retail sales in 2026?

    NRF projects full-year retail sales growth of 4.4% in 2025, reaching $5.6 trillion, using a model developed with Oxford Economics. That is above the roughly 3.6% ten-year average, excluding the atypical 2020-2022 period. NRF has not published a separate dollar figure for the 2026 holiday season.

    How does NRF define the holiday shopping season?

    NRF defines it as the period from November 1 through December 31 and measures core retail, which excludes automobile dealers, gasoline stations, and restaurants. This is why NRF’s totals differ from broader Census Bureau retail figures.

    How many people shopped over Thanksgiving weekend in 2025?

    A record 202.9 million consumers shopped during the five-day window from Thanksgiving Day through Cyber Monday. In-store shoppers rose about 3% to 129.5 million, and online shoppers rose about 9% to 134.9 million.

    How much did online holiday shopping grow in 2026?

    Digital sales during the 2025 holiday season rose by about 7%. Physical stores still accounted for most spending through the early weeks of the season, so the channel picture is a shift in mix rather than a wholesale move online.

    How much did shoppers plan to spend per person in 2026?

    An NRF survey conducted by Prosper Insights & Analytics found that consumers planned to spend an average of $890.49 per person on gifts, food, decorations, and other seasonal items. That was the second-highest figure in the survey’s 23-year history. This is a survey-based planning number, separate from the sales forecast.

    How many seasonal workers did retailers hire for the 2026 season?

    NRF projected 265,000 to 365,000 seasonal hires for 2025, down from 442,000 the year before. The lower range reflects a slower-paced labor market and hiring that continues to shift earlier to support October events.

    Can a government shutdown affect holiday sales?

    It can, at the margins. A shutdown that delays federal pay reduces private-sector income and tends to weigh most on lower-income households and discretionary categories. NRF has said much of the impact is likely temporary and tends to recover once the disruption ends.

    Why do NRF numbers differ from other holiday sales figures I see?

    NRF uses its own core-retail definition and, for its monthly Retail Monitor, anonymized credit and debit card data from Affinity Solutions rather than survey responses. That data isn't revised monthly or annually, so it can differ from Census Bureau estimates and third-party trackers that measure different baskets.

    What should brands prioritize operationally for the 2026 holiday season?

    Stage stores and staffing to a realistic traffic forecast, move promotions earlier to smooth peak-week fulfillment, protect margin with bundles and price locks rather than blanket discounts, and scenario-plan for tariff or shutdown disruptions so you avoid overstock you have to clear in January.

    The Post-Purchase Experience Platform

    Momentum Leader - G2 Users Most Likely To Recommend - G2 Best Results Mid-Market - G2
    . window.disableHubSpotCookieBanner = true; function killNative() { var n = document.getElementById("hs-eu-cookie-confirmation"); if (n && n.parentNode) { n.parentNode.removeChild(n); return true; } return false; } killNative(); if (window.MutationObserver) { var mo = new MutationObserver(function () { killNative(); }); mo.observe(document.documentElement, { childList: true, subtree: true }); setTimeout(function () { mo.disconnect(); }, 15000); } var COOKIE = "cp_cookie_consent"; var EU = ["at","be","bg","hr","cy","cz","dk","ee","fi","fr","de","gr","hu","ie","it","lv","lt","lu","mt","nl","pl","pt","ro","sk","si","es","se","gb","uk","is","li","no","ch"]; function readCookie(nm) { var m = document.cookie.match(new RegExp("(?:^|; )" + nm + "=([^;]*)")); return m ? decodeURIComponent(m[1]) : null; } function writeCookie(nm, val, days) { var d = new Date(); d.setTime(d.getTime() + (days * 864e5)); document.cookie = nm + "=" + encodeURIComponent(val) + ";expires=" + d.toUTCString() + ";path=/;SameSite=Lax" + (location.protocol === "https:" ? ";Secure" : ""); } function stored() { var raw = readCookie(COOKIE); if (!raw) return null; try { var o = JSON.parse(raw); if (typeof o.analytics === "boolean") return o; } catch (e) {} return null; } function apply(state, revoke) { window._hsp = window._hsp || []; window._hsp.push(["setHubSpotConsent", { analytics: !!state.analytics, advertisement: !!state.advertisement, functionality: !!state.functionality }]); if (revoke && !state.analytics && !state.advertisement && !state.functionality) { window._hsp.push(["revokeCookieConsent"]); } window.dataLayer = window.dataLayer || []; window.dataLayer.push({ event: "cp_cookie_consent", cp_consent_analytics: !!state.analytics, cp_consent_advertisement: !!state.advertisement, cp_consent_functionality: !!state.functionality }); document.documentElement.setAttribute("data-cp-consent", "set"); } function inScope(banner) { if (banner.getAttribute("data-scope") !== "eu_only") return true; var geo = (document.body.getAttribute("data-geo_location") || "").toLowerCase(); if (!geo) return true; return EU.indexOf(geo) !== -1; } function init(banner) { var days = parseInt(banner.getAttribute("data-days"), 10) || 180; var prefs = banner.querySelector("[data-cpcb-prefs]"); var compact = banner.querySelector('[data-cpcb-actions="compact"]'); var expanded = banner.querySelector('[data-cpcb-actions="expanded"]'); var toggles = banner.querySelectorAll("[data-cpcb-toggle]"); function show() { banner.hidden = false; requestAnimationFrame(function () { banner.classList.add("is-visible"); }); } function hide() { banner.classList.remove("is-visible"); setTimeout(function () { banner.hidden = true; }, 300); } function collapse() { if (!prefs) return; prefs.hidden = true; if (expanded) expanded.hidden = true; if (compact) compact.hidden = false; } function expand() { if (!prefs) return; prefs.hidden = false; if (compact) compact.hidden = true; if (expanded) expanded.hidden = false; } function paint(state) { Array.prototype.forEach.call(toggles, function (t) { var key = t.getAttribute("data-cpcb-toggle"); if (key === "necessary") { t.setAttribute("aria-checked", "true"); return; } t.setAttribute("aria-checked", state[key] ? "true" : "false"); }); } function fromToggles() { var state = { analytics: false, advertisement: false, functionality: false }; Array.prototype.forEach.call(toggles, function (t) { var key = t.getAttribute("data-cpcb-toggle"); if (key in state) state[key] = t.getAttribute("aria-checked") === "true"; }); return state; } function commit(state, revoke) { writeCookie(COOKIE, JSON.stringify({ analytics: !!state.analytics, advertisement: !!state.advertisement, functionality: !!state.functionality, v: 1, ts: Date.now() }), days); apply(state, revoke); hide(); } Array.prototype.forEach.call(toggles, function (t) { if (t.disabled) return; t.addEventListener("click", function () { t.setAttribute("aria-checked", t.getAttribute("aria-checked") === "true" ? "false" : "true"); }); }); banner.addEventListener("click", function (e) { if (!e.target || !e.target.closest) return; var btn = e.target.closest("[data-cpcb-action]"); if (!btn) return; var action = btn.getAttribute("data-cpcb-action"); if (action === "customise") { expand(); return; } if (action === "accept") { commit({ analytics: true, advertisement: true, functionality: true }, false); return; } if (action === "reject") { commit({ analytics: false, advertisement: false, functionality: false }, true); return; } if (action === "save") { commit(fromToggles(), true); return; } }); var existing = stored(); if (existing) { apply(existing, false); paint(existing); collapse(); } else if (!inScope(banner)) { // Out of the consent-required region: implied consent, banner never shown. commitSilently(); } else { collapse(); show(); } function commitSilently() { var all = { analytics: true, advertisement: true, functionality: true }; writeCookie(COOKIE, JSON.stringify({ analytics: true, advertisement: true, functionality: true, v: 1, ts: Date.now(), implied: true }), days); apply(all, false); } // Public re-open hook for a footer "Cookie settings" link. window.cpCookieBanner = window.cpCookieBanner || {}; window.cpCookieBanner.open = function () { var s = stored() || { analytics: false, advertisement: false, functionality: false }; paint(s); expand(); show(); }; } function boot() { var banners = document.querySelectorAll("[data-cpcb]"); if (!banners.length) return; init(banners[0]); document.addEventListener("click", function (e) { if (!e.target || !e.target.closest) return; var trigger = e.target.closest("[data-cp-cookie-settings]"); if (!trigger) return; e.preventDefault(); if (window.cpCookieBanner && window.cpCookieBanner.open) window.cpCookieBanner.open(); }); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", boot); } else { boot(); } })();