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

Customer Stories

Discover how 600+ brands using ClickPost deliver faster, reduce returns, and build logistics operations that sets them apart.

4.8 Star SVG
users-love-us G2 2026 JAN 1
Momentum Leader Jan 2026 1
Highest User Adoption Jan 2026 1
High Performer Mid Market G2 2026 JAN 1
Case studies
Testimonials
Nykaa - CS - Banner
ClickPost is genuinely super helpful. Customers can handle order edits themselves, and the post-purchase upsells have been a solid bonus for incremental revenue.
Samarth Sindhi
Samarth Sindhi
Chief Executive Officer, MarsGHC
Pilgrim - CS - Banner
Highly satisfied with Clickpost's order tracking system. It has made my online shopping and shipping experience much smoother and stress-free.
Rajat Mehra - Plum
Rajat Mehra
Product Manager, Plum
Decathlon - CS - Banner
Giva - CS - Banner
ClickPost is phenomenal. The team is always hungry to enhance the features and align with latest industry trends.
Manoj Kumar
Manoj Kumar
Tech and Automations, Sugar Cosmetics
Welbeing Nutrition - CS - Banner
ClickPost helps us power a hassle-free returns experience, which has positively impacted our NPS.
Anshu Kumar
Anshu Kumar
Logistics & Customer Delight Lead, Comet
Forever New - CS - Banner
While the customer is placing a return request, we are nudging to exchange. ClickPost is working well and our end user experience is good too.
Bharath GM
Bharath GM
eCommerce Operations, UrTurms Apparel
Oriflame - CS - Banner
Really like ClickPost's tech. One of the cleanest documentations and APIs I’ve seen. We were able to simply plug the logistics system into our ERP with minimal intervention.
Madhusudan Bhutra
Madhusudan Bhutra
COO & CFO, The Face Shop
SuperYou - CS - Banner
ClickPost eliminated manual order entry completely. Our team went from data punching to driving performance.
Vipin Kumar
Vipin Kumar
Senior Director Supply Chain, TMRW House of Brands
ClickPost Darwin automated our B2B logistics end-to-end. Real-time booking, tracking, and PODs, with disputes resolved in 24–48 hours. At 15,000 dockets a month, the impact is huge.
Subrat Dehury
Subrat Dehury
DGM of Logistics Operations at HealthKart
Vaaree - CS - Banner
ClickPost has been with us since day one. From dynamic rule-based courier recommendation, auto pickup request, tracking exceptions and now automated courier bill verification, it has helped us scale with minimal people and maximum control.
Sankatmochan
Sankatmochan
Head of Supply Chain, Style Union
TATA 1mg - CS - Banner
Been using Clickpost for a few months now and honestly it just works. Customers can update their orders without emailing us back and forth, which saves our team a ton of time.
Vakil Ahmed
Vakil Ahmed
CRM Head, Bacca Bucci
TMRW - CS - Banner
Automating proof-of-delivery verification has been particularly impactful for our operations. We’ve reduced manual intervention, improved turnaround times, and strengthened logistics visibility.
Anish Nair
Anish Nair
Head of Logistics Operations, Acer
MiniKlub - CS - Banner
ClickPost’s team were experts in their systems and integrated seamlessly with ours. They proactively resolved every issue, ensuring a smooth experience.
Sonali Das
Sonali Das
D2C Tech and Product Head, Birkenstock
Aditya Birla Fashion & Retail
Fashion and Apparel
How Aditya Birla Fashion runs 20+ brands with ClickPost’s unified logsitics intelligence
Kapiva
Health and wellness
Kapiva lowers RTOs, has 40% less complaints, 94% EDD accuracy
Miraggio
Fashion & Lifestyle
How Miraggio cut RTOs by 50% and freed up CX team bandwidth
Nykaa
Fashion & Lifestyle
ClickPost Boosts Nykaa’s Logistics, Elevating Customer Experience
Kisah
Fashion and Apparel
How Kisah increased NPS and repeat orders with ClickPost's post- purchase intelligence
GIVA
Lifestyle, Jewellery
Giva Centralizes B2B, B2C and Quick Commerce Shipments, Cuts Daily Ops Time by 75% with ClickPost
Joker and Witch
Lifestyle, Jewellery
How Joker & Witch cut COD RTOs by ~15%
Savana
Fashion and Apparel
25% Support queries reduced and NPS increased for Savana
Forever New
Fashion & Apparel
How Forever New Reduced Dispatch Processing Time by 80% with ClickPost
Snitch
Fashion & Apparel
How Snitch runs a ₹1,100 Cr Operation with a team of six
Caratlane
Lifestyle, Jewellery
How Caratlane perfected their Omni-Channel customer experience
Yoga Bar
Food & Beverages
How Yoga Bar is Reducing B2B Supply Chain Costs with Every Shipment
HealthKart
Health & Wellness
HealthKart Streamlines 15,000+ Monthly B2B Shipments with ClickPost Darwin
The Face Shop
Beauty & Personal Care
The Face Shop Builds a Tech-First B2B Logistics Backbone with ClickPost Darwin
Style Union
Fashion & Apparel
How Style Union Scaled 150% YoY with ClickPost Darwin’s Tech-First Supply Chain
Kapiva B2B
Health & Wellness
Kapiva B2B Digitizes PODs & Saves 72+ Hours Monthly with ClickPost Darwin
Tata 1mg
Health & Wellness
Tata 1mg Reduced Delivery TAT by 10% with ClickPost's AI Carrier Allocation
MyMuse’s
Wellness & Personal Care
MyMuse’s Journey to 24-Hour NDR Resolution with Parth, AI NDR Agent
IGP
Gifting
How IGP aced their delivery performance through improved carrier connectivity
Acer
Consumer Electronics
Acer Adopts AI-Driven POD Verification with ClickPost Darwin
Bestseller
Fashion & Apparel
How moving away from aggregator shipping helped Bestseller amp up its Pre-Dispatch operations
Pilgrim
Beauty & Personal Care
Pilgrim lowered RTOs by 3% with ClickPost’s AI Carrier Allocation
Hopscotch
Kids' Fashion
Hopscotch boosted PDP Conversion rate by 5% with ClickPost’s EDD(Estimated-Delivery-Date) Optimization
DaMENSCH
Fashion & Apparel
How DaMENSCH reduced RTO rate by 54% with ClickPost
PlatinumRx
Health & Wellness
How PlatinumRx Reduced RTOs by 33% with Performance-Based Allocation
GO DESi
Food & Beverages
How GO DESi Ships 3 Lakh Popz a Day - Without Adding Headcount with ClickPost Darwin
BlueStone
Jewelry
One Integration, 4+ Hours Saved Daily: How BlueStone Automated B2B Logistics with ClickPost Darwin

Want to Save Shipping Costs with ClickPost?

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