Blog & Guides
Our Blog
Guides, comparisons, and news about software licenses
Stay Updated
Subscribe to receive the latest guides, comparisons, and exclusive offers directly in your inbox.
No spam, only useful content. Unsubscribe anytime.
*/ (function () { function param(name) { var m = new RegExp("[\\?&]" + name + "=([^]*)", "i").exec(location.search); if (!m || !m[1]) return ""; try { return decodeURIComponent(m[1].replace(/\+/g, " ")).trim(); } catch (e) { return ""; } } function domainAttr() { var h = location.hostname; if (!h || h === "localhost" || /^\d+\.\d+\.\d+\.\d+$/.test(h)) return ""; var parts = h.split("."); if (parts.length < 2) return ""; return "; domain=." + parts.slice(-2).join("."); } function persist(name, value) { if (!value || value.length > 512) return; var exp = new Date(Date.now() + 31536000000).toUTCString(); document.cookie = name + "=" + value + "; expires=" + exp + "; path=/" + domainAttr() + "; SameSite=Lax"; try { localStorage.setItem(name, value); sessionStorage.setItem(name, value); } catch (e) {} } var kk = param("kk"); var fromKk = param("fromkk") === "1"; var gclid = param("gclid") || param("kgclid"); var msclkid = param("msclkid"); if (kk) persist("kelkooId", kk); if ((kk || fromKk) && gclid) persist("kk_gclid", gclid); if ((kk || fromKk) && msclkid) persist("kk_msclkid", msclkid); function kick() { var T = window.KELKOO && window.KELKOO.Tracking; if (!T || typeof T.setCookies !== "function") return; if (document.readyState === "loading") return; try { T.setCookies(); } catch (e) {} } var s = document.getElementById("kelkoo-leadtag-js"); if (s) s.addEventListener("load", kick); })();
Blog & Guides
Guides, comparisons, and news about software licenses
Subscribe to receive the latest guides, comparisons, and exclusive offers directly in your inbox.
No spam, only useful content. Unsubscribe anytime.