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 Shipping Manifest? Complete Guide for Ecommerce Brands

What Is a Shipping Manifest? Complete Guide for Ecommerce Brands

Tarunya Shankar
By Tarunya Shankar

Ready to ship smarter? Talk to our logistics experts.

Trusted by 600+ brands

In this blog

    Introduction

    If you are an ecommerce business that sends international shipments frequently, you must learn how to prepare an ironclad shipping manifest document.

    Since the shipping manifest is essentially the label and the representation of the shipment, it has to be perfect and according to the required standards. This will ensure that your parcel goes through every custom seamlessly, and you won’t have to deal with delays.

    In this blog, we will understand the concept and workings of the shipping manifest so that you can avoid difficulties while sending your next international shipment.

    What is a Shipping Manifest?

    Manifest is a non-legal document containing the list of items transported in a single consignment or vehicle from their source to the destination.

    The cargo details in terms of consignee information, operator name, quality, type and dimensions of the product, and shipping route to make shipping clearer and more precise.

    The shipper-designated carriers use the manifest to transport cargo and verify the cargo and destination materials based on the details listed in the manifest. This document and a bill of lading by authorities grant entry and exit through ports.

    How to create a Manifest?

    Most carriers have an existing shipping manifest template on their website. Many major carriers, like USPS, DHL, DPD, etc., provide a manifest when you book an order with them. These manifests can be divided into two primary categories – Physical and Electronically submitted.

    Some carriers will generate an electronic manifest by collecting your information when booking. This manifest is then electronically attached to the shipment and submitted to the authorities so that you do not have to worry about losing it during the shipping process.

    These electronically submitted manifests are generally offered by carriers that provide customs clearance support and can be helpful in developing a hands-off international shipping process. Using can help businesses analyze shipping information, identify inefficiencies, and make more informed logistics decisions.

    The second method to generate a shipping manifest with the carrier is by downloading a PDF. If your carrier does not electronically submit your shipping manifest, they will provide the shipping manifest in a downloadable PDF format.

    In order to do this, you can use tools like SmallPDF to files, allowing you to organize and manage multiple manifests without having to recreate them. This helps keep your shipping documents clear and easy to handle, especially when dealing with several orders at once.

    Once the form has been downloaded, you will have to fill in the necessary details about the destination, shipping address as well as contents of the shipments.

    Once this is done, ensure that the shipping manifest is adequately secured to the packaging with adhesives and there is no risk of losing it in transit.

    What should be included in a manifest?

    If your shipping manifest does not have all the required details, there is a risk that the customs might reject your shipment, or it may undergo further scrutiny. This can result in unexpected delays and increased costs. To avoid these, you need to make sure that your shipping manifest has the following details:

    1. Quantity of packages in the cargo

    2. Type of commodities 

    3. Description of the products

    4. Information about the consignee

    5. Method of transportation

    6. Details of the shipper

    7. Shipping route

    5 Main Purposes of Using a Cargo Manifest

    A cargo manifest is a mandatory document with most shipments. This is because that one document will serve multiple purposes in the shipping process. These purposes include:

    1. Customs Document

    The shipping manifest is used to declare the quantity, nature, and type of goods in the shipment. The primary use of the shipping manifest is to report the goods being imported to the respective customs authorities. Most customs authorities do not release the order in their domestic circuit with a proper manifest.

    2. Tracking On-board Inventory

    Since the manifest contains details about the goods onboard, it can also be an excellent medium to track the goods on a vessel. This allows the customs authorities, as well as the recipients, to determine inaccuracies or loss of shipments during the transit process.

    3. Merchandise Verification

    Shipments can be lost or damaged during transit. The manifest serves as a central document where the shipment's contents are verified for all official purposes. Since multiple parties are involved in the entire process, verifying the contents with each party can be challenging.

    4. Highlights the required precaution

    If you send goods across the globe, likely, your goods move around with multiple carriers. The logistics sector has a different format for every type of goods shipped to enable seamless carriers between several carriers. A shipping manifest can be an excellent way to highlight the necessary precautions that need to be taken.

    5. Seamless Claims against Lost/damaged Shipments

    In case your shipment is lost or damaged, you will need to make a claim with the insurance company. The cargo manifest serves as an excellent medium to quantify the losses. The document becomes crucial in verifying the merchandise and if the sender declared the required precaution.

    5 Common Types of Shipping Manifests

    With the variety of shipping methods and strategies followed in the modern logistics sector, each method has its format of a shipping manifest. Some of the common types of shipping manifests include:

    1. Freight Manifest

    Freight Manifest is used for freight shipments, typically with bulk quantities of the same goods. Therefore, the shipping manifest for this shipping method will show related consignment details, including the total quantity of items and the weight and description of a single item. The freight charges are also disclosed on the manifest to ensure hassle-free collection of freight charges.

    2. Out of Gauge Manifest

    The Out-of-Gauge manifest is used for items that cannot fit in any of the conventional shapes. Since this cargo cannot be packed in a box or crate, the manifest will have details about the dimensions and shape of the goods, along with special packaging needs, if any. The manifest will also declare any storage or stacking guidelines to ensure the safety of goods.

    3. Cargo Manifest

    The manifest required to import/export an item from the port is known as a cargo manifest. They are typically used with international shipments to make the customs clearance process as easy as possible.

    The import and export manifest must be generated and submitted before the shipment leaves the port. Customs officials thoroughly scrutinize these manifests. Hence, they need to have all the required information on them.

    4. Hazardous Cargo Manifest

    Goods and Cargo that are chemically or biologically hazardous have to be handled with care. The import/export rules of these goods are also different as compared to the common goods.

    Therefore, these goods' shipping manifest is different compared to a standard cargo manifest. The manifest will include the type of hazardous materials as well as instructions and labels to ensure maximum safety in transit.

    5. Reefer Manifest

    With technology, you can now send perishable and temperature-sensitive goods across the globe. However, precautions must be taken to ship them as there are a lot of specifics involved.

    A Reefer manifest is used for temperature-controlled shipments to ensure all the details are shared on the label and there is no miscommunication when the shipments are transferred from one carrier to another.

    Conclusion

    As an ecommerce business, it becomes essential to learn how to create a flawless shipping manifest. The document is the representation of your shipment for every verification. Therefore, if your shipping manifest does not have any mistakes, it will make importing, exporting as well as insurance claims effortlessly.

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