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ÊÓÆµ

See where your logistics stands on automation Start assessment

Home > Blog >

What is a Carrier Facility? A Complete Guide

What is a Carrier Facility? A Complete Guide

Tarunya Shankar
By Tarunya Shankar

Ready to ship smarter? Talk to our logistics experts.

Trusted by 600+ brands

In this blog

    Carrier Facilities: Quick Summary

    A carrier facility is a carrier-run processing location where packages are received, scanned, sorted, routed, and sent onward to another hub or the final delivery vehicle. If a tracking page says a shipment has arrived at or departed a carrier facility, it usually means the parcel is moving through one step of the carrier’s network, not that anything is wrong.

    Key Points: Carrier Facility Tracking Updates Explained

    • Carrier facilities are operational hubs where parcels are scanned and routed through the carrier network.

    • A package may pass through multiple facilities before it reaches the customer.

    • Most packages move through a facility quickly, but delays can happen during volume spikes, weather events, or routing issues.

    • Customers usually cannot collect parcels directly from these facilities, but USPS, UPS, and FedEx all offer separate pickup options.

    This guide explains what a carrier facility is, how it works, why packages sometimes sit there, what those tracking updates mean, and what pickup alternatives carriers offer when customers do not want home delivery.

    Why "Arrived at Carrier Facility" Appears on Your Tracking

    Most parcels do not move straight from the sender to the doorstep. They move through a chain of carrier facilities that keep the network running in the background. That is why tracking pages often show updates like “arrived at carrier facility� or “departed carrier facility.� Those scans are not random. They mark the points where a package is processed, redirected, and pushed toward the next stage of delivery.

    What is a carrier facility?

    A carrier facility is a carrier-operated logistics site where packages are processed inside the delivery network. Depending on the carrier, it may function as a sorting hub, local distribution center, destination facility, pickup location for internal transfer, or last-mile staging point.

    UPS, USPS, FedEx, and Amazon all operate facility networks that move parcels from origin to destination via repeated scan-and-sort operations.

    A carrier facility usually handles a few core tasks:

    • Receiving incoming parcels from shippers, drivers, trailers, or upstream hubs

    • Scanning packages into the carrier system

    • Sorting shipments by route, service level, geography, or delivery sequence

    • Holding some parcels briefly until the next dispatch window

    • Loading outbound trucks, vans, or linehaul trailers

    For businesses package tracking platforms, this matters because facility scans create the visibility layer customers see. When a shipment stalls, gets delayed, or needs intervention, those facility updates are often the clearest clue about where the problem started.

    Sources:,,.

    How Carrier Facilities Work: Step by Step

    Carrier facilities in the middle of how parcel networks stay efficient. A package may move through one local facility or several regional ones before final delivery, depending on origin, destination, carrier network design, and service level.

    Step 1: Package intake

    After pickup or drop-off, the carrier brings the parcel into its network. That first facility may be a local intake point, a destination facility, or a larger sort hub, depending on the shipment lane.

    Step 2: Sorting and scanning

    The parcel is scanned, which updates tracking, then routed based on destination, service level, and network logic. This is the stage when tracking messages such as “arrived at facility� or “on the way� often appear.

    Step 3: Loading onto transport

    Once sorted, the package is loaded onto the next vehicle. That might be a trailer en route to another hub, a truck heading to a local station, or a delivery vehicle awaiting final dispatch.

    Step 4: In-transit tracking

    Each new facility scan adds another tracking milestone. That is why customers often see a sequence of facility arrivals and departures before the item is marked out for delivery.

    Step 5: Last-mile delivery

    At the final local facility, the parcel is assigned to a delivery route and loaded onto the vehicle that takes it to the recipient. Once delivered, the carrier updates tracking with the delivery event and timestamp.

    Sources: , , .

    How Long Do Packages Stay at Carrier Facilities?

    Most packages move through a carrier facility within a day or two. In normal network conditions, a facility scan simply means the parcel is being processed and routed onward. A longer stay does not always mean the package is lost. Still, it usually means the parcel is waiting for the next available movement, a later delivery attempt, or resolution of an exception.

    Sources: , , .

    Why Does a Package Sit at a Carrier Facility?

    A package usually sits at a facility because the next move has not happened yet. That can result from heavy parcel volume, weather disruptions, staffing shortages, missed linehaul connections, routing adjustments, address problems, or a delivery exception.

    Understanding how to anticipate and manage shipping delays helps both merchants and customers set better expectations.

    During holidays and peak periods, facility dwell times often increase because the network handles more parcels than usual.

    Sources: , , .

    Addressing common customer questions

    Tracking messages makes more sense once you know what a facility actually does.

    1. What Does "Arrived at Carrier Facility" Mean?

    It means the package has reached one of the carrier’s processing sites and has been scanned into the next stage of the network. Usually, the parcel is waiting to be sorted or dispatched onward.

    2. What Does "Left Carrier Facility" or "Departed Carrier Facility" Mean?

    It means the package has been processed and moved out of that site. The next stop could be another facility or the final local delivery unit, depending on where the shipment is in the route.

    These are ordinary tracking events, not warning signs by themselves. The concern arises only when a package remains in one facility update for too long without a new scan.

    Sources: ,,.

    Can You Pick Up Packages From a Carrier Facility?

    Usually, no. Carrier facilities are operational sites, not public counters. Customers generally cannot walk into a sorting hub or distribution center to collect a parcel. What carriers do offer instead are separate pickup programs at approved retail or service locations.

    USPS, UPS, and FedEx all offer alternatives:

    USPS Hold for Pickup

    USPS lets eligible shipments be held at a designated Post Office for customer pickup. The recipient collects the item from the Post Office, not from the internal processing facility.

    UPS Access Point and pickup options

    UPS offers pickup alternatives through UPS Access Point locations and other pickup and drop-off options. These are public-facing access locations, not sorting facilities.

    FedEx Hold at Location

    FedEx lets recipients hold eligible shipments at FedEx Office, Walgreens, Dollar General, and other approved locations. The package is redirected to a public pickup point once the request is approved.

    Sources:,,,,,.

    Why Package Tracking Through Carrier Facilities Matters

    Carrier facilities matter because they create the scan trail that powers package tracking. Every facility event adds another timestamp to the shipment record, helping businesses understand where the package is, whether it is moving normally, and when it has gone off course.

    That helps in three practical ways:

    Better process control

    Tracking data helps merchants see how long parcels take to move across the network. Centralizing this through delivery management tools makes patterns visible at scale.

    Faster issue resolution

    If a shipment is delayed, facility scans provide the timeline needed to work with the carrier or support a claim. For businesses managing shipments across multiple carriers, a multi-carrier shipping platform consolidates these events into one view.

    Better customer communication

    Clear tracking updates reduce confusion. For businesses using branded tracking pages, translating facility events into customer-friendly language reduces support volume. Setting accurate estimated delivery dates that account for facility processing time makes promises more reliable.

    Sources: ,,.

    Editorial Note and Methodology

    This article was written as a practical explainer for merchants and customers trying to understand what a carrier facility is and what tracking updates around it actually mean. We drew the definitions, tracking status explanations, and pickup alternatives from the current UPS, USPS, and FedEx support pages. So, the article reflects how the major US carriers explain facility scans, tracking events, and hold-for-pickup options today.

    Carrier Facilities: What to Remember

    A carrier facility is not just a warehouse stop in the middle of the route. It is the point at which a package is processed, scanned, and forwarded to the next stage of delivery. For customers, that explains the tracking updates.

    For merchants, it explains where the shipment is in the network and when to intervene. The more clearly a business understands these facility events, the easier it becomes to answer questions, manage exceptions, and keep delivery communication grounded in reality.

    For ecommerce logistics teams managing high order volumes, understanding facility events — and surfacing them clearly to customers through post-purchase tools — turns generic tracking into a meaningful customer experience. For a broader look at how all major carriers compare on tracking, speed, and reliability, see our FedEx vs USPS vs UPS comparison and best shipping carriers guide.

    Carrier Facility FAQ

    What is a carrier facility, and what happens there?

    A carrier facility is a processing site where packages are received, scanned, sorted, and routed through the carrier network. It may also hold parcels briefly before they move to another hub or the final delivery vehicle.

    What does “arrived at carrier facility� mean on tracking?

    It means the package has reached one of the carrier’s operational locations and has been scanned into that step of the journey. Usually, it is waiting to be sorted or loaded for the next movement.

    What does “departed carrier facility� or “left carrier facility� mean?

    It means the shipment has been processed at that site and moved out. The next stop may be another hub, a local delivery unit, or the customer’s address, depending on the route.

    How long does a package stay at a carrier facility?

    Most packages move through within one or two days. If it sits longer, the cause is often volume pressure, weather, staffing issues, or another delivery exception.

    Why is my package stuck at a carrier facility?

    Usually because something has interrupted the normal flow of the network. Common reasons include high parcel volume, weather, missed transport connections, routing adjustments, or address-related issues.

    Can you pick up a package directly from a carrier facility?

    Usually, No. Carrier facilities are not public pickup points, but USPS, UPS, and FedEx all offer separate hold-for-pickup or access-point options through approved public locations.

    How does package tracking work through carrier facilities?

    Each facility scan adds a timestamp to the shipment record. Those scans create the timeline both customers and merchants use to monitor progress. For businesses using shipping insurance, these scan records are also essential for claims documentation.

    Related reading: Shipping Delays Guide | Ecommerce Order Tracking | Shipping Label Guide | Delivery Management Software

    The Logistics Automation Platform for E-commerce

    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(); } })();