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 >

USPS eCommerce Returns- [Complete Guide]

USPS eCommerce Returns- [Complete Guide]

Tarunya Shankar
By Tarunya Shankar

Ready to ship smarter? Talk to our logistics experts.

Trusted by 600+ brands

In this blog

    1) Introduction to USPS Returns Service

    USPS holds an exceptional presence in the eCommerce marketplace of the United States. In fact, over 35,000 small and medium businesses rely on USPS for both their forward and reverse logistics. They trust USPS’s reliability, cost-effectiveness, and service delivery. These qualities make it a consistent partner for facilitating many eCommerce returns across the United States and Canada. 

    Over the last couple of years, USPS has revamped its returns service to eliminate manual postage handling and payment processing. The new avatar of USPS Returns includes automation for parcel verification and payment named Merchandise Returns Service and Scan Based Payment, respectively.

    Moreover, USPS has upgraded its tracking service to provide eCommerce businesses with individual parcel visibility, automate pricing and return parcels to businesses enrolled with USPS Returns. 

    eCommerce businesses can begin their returns journey with USPS by creating a Business Customer Gateway account with USPS, setting up an Enterprise Payment Service, and allocating Mailer IDs to customers returning their products with USPS. The process further includes preparing returns labels as essential documents that facilitate returns with USPS. 

    2) Introduction to United States Postal Service

    The United States Postal Service, generally known as USPS, has an illustrious history of postal service and a pivotal role in eCommerce shipping across the United States and Canada. 

    The rapid proliferation of eCommerce businesses in the North American market has seen the simultaneous growth of USPS as an ideal shipping carrier. Since the onset of the pandemic, more eCommerce businesses have relied on USPS as the largest logistical infrastructure holder in the country, second only to the military of the States. 

    USPS is particularly adept at reaching the most insular and remote areas of the country, making it an excellent choice for eCommerce businesses to partner with. courier partner. Recently, USPS has also launched USPS Connect to reach out to eCommerce marketplaces directly to offer discounted shipping rates to customers.

    Regarding eCommerce returns, USPS has a well-put mechanism that allows customers to return their parcels via its giant network of post offices and collection boxes. Efficient reverse logistics with USPS is one of the primary reasons eCommerce businesses choose USPS.

    3) How do USPS eCommerce Returns work?

    Many SMEs rely on USPS for their forward and reverse logistics needs. Needless to say, USPS returns are easy to understand and follow for both eCommerce businesses and their customers. Here is a breakdown of the entire USPS returns process.

    3.1) Printing a Shipping Label 

    Printing a return shipping label is the most crucial step in facilitating returns with USPS. The small slip of paper contains essential information like parcel tracking barcode number, a destination address, and designated USPS returns service, amongst others. Only once the return label is attached to the parcel can it be posted back to the eCommerce brand.

    USPS offers four options to simplify the process of printing a shipping label. First, businesses can include pre-paid returns shipping labels in the original package that customers can later use to return the parcel. Second, businesses can integrate with USPS to offer and process returns labels from their websites. 

    Third, customers can print the return label from their end on the USPS website by entering the details and later printing it from their printer. Fourth, customers can use the USPS Click-N-Ship web portal to generate an electronic version of the returns shipping label called USPS Label Broker ID that can be processed via a QR scanner in the USPS post office facility for printing the returns label.

    3.2) Shipping a Box with Pre-paid return label

    In cases where customers have their USPS shipping boxes ready with a printed return label to attach, they need to schedule a parcel pickup appointment with USPS or drop it at one of the postal service facilities operating under USPS. The parcel can be handled by the mailperson or deposited in a collection box that receives mail.

    3.3) USPS Returns Options

    The Postal Service has tons of options for managing eCommerce returns. Each service has unique advantages to fit the needs of different businesses. Be it speed, affordability, or customer convenience, USPS returns have the following options to tackle all issues. 

    3.3.1) Priority Mail Return Service

    This service is ideal for quickly returning time-sensitive items or items of high value. The delivery time varies between one and three days, where the customers can deposit their returns package at the post office, collection boxes, or schedule a package pick-up. 

    The postage cost depends on the returns label and typically starts from 7.37 USD for commercial bases. Priority Mail, with its affordable pricing, is best suited for eCommerce businesses that wish to provide their customers with pre-paid returns labels. The service also comes with insurance upto 5000 USD.

    3.3.2) First-Class Package ReturnService

    For lightweight documents and items weighing less than 1 pound, First-Class Package Returns is the best affordable option. The price range begins from 3.37 USD making it suitable for high-volume shippers to include pre-paid returns labels. Customers can drop off their return packages at post offices or collection boxes. They can also schedule a pick-up with USPS.

    3.3.3) Ground Return Service

    Ground Returns is the most affordable option for eCommerce returns provided by USPS, with reverse delivery times ranging from two to nine days. This service is ideal for businesses wanting to save on returns costs, though they may have to forego speed.

    However, to compensate for the lack of speed, USPS has attached shipment tracking to this service and the option to avail of insurance upto 5000 USD. The commercial pricing of the Ground Returns service starts from 7.22 USD.

    3.3.4) Bulk Parcel Return Service

    This service is slightly different from the other returns service of USPS. Firstly, there is an annual volume criteria of 10,000 merchandise for eCommerce businesses to use this service.

    Secondly, the service caters well to shippers who ship packages with USPS’s Marketing Mail and Parcel Select Lightweight shipping methods. Thirdly, this option is suitable for returning unopened parcels refused by customers or parcels that have opened and relabelled for the returns journey. 

    The transit time of this service ranges from two to nine days, and the cost is determined by the returns labels pasted on the parcel.

    3.3.5) Parcel Return Service

    The Parcel Returns Service is a popular eCommerce returns service, and most businesses operating in the United States are familiar with it. Unlike other services under USPS returns package, the Parcel Returns Service allows customers to return merchandise without paying postage.

    Therefore, with this option, eCommerce businesses can provide free return shipping to customers. eCommerce businesses wishing to operate with the Parcel Returns Service can open their accounts with USPS.

    The functioning of this service is convenient for customers as they can simply attach the PRS label at any postal facility under USPS or schedule a pickup. Customers can track the package using the barcode number to confirm the parcel status as soon as the merchant retrieves it.

    They can also print a Certificate of Mailing an extra charge as proof of their returning the item. The cost of Parcel Return Service begins from 3.37 USD.

    4) Tracking Returns Parcels

    The facility for tracking returns parcels falls under the overarching USPS Tracking service that provides end-to-end parcel visibility for products within the United States. Customers can track their parcels by obtaining the returns tracking number present in the shipping label, email confirmations sent by USPS or online retailers, sales receipt of insurance, and the USPS tracking label. 

    For eCommerce businesses, parcel tracking can be easily arranged by creating an account with USPS. Once done, businesses can print tracking labels and receipts containing the tracking number.

    It can also be done in the USPS post offices by buying postage containing a tracking service. The tracking number can be obtained from the mailing receipt. USPS has many avenues to provide tracking information via their website, text, mobile app, and telecommunication service.

    4) Why Choose USPS eCommerce Returns Service?

    Opting for the right shipping carrier can reduce the cost of the return by 30%. This is one reason why USPS edges ahead of its competitors. USPS provides the best return rates for parcels weighing less than 2 pounds compared to UPS and FedEx. 

    Also, USPS has a straightforward returns workflow to streamline eCommerce businesses' returns process. Starting with a free package pick-up amenity for six days a week and convenient drop-off locations at 34,500 post offices across the country and numerous parcel collection boxes in different neighbourhoods.

    Using the USPS Web Tools API, eCommerce businesses can print their pre-paid return labels and ship them with the original parcels. USPS does not levy any surcharges for delivering to residential and rural areas. 

    5) Conclusion 

    USPS is a household name for most, if not all, American consumers and eCommerce businesses. The company has been operating for over two centuries, and its services have evolved to match the quick-paced eCommerce shipping and returns services.

    Coupled with speed is cost-effectiveness and ease of operations, allowing eCommerce businesses to bring simplified returns solutions to customers. Customers have a bunch of return options and return printing services using which they can ship their products for returns without any hassle. This makes USPS an ideal choice for many small and medium businesses in the United States today.

    6) FAQs

    6.1) What is USPS E-Returns Receipt?

    An electronic Returns Receipt is an alternative to a paper-based return receipt. Its function is to provide the shipper a proof of delivery containing the customer’s signature and other information like the delivery address. The E-Returns Receipt is attached to the shipper’s email by USPS. 

    6.2) How much does USPS return receipt cost?

    USPS returns receipt has both a hard copy and an electronic version. While the hardcopy cost is around 3.05 USD, an E-Return receipt costs 1.85 USD, making it the cheaper option of the two.

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