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 >

The Ultimate Guide to Oversized Shipping: Challenges & Solutions

The Ultimate Guide to Oversized Shipping: Challenges & Solutions

Devaraj Mahantesh
By Devaraj Mahantesh

Ready to ship smarter? Talk to our logistics experts.

Trusted by 600+ brands

In this blog

    Introduction

    From jewelry to furniture and even live animals, there is an ecommerce store for everything. Considering the variety of things that we ship, handling bulky shipments should not be a big challenge. However, most ecommerce companies still find it quite challenging to deal with oversized shipping. 

    This is because the associated challenges can spring at you at the last moment. In this blog, we will provide you with the right information so that you don’t have to shy away from shipping a huge order ever again. 

     

    What is Considered As Oversized Shipping?

    Oversized Shipping is typically defined as any shipment that is over the dimensional, volumetric, or weight limit of the standard shipment. These parameters are usually defined by the carrier and have very little room for adjustment. 

    The maximum dimensions or the weight limit can change depending on the type of service as well. For example, a standard domestic shipping option might have a larger range of dimensions and weights that it can accept.

    On the other hand, express courier services and international services may only accept smaller packages as compared to the standard shipping option. 

    Oftentimes, if your shipment is qualified as oversized, you will have to pay oversize charges to the carriers. These charges will increase your shipping bill significantly. Along with this, there is a horde of other challenges that you may have to face if you ship your shipments under the oversize tag. 

    4 Major Challenges in Oversized Shipping

    Oversized shipping comes with its own set of daunting challenges. Here are some of the common challenges you will face while shipping oversized packages. 

    1. Separate Regulations

    Oversized shipments have to face separate and stricter regulations from the carriers and the authorities. This includes extra paperwork, additional taxes, dimensional constraints, and packaging restrictions. These requirements vary according to the origin and destination regions. 

    2. Higher Carrier Fees

    Every carrier has a specific dimension for a normal shipment. If your package exceeds these dimensions, there is a high chance your shipping bill will reflect a hefty charge. This might put your shipping operations over budget and will likely increase the paperwork you need to process with the carrier. 

    3. Shipping Delays

    For heavy, oversized shipments, shipping delays occur more often. This is because specialized machinery and bigger transport vehicles have to be used. They are prone to more frequent breakdowns, resulting in unexpected delays. 

    4. Lost/Damaged Shipments

    The high cost of shipping heavy orders often is a result of frequent loss and damage to the shipments. Since not all carriers are equipped with the right machines to handle heavy/oversized loads, choosing the wrong courier partner can lead to frequent damage. This increases your overall shipping costs and disrupts the supply chain. 

    4 Key Tips for Handling Oversized Shipping

    The above challenges can make oversized shipments quite tiresome. Here are some tips to help you deal with the challenges of oversized shipping. 

    1. Use Specialized Carriers

    If your product or packages tend to be oversized frequently, it may be a good idea to partner up with a specialized carrier.

    These carriers have special equipment as well as experience in handling oversized shipments. This ensures that you do not have to deal with frequent shipping exceptions and damages. 

    Using a specialized carrier helps in reducing oversize surcharges. It will also help you negotiate an SLA that will allow you to establish a more specialized process. 

    2. Integrated Logistics

    With Integrated Logistics, you can streamline and consolidate your shipping process in one single system. In the case of Oversized Shipments, it gives you better visibility over your supply chain. This allows you to minimize monetary losses due to lost or damaged shipments. 

    Furthermore, integrated logistics allow you to curate a supply chain based on the needs of your products and customers. Your products will be handled by employees & machinery that are dedicated to handling oversized shipments.  

    3. Use Appropriate Packaging

    Heavy or oversized shipments are more prone to damage during the shipping process. However, the right packaging can save you from the hassle. Choose the packaging material according to the weight and weak points of your parcels. 

    Make sure to cushion the parts that are more prone to shattering. This will allow you to avoid damages from minor drops and hits in the shipping process. The packaging situation is imperative for B2C brands as well. The use of proper packaging allows you to ensure that the shipments are not damaged.

    4. Partner With A 3PL

    If you want to avoid the entire hassle of storing and delivering oversized parcels, the best option is to get a 3PL partner. Through this arrangement, you can negotiate a separate SLA. This SLA can be catered to the specific needs of your products and supply chain. 

    With a 3PL, you can choose specialized warehouses that are capable of handling and storing oversized packages.

    Furthermore, the transit process and the secondary distribution centers will also be aware of the nature of your shipments and will have proper systems in place.

    Therefore, it will allow you to create your supply chain for oversized shipments without having to do the financial heavy lifting. 

    Criteria of Oversized Shipments for Popular Carriers

    Finding the right guidelines for shipping packages can be quite cumbersome. To make it easy for you, here are the dimension criteria for some popular carriers that they follow for their basic courier delivery services. 

    1. UPS

    The maximum package weight under the parcel service of UPS is around 70 kg. The maximum length of the parcel can be only upto 274 cm long, while the maximum combined dimensions cannot be more than 400 cm.

    Packages that weigh more than 31.5 kg have to be labeled as heavy parcels, but they do not come under oversized packages. 

    2. FedEx

    For the standard shipping option, the maximum combined dimensions of the package have to be less than 165 inches or 420 cm.

    The maximum girth of the package has to be less than 130 inches while weighing less than 150 lbs. If the package does not satisfy either of the conditions, your package will be processed as a Freight parcel in the FedEx system.

    3. DHL

    For DHL shipping services, you need to ensure that your package, including your pallets, weigh less than 70 kg. Neither of the dimensions for the package should exceed more than 120 cm or 47.24 inches. If your package exceeds either of these specifications, you will be charged an oversize fee. 

    3 Alternate Ways to Handle Oversized Shipments

    Sometimes, the shipments have to be classified as oversized shipments due to the size of the final package or consolidation. In such cases, there are a few other alternatives you can choose to avoid the oversize shipping hassle. 

    1. Split the Shipments

    Ecommerce businesses are often advised to consolidate shipments to save on shipping costs. However, you may have too much more in oversized shipments because a dimension was exceeded. Therefore, it might be a better idea to split shipments, especially when combining them lands you in oversized category.

    2. Ship With Freight Carriers

    If you cannot avoid shipping in bulk and typically ship overseas or long distances, a freight carrier might be an ideal choice here. This is because freight carriers are equipped to handle much larger loads.

    The services are slower than your typical courier companies. However, their experience and expertise in handling larger shipments make them a much safer option. They are also more affordable for oversea shipments. 

    3. Use Multiple Distribution Centers

    A widespread distribution network is a much more sensible choice for establishing an effective supply chain. Setting up distribution centers near Metro regions or your consumer will allow you to have a quicker delivery process.

    Furthermore, this will cut down on your requirement of having to ship in bulk to other locations to keep up the fulfillment demand. 

    Conclusion

    You cannot really control the size of your products. But, the size of the package determines during the shipping process.

    The challenges that come up for oversized shipments can cause a real strain for your shipping operations. Hopefully, the above blog has equipped you with information about these so you can handle them like a pro. 

    FAQs

    1. What will happen in case my shipment is oversized?

    In case your shipment is oversized by a smaller margin, your shipment will be processed. The carrier will levy considerable oversized charges and the same will be reflected in your bill.

    2. Where to find size restrictions for shipping service?

    The size and weight limitations of the shipping service are usually declared in the terms and conditions. This will usually mention the length, width, and height of the package is mentioned here, and you typically cannot extend either of the dimensions.

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