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 >

ClickPost X MOVER: Shaping Smarter, Customer-First Hyperlocal Delivery

ClickPost X MOVER: Shaping Smarter, Customer-First Hyperlocal Delivery

Rohan Ganguly
By Rohan Ganguly

Ready to ship smarter? Talk to our logistics experts.

Trusted by 600+ brands

In this blog

    Instant gratification is reshaping the age of e-commerce. Consumers don’t just want orders fast—they want them now. Whether it’s groceries, medicines, or a late-night snack, the expectations for immediate delivery are higher than ever. That’s exactly where hyperlocal delivery (HLD) steps in, bridging the gap between customers’ desires and real-time fulfillment.

    At , we believe that meeting customers’ expectations means delivering more than just packages. It means delivering with ultra-fast speed, precision, and consistency. To add another layer of convenience and improve customers’ experience, we have partnered with ClickPost. Together, we’re on a mission to offer a smarter and more agile delivery experience to customers while making them feel in control of their deliveries at every step. 

    So, What Does Hyperlocal Delivery Really Mean Today?

    Traditionally, hyperlocal delivery refers to a logistics system where goods are delivered within a highly specific geographical area. The main idea behind hyperlocal delivery is to fulfill orders from local vendors or dark stores and deliver them to shoppers within a few hours or even minutes. 


     

    Today, HLD has taken an entirely new shift. From just being a local fulfillment model, it has become the pillar for customer retention and loyalty. Other than speed, customers also expect reliability, flexibility, and an unmatched post-purchase experience throughout the entire process.

    Related Read: Key Differences Between Hyperlocal Delivery And Last-Mile Delivery

    The New Standards of Hyperlocal Delivery 

    We have entered a new era of hyperlocal delivery where speed is just a fundamental part of it. Today’s shoppers expect a flawless experience, from the moment they hit the “Buy Nowâ€� button to the moment they receive the orders in their hands. Here’s how the new standards are shaping the future of HLD. 

    1. Speed is the baseline

    Speed has become the default benchmark in this delivery model. Be it 10-minute grocery drop-offs or same-hour delivery of the essentials, customers want fulfillment in real time. HLD delivery models are now operating on a new time scale, making businesses rethink how quickly and conveniently they can deliver orders. 

    2. Convenience is the real expectation

    Speed matters, but it’s convenience that wins customer loyalty. Today’s shoppers want delivery on their own terms. Whether it’s a last-minute gift, emergency medicine, or fresh ingredients for dinner, customers are ready to pay extra for the flexibility of receiving products when it suits their schedule. From added fees and subscription models to platform fees, they are now embracing these costs for the sake of convenience. 

    3. Real-Time Visibility & Safety is a non-negotiable

    Once customers hit the buy button, they expect complete transparency from start to finish. They want real-time updates on the shipment status, on-time notifications, and a clear expected delivery window to be in control and feel confident in their purchases. Hence, in today’s market, delivery safety and transparency are no longer optional. The complete process must be secured with protocols like OTP and geofence layer. These touchpoints are mandatory to drive customer satisfaction and loyalty. 

    4. Smart, agile transportation is a must

    Automated and agile transportation is the backbone of today’s hyperlocal delivery ecosystem. Whether it’s two-wheelers, bikes, or mid-sized trucks, the fleet flexibility must be integrated with logistics intelligence to navigate urban routes and traffic conditions. 

    ClickPost X MOVER: Powering the Future of Hyperlocal Delivery

    As the expectations for hyperlocal delivery continue to evolve, businesses need a solution designed to meet these new standards for HLD. That’s where the collaboration between MOVER and ClickPost takes center stage. By combining MOVER’s agile fleet network with ClickPost’s AI-first logistics intelligence, we aim to deliver an unparalleled customer-centric delivery experience. Here’s what this strategic partnership brings to the table:

    1. Instant same-hour hyperlocal delivery 

    MOVER offers door-to-door pickup and drop-off service within a few hours across major Indian cities like Delhi NCR, Pune, Hyderabad, Bangalore, Chennai, and Mumbai. With built-in route optimization and planning APIs, it ensures the deliveries are completed as fast as possible. MOVER  ClickPost, on the other hand, complements this with an added layer of efficiency and intelligence. It helps with real-time order synchronization and order manifestation for lightning-fast shipment dispatches. 

    2. Live tracking and OTP security for transparent deliveries

    The tracking functionality of MOVER and ClickPost goes beyond basic shipment monitoring. Together, they provide end-to-end visibility, security, and an unforgettable post-purchase experience. MOVER lets businesses share a tracking link with their customers so they can keep an eye on their orders at every step. Plus, it offers OTP and geofence-based security and POD functionality for a smooth and secure handover process. 

    Meanwhile, ClickPost also helps with checkpoint-specific delivery updates, custom tracking portals, and ETA to ensure customers’ peace of mind and reduce frequent WISMO queries. 

    3. Diverse fleet of vehicles for every need

    MOVER’s diverse fleet of vehicles (like 2-wheelers, 6-ft. trucks such as Piaggio and Jeeto, and 7-ft. trucks such as Jeeto+ and Chota Hathi) has been specially designed to meet different business requirements. When combined with ClickPost’s logistics technology, businesses achieve even greater efficiency. From small parcels and documents to bulk shipments, they together make each fulfillment quicker and more efficient.

    Building the Future of Instant Delivery, Together! 

    The integration between ClickPost and MOVER paves the way for a more effective, agile, and customer-oriented HLD model. By merging MOVER’s wide-ranging fleet and ultrafast delivery method with ClickPost’s advanced logistics technologies, brands can now experience more seamless logistics operations and improved customer satisfaction. 

    We’re delighted to announce that this union aims to set a new standard for optimized hyperlocal delivery in the near future. 

     

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