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 */
});
});
})();
Track Ceva Logistics Packages with the ClickPost Tracking Page
Copy all order IDs issued by Ceva Logistics.
Open the ClickPost tracking portal.
Paste the copied order IDs into the designated box.
Click on the “Track Your Order” button to view the latest shipment updates.
Track Ceva Logistics Packages with the Official Page
Visit the Ceva logistics tracking page.
Enter the valid reference code.
Hit the “Search” icon on the right.
You will see the latest order status in a few seconds.
List of Ceva Logistics API
API
Description
Manifestation and shipping label generation API
Improve delivery speed and bulk-generate shipping labels to fast-forward deliveries.
Track Shipment API
Get end-to-end order visibility on a centralized dashboard.
Cancellation API
Cancel Ceva Logistics orders effortlessly with this API.
EDD API
Display EDDs on product and checkout pages to win customer trust.
NDR Action Update
Take automated action on failed deliveries and initiate re-attempts automatically.
Return Webhooks
Manage returns and refunds with Ceva Logistics-integrated webhooks.
API & Description
Manifestation and shipping label generation API
Improve delivery speed and bulk-generate shipping labels to fast-forward deliveries.
Track Shipment API
Get end-to-end order visibility on a centralized dashboard.
Cancellation API
Cancel Ceva Logistics orders effortlessly with this API.
EDD API
Display EDDs on product and checkout pages to win customer trust.
NDR Action Update
Take automated action on failed deliveries and initiate re-attempts automatically.
Return Webhooks
Manage returns and refunds with Ceva Logistics-integrated webhooks.
Frequently asked questions
Everything you need to know about ClickPost’s Carriers Integration
What integration steps are involved in connecting Ceva Logistics’ API with ClickPost for seamless tracking?
ClickPost offers a universal API as a single point of contact with all carriers including Ceva Logistics. The first step in the integration process is to review Ceva’s API documentation and get API credentials. The next step is to configure them into the ClickPost account. After this comes developing the logic, fetching tracking updates, and sending shipping data. The final step is the testing process and then you can go live with Ceva Logistics on ClickPost.
Is it possible to automate notifications and updates for Ceva Logistics deliveries using ClickPost’s platform?
Yes. After integrating Ceva Logistics with ClickPost, the logistics intelligence platform automates shipping updates and notifications. It sends real-time updates to customers via multiple communication channels and updates them on the dashboard.
Which features of ClickPost help businesses track and manage delivery exceptions for Ceva Logistics shipments?
ClickPost offers NDR management, predictive analytics, and real-time tracking to handle and manage delivery exceptions and order delays. These features allow brands to address and resolve delivery inefficiencies and minimize disruptions automatically.
Does ClickPost help optimize delivery performance and reduce delays for Ceva Logistics shipments?
Yes. ClickPost can optimize delivery performance and reduce delays with its API-based shipment management and end-to-end logistics solutions. It can generate labels, allocate orders, and offer comprehensive visibility to reduce delays and improve delivery speeds.
What is Ceva Logistics?
Founded in 1946, Ceva Logistics is a French supply chain and logistics company with decades of experience in offering delivery services to businesses from various sectors worldwide. It has a massive presence in more than 170 countries with over 110,000 dedicated employees. It provides Air freight, Ocean freight, Ground & Rail freight, Contract logistics, Project Logistics, Finished vehicle logistics, Customs clearances, Ceva Lead logistics, Fiscal Representation, and more. Its services come with specific offerings that can best suit business needs. Ceva has its digital freight partner solution, myCEVA to manage Ocean freight and offer real-time quotes and rates. It covers more than 600 shipping routes worldwide and uses advanced equipment in the transportation process. The Ceva Lead logistics service specializes in supply chain insights, supply chain operations, standardized solutions, and delivery technology to help you make informed decisions.