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 Starlinks Packages with the ClickPost Tracking Page
Get the order IDs for Starlinks packages and copy them.
Head over to the official tracking portal of ClickPost.
Paste the order IDs in the box.
Hit “Track Your Order” to monitor the end-to-end shipment journey.
Track Starlinks Packages on the Official Page
Visit Starlinks’ official tracking portal.
Enter the reference numbers in the given box. You can track your shipment by using reference numbers or customer reference numbers. Plus, you can add up to 30 reference numbers, each separated by a comma.
Hit “Track.”
After a few seconds, you will be able to track the shipment journey.
List of Starlinks APIs
API
Description
Manifestation and shipping label generation API
Ship faster with Starlinks by auto-generating shipping labels and AWB numbers.
Track Shipment API
Oversee shipments across multiple carriers and manage them efficiently on a unified portal.
Cancellation API
Cancel already manifested orders effortlessly with this API.
EDD API
Keep customers informed with accurate delivery timelines and win their trust.
NDR Action Update
Auto-detect NDR cases and automate the entire management process to bring down RTOs.
Return Webhooks
Track every customer return and refund with Starlinks-integrated ebooks.
API & Description
Manifestation and shipping label generation API
Ship faster with Starlinks by auto-generating shipping labels and AWB numbers.
Track Shipment API
Oversee shipments across multiple carriers and manage them efficiently on a unified portal.
Cancellation API
Cancel already manifested orders effortlessly with this API.
EDD API
Keep customers informed with accurate delivery timelines and win their trust.
NDR Action Update
Auto-detect NDR cases and automate the entire management process to bring down RTOs.
Return Webhooks
Track every customer return and refund with Starlinks-integrated ebooks.
Frequently asked questions
Everything you need to know about ClickPost’s Carriers Integration
How does ClickPost integrate with Starlinks to enable real-time tracking of shipments?
ClickPost integrates with Starlinks through a universal API. Because of this, enterprises can go live with Starlinks through ClickPost by making simple configuration changes. To integrate this API, simply go through the API documentation and secure the necessary API credentials. Use these credentials while setting up the carrier authentication mechanism on ClickPost’s dashboard. Once the integration is done, ClickPost’s tracking APIs will automatically fetch real-time updates from Starlinks and show them on a unified dashboard.
Can ClickPost users generate manifests and labels automatically for Starlinks orders?
Yes! Users can easily automate generating manifests and labels for Starlinks orders using ClickPost’s order manifestation and label generation API. They can also generate bulk labels to speed up order fulfillment.
What kind of tracking statuses and delivery insights does ClickPost provide for Starlinks?
ClickPost provides milestone-specific delivery updates along with chronological timestamps on the dashboard. These statuses mostly include Order Created, Picked Up, Shipped, In Transit, Out for Delivery, Delivered, etc. Plus, merchants will also view updates on delays, exceptions, and reattempts. In addition, ClickPost offers detailed insights and reports for Starlinks’ performance, such as OFD reports, RTO reports, SLA breach reports, in-transit order reports, on-time delivery reports, and so on.
Is it possible to handle delivery exceptions with Starlinks using ClickPost’s workflow automation?
Of course! Using ClickPost’s automated NDR management system, enterprises can handle delivery exceptions automatically for Starlinks shipments. After auto-detecting the NDR cases, ClickPost updates the carriers’ databases in real time with recent reports. Next, it automates the entire feedback loop, so carriers can make reattempts. It has also launched its AI delivery exceptions manager, Parth, to automate 90% of NDR resolutions and bring down RTOs.
What is Starlinks?
Founded in 2019, Stralinks is a well-known supply chain company operating across Saudi Arabia and the GCC. Their core capabilities lie in providing high-quality omnichannel fulfillment services and transportation services across this region. Starlinks offers specialized e-commerce solutions to help businesses build and optimize their supply chain operations. It has an extensive fleet of 150+ vehicles and a track record of managing 30k orders a day. It has also introduced 254 robots to automate fulfillment. Besides these, Starlinks provides same-day delivery, bulk delivery, cash-on-delivery, international shipping, returns management, and more. Under the B2B logistics, you will find services such as local and intracity distribution, multi-temperature controlled facilities, 4PL solutions, automotive yard solutions, and more. Stralinks delivers 400 tons of cargo, 15,000+ TEUs, and 2,000 cross-border linehauls through its robust freight forwarding services. Plus, Starlinks offers supply chain solutions, such as analysis of existing data sources, supply chain strategy development, and more, to revolutionize your end-to-end business operations.