1<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Mon Sep 28 2026 12:02:43 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="desquared.webflow.io" data-wf-page="656dc9533dd62bedbe4f5f9b" data-wf-site="64621897363076eb1720080a" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Products | Desquared</title><meta content="Discover Desquared's impressive work. Explore the digital products we've created for our esteemed partners. Learn more now!" name="description"/><meta content="Products | Desquared" property="og:title"/><meta content="Discover Desquared's impressive work. Explore the digital products we've created for our esteemed partners. Learn more now!" property="og:description"/><meta content="Products | Desquared" name="twitter:title"/><meta content="Discover Desquared's impressive work. Explore the digital products we've created for our esteemed partners. Learn more now!" name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/64621897363076eb1720080a/css/desquared.webflow.shared.b85365d38.min.css" rel="stylesheet" type="text/css" integrity="sha384-uFNl04zhoKD8wPTwdstDqJdbh3gmTqSGzBs/497HUL4Ez35fsWG5Rbw4T0lwqVVG" crossorigin="anonymous"/>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/64621897363076eb1720080a/64affa23aa3f1a2b032f1627_favicon-32x32.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/64621897363076eb1720080a/64affaf30d20e58cfb88a8ec_Webclip.png" rel="apple-touch-icon"/><link href="https://www.thinkdesquared.com/products" rel="canonical"/><!--International Phone Input Library--> 2<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/build/css/intlTelInput.css"> 3 4<style> 5 .iti { 6 display: block; 7 } 8 9 .iti-dropdown-bg { 10 background-color: #292929; 11 } 12 13 .iti--inline-dropdown .iti__dropdown-content { 14 border-radius: 0.5rem; 15 background-color: #292929; 16 color: #E4EDF4; 17 margin-top: 0.5rem; 18 border: 1px solid #292929; 19 box-shadow: none; 20 padding: 0rem 0.5rem; 21 22 } 23 24 .iti__dropdown-content { 25 margin: 0.5rem 0rem; 26 border-radius: 0.5rem; 27 } 28 29 .iti__search-input { 30 padding: 1rem; 31 background-color: #212121; 32 margin: 0.5rem 0rem; 33 border-radius: 0.5rem; 34 width: 100%; 35 } 36 .iti__search-input :focus { 37 border: 1px solid #292929; 38 } 39 40 .iti__country { 41 padding: 1rem 0.5rem; 42 margin: 0.5rem; 43 border-radius: 0.5rem; 44 } 45 46 li { 47 margin-bottom: 0rem; 48 } 49 50 .iti__country:hover { 51 background-color: rgba(0, 0, 0, 0.05); 52 } 53 54 .iti__selected-country { 55 padding-left: 1rem; 56 } 57 58</style> 59 60<!-- [Attributes by Finsweet] Query Param | Needed for utm fields -->
61<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-queryparam@1/queryparam.js"></script>
61 62 63<!-- Google tag (gtag.js) -->
vendor: 106 bytes, lines 63-64
63 64<script type="fs-cc" fs-cc-categories="analytics" async src="https://www.googletagmanager.com/gtag/js?id=
64G-7YNB7Y27E1
vendor: 12 bytes, line 64
64"></script>
65<script type="fs-cc" fs-cc-categories="analytics"> 66
vendor: 130 bytes, lines 66-69
66window.dataLayer = window.dataLayer || []; 67 function gtag(){dataLayer.push(arguments);} 68 gtag('js', new Date()); 69 gtag('config', '
69G-7YNB7Y27E1
vendor: 4 bytes, line 69
69');
70</script>
70 71<!-- Finsweet Cookie Consent - must be placed after the last third-party script that issues cookies -->
72<script async src="https://cdn.jsdelivr.net/npm/@finsweet/cookie-consent@1/fs-cc.js" fs-cc-mode="opt-in" fs-cc-expires="180"></script>
72 73 74<style type="text/css"> 75 html { 76 77 -webkit-tap-highlight-color: rgba(0,0,0,0); 78 } 79</style> 80
81<script defer data-domain="thinkdesquared.com" src="https://plausible.io/js/script.js"></script>
81 82 83<!-- [Attributes by Finsweet] Disable scrolling -->
84<script defer src="https://cdn.jsdelivr.net/npm/@finsweet/attributes-scrolldisable@1/scrolldisable.js"></script>
84 85 86<style> 87 /* Disable horizontal scrolling */ 88 body { 89 overflow-x: hidden; 90 } 91</style></head><body class="body"><div style="display:block;opacity:1" class="loading-state"></div><div data-animation="default" class="navbar w-nav" data-easing2="ease" fs-scrolldisable-element="smart-nav" data-easing="ease" data-collapse="medium" data-w-id="948d25b8-b895-589c-b5d0-edb816b6999a" role="banner" data-duration="400" id="NavBar" data-doc-height="1"><div class="navbartopspace"></div><div class="container-navbar w-container"><div class="logo-block-navbar"><a href="/" class="link-logo-navbar w-nav-brand"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/6551cfdf99137cd616e28be2_desquared-light-on-dark.svg" loading="lazy" alt="Desquared logo" class="logo-size-navbar"/></a></div><figure role="navigation" class="nav-menu w-nav-menu"><div class="separator-navbar"></div><a href="/products" aria-current="page" class="link-navbar w-inline-block w--current"><div class="text-style-navbar">Products</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/><div class="dot"></div></a><div class="separator-navbar"></div><a href="/agency" class="link-navbar w-inline-block"><div class="text-style-navbar">Agency</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/><div class="dot"></div></a><div class="separator-navbar"></div><a href="/expertise" class="link-navbar w-inline-block"><div class="text-style-navbar">Expertise</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/about" class="link-navbar w-inline-block"><div class="text-style-navbar">About</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/careers" class="link-navbar w-inline-block"><div class="text-style-navbar">Careers</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/lets-collaborate" class="link-navbar in-burger-menu w-inline-block"><div class="text-style-navbar">Talk With Us</div><div class="dot"></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/649996f7863dbe31ff3ebe54_SliderRight.svg" loading="lazy" alt="" class="navbar_icon"/></a><div class="separator-navbar"></div><a href="/lets-collaborate" class="button-navbar w-inline-block"><div class="text-style-button is-navbar">Talk With Us</div></a></figure><div fs-scrolldisable-element="toggle" class="menu-button w-nav-button"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64ef4ef49c2576e713eb4569_burger%20menu.svg" loading="lazy" alt="" class="icon_burger"/><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64f0b059213cb2f108c2bb27_close.svg" loading="lazy" alt="" class="icon_close"/></div></div><div class="navbar-bg"></div></div><div data-w-id="42e2b574-68d0-8dc7-986b-aff1281ba616" class="cursor-wrapper"><div class="cursor-circle"><div class="cursor-text">VIEW</div></div><div class="w-embed"><style> 92.cursor-wrapper{pointer-events: none;} 93</style></div></div><div class="page-wrapper"><main class="main-wrapper"><div class="space-140px"></div><section class="section_products-hero"><div class="padding-global"><div class="container-hug"><h1 class="text-style-circular-140px">Operated, designed, and expertly engineered by <span class="heading-focus">Desquared.</span></h1></div></div></section><div class="space-160px"></div><section class="section_products-product"><div class="padding-global"><div class="container-hug"><a href="/box" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250.webp" loading="eager" sizes="(max-width: 2900
93px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-500.webp 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-800.webp 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-1080.webp 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-1600.webp 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-2000.webp 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250-p-2600.webp 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5680e466350d5c4446d_501810221851873b7d3e5ca88662fb02_BOX%202900%20x%201250.webp 2900w" alt="" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Box</div><div class="text-style-circular-18px opacity-60">The food delivery app that rewards your appetite.</div></div></a></div></div></section><div class="space-100px"></div><section class="section_products-product"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><a href="/wave-grocery" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250.jpg" loading="lazy" sizes="(max-width: 2900px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-500.jpg 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-800.jpg 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-1080.jpg 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-1600.jpg 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-2000.jpg 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250-p-2600.jpg 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b71b7ab8982a757bd2_WG%202900%20x%201250.jpg 2900w" alt="Open laptop on a white desk showing the home page of a website build with the Wave Grocery product" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Wave Grocery</div><div class="text-style-circular-18px opacity-60">The complete online grocery platform.</div></div></a></div></div></div></section><div class="space-100px"></div><section class="section_products-product"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><a href="/wave-cxm" class="product-link w-inline-block"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250.jpg" loading="lazy" sizes="(max-width: 2900px) 100vw, 2900px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-500.jpg 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-800.jpg 800w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-1080.jpg 1080w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-1600.jpg 1600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250-p-2000.jpg 2000w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%2029
9300%20x%201250-p-2600.jpg 2600w, https://cdn.prod.website-files.com/64621897363076eb1720080a/675ff5b15027e3a2e89d7c9e_Wave%20CXM%202900%20x%201250.jpg 2900w" alt="" class="image-product-new"/><div class="align_product-title"><div class="text-style-atlante-40px">Wave CXM</div><div class="text-style-circular-18px opacity-60">The all-in-one loyalty platform.</div></div></a></div></div></div></section><div class="space-220px"></div></main></div><footer class="section_footer w-container"><section class="section-collaborate"><div class="interaction_showonscroll"><div class="padding-global"><div class="container-hug"><div class="separator-coral"></div><div class="space-footer"></div><div class="text-style-circular-56px">Letâs create something amazing.â<span class="change-line">â</span><span class="heading-focus">Together.</span></div><div class="space-40px"></div><a href="#" color="coral" email="hello" class="text-style-link">[email protected]</a></div></div></div></section><div class="space-120px"></div><div class="padding-global"><div class="container-hug"><div class="separator transparent-onyx"></div><div class="space-80px"></div><div class="align_footer"><div class="align_footer_content"><div class="alignvertical"><div class="footercategories">Company</div><a href="/expertise" class="link-footer">Expertise</a><a href="/about" class="link-footer">About</a><a href="/careers" class="link-footer">Careers</a><a href="/lets-collaborate" class="link-footer">Contact</a></div><div class="alignvertical gap-2px"><div class="footercategories">PRODUCTS</div><a href="/box" class="link-footer">Box</a><a href="/wave-cxm" class="link-footer">Wave CXM</a><a href="/wave-grocery" class="link-footer">Wave Grocery</a><a href="/agency" class="link-footer">Agency</a></div><div class="alignvertical gap-2px"><div class="footercategories">follow us</div><a href="https://www.linkedin.com/company/desquared/" target="_blank" class="link-footer">LinkedIn</a><a href="https://www.facebook.com/thinkdesquared/" target="_blank" class="link-footer">Facebook</a></div><div class="alignvertical gap-2px"><div class="footercategories">SAY HELLO</div><a href="#" email="hello" class="link-footer">[email protected]</a><a href="tel:+302107472700" class="link-footer">+30 2107472700</a><div class="text-style-address">Athens Tower A<br/>2-4 Mesogeion Avenue<br/>Athens, 11527 Greece</div></div><a id="w-node-_50ece748-f66c-d125-5f8c-673b3e5ffe27-5cd17986" href="/" class="linklogo w-inline-block"><div id="w-node-d991572e-761b-319b-7944-a0a7660a540b-5cd17986" class="alignvertical_center gap-15px"><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/64624f597733d5536bdf6d82_logo_big.svg" loading="lazy" alt="desquared logo" class="logo_footer"/><div class="text-style-estd">estd. 2012</div></div></a></div><div class="align_footer_legal"><div class="alignhorizontal_center gap-8px"><div class="text-style-handcrafted">Handcrafted with</div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/6467886581b75a64e45086d1_Heart.svg" loading="lazy" alt="Desquared heart" class="heart_small"/></div><div class="footer-additional-info"><div class="align_footer_legal_links"><div fs-cc="manager" class="fs-cc-manager_component"><div id="cookies_bottom_icon" fs-cc="open-preferences" class="fs-cc-manager_button"><a href="#" class="text-style-circular-14px">Cookies Consent</a></div></div><a href="/privacy-policy-terms-of-use" class="text-style-circular-14px">Privacy Policy & Terms of Use</a></div><img src="https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1.png" loading="lazy" sizes="(max-width: 599px) 100vw, 599px" srcset="https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1-p-500.png 500w, https://cdn.prod.website-files.com/64621897363076eb1720080a/68542678d9c4750550898cf9_Banner_Psifiakos%20Metasx_1.png 599w" alt="" class="metasximatismos"/></div></div></div><div class="space-80px"></div></div></div></footer><div class="fs-cc-components"><div fs-cc="banner" class="fs-cc-banner_component"><div class="fs-cc-banner_container"><div class="fs-cc-banner_text">Hey there! Weâd like to utilize cookies to enhance your experience and analyze site usage to help us build better products together. Please tap âAcceptâ or customize your preferences. View our <a href="/privacy-policy-terms-of-use" class="link_onyx">Privacy Policy</a> for more information.</div><div class="fs-cc-banner_buttons-wrapper"><a fs-cc="allow" href="#" class="fs-cc-banner_button w-button">Accept</a><a fs-cc="deny" href="#" class="fs-cc-banner_button fs-cc-button-alt w-button">Decline</a><a fs-cc="open-preferences" href="#" class="fs-cc-banner_text-link">Preferences</a></div></div><div fs-cc="interaction" class="fs-cc-banner_trigger"></div></div><div fs-cc-scroll="disable" fs-cc="preferences" class="fs-cc-prefs_component w-form"><form id="cookie-preferences" name="wf-form-Cookie-Preferences" data-name="Cookie Preferences" method="get" class="fs-cc-prefs_form" data-wf-page-id="656dc9533dd62bedbe4f5f9b" data-wf-element-id="371644cb-c2fb-c3f0-ad93-1d0dd792952b"><div fs-cc="close" class="fs-cc-prefs_close"><div class="fs-cc-prefs_close-icon w-embed"><svg fill="currentColor" aria-hidden="true" focusable="false" viewBox="0 0 16 24"> 94 <path d="M9.414 8l4.293-4.293-1.414-1.414L8 6.586 3.707 2.293 2.293 3.707 6.586 8l-4.293 4.293 1.414 1.414L8 9.414l4.293 4.293 1.414-1.414L9.414 8z"></path> 95</svg></div></div><div class="fs-cc-prefs_content"><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_title">Privacy Preference Center</div></div><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_text">
95When you visit websites, they may store or retrieve data in your browser. This storage is often necessary for the basic functionality of the website. The storage may be used for marketing, analytics, and personalization of the site, such as storing your preferences. Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website. View our <a href="/privacy-policy-terms-of-use" class="link_onyx">Privacy Policy</a> for more information.</div></div><div class="space_1rem"></div><div class="fs-cc-prefs_space-small"><div class="fs-cc-prefs_title">Manage Consent Preferences by Category</div></div><div class="fs-cc-prefs_option"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Essential</div><div class="fs-cc-prefs_text"><strong class="bold-text-2">Always Active</strong></div></div><div class="fs-cc-prefs_text">These items are required to enable basic website functionality.</div></div><div class="fs-cc-prefs_option"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Analytics</div><label class="w-checkbox fs-cc-prefs_checkbox-field"><input id="Analytics" type="checkbox" name="Analytics" data-name="Analytics" fs-cc-checkbox="analytics" class="w-checkbox-input fs-cc-prefs_checkbox"/><span for="Analytics" class="fs-cc-prefs_checkbox-label w-form-label">Analytics</span><div class="fs-cc-prefs_toggle"></div></label></div><div class="fs-cc-prefs_text">These items help the website operator understand how its website performs, how visitors interact with the site, and whether there may be technical issues. This storage type usually doesnât collect information that identifies a visitor.</div></div><div class="fs-cc-prefs_option marketing"><div class="fs-cc-prefs_toggle-wrapper"><div class="fs-cc-prefs_label">Marketing</div><label class="w-checkbox fs-cc-prefs_checkbox-field"><input id="Marketing" type="checkbox" name="Marketing" data-name="Marketing" fs-cc-checkbox="marketing" class="w-checkbox-input fs-cc-prefs_checkbox"/><span for="Marketing" class="fs-cc-prefs_checkbox-label w-form-label">Marketing</span><div class="fs-cc-prefs_toggle"></div></label></div><div class="fs-cc-prefs_text">These items are used to deliver advertising that is more relevant to you and your interests. They may also be used to limit the number of times you see an advertisement and measure the effectiveness of advertising campaigns. Advertising networks usually place them with the website operatorâs permission.</div></div><div class="fs-cc-prefs_buttons-wrapper"><a fs-cc="submit" href="#" class="fs-cc-prefs_button accept w-button">Confirm my preferences and close</a></div><input type="submit" data-wait="Please wait..." class="fs-cc-prefs_submit-hide w-button" value="Submit"/><div class="w-embed"><style> 96/* smooth scrolling on iOS devices */ 97.fs-cc-prefs_content{-webkit-overflow-scrolling: touch} 98</style></div></div></form><div class="w-form-done"></div><div class="w-form-fail"></div><div fs-cc="close" class="fs-cc-prefs_overlay"></div><div fs-cc="interaction" class="fs-cc-prefs_trigger"></div></div></div>
98<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=64621897363076eb1720080a" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.schunk.3659fd028a6de7f9.js" type="text/javascript" integrity="sha384-DPCVTt8v0lzk8V7KxbQY/YVrrHqiLr1nyQ0DFLhmZSBZvbwMGo/YwCRr6xGuE01E" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.schunk.74e7e4d97427e3c8.js" type="text/javascript" integrity="sha384-fJtc0THJRHYGp1K8A94rwxalLw6EJ9KaI6+obGeY86Ud8JtAYHjsKgVsBKF+1II4" crossorigin="anonymous"></script>
98<script src="https://cdn.prod.website-files.com/64621897363076eb1720080a/js/webflow.a3da7703.224a2cbeff43fedc.js" type="text/javascript" integrity="sha384-Cmm3uWMMJprpwv5/i2yHZynWETUTKXrErvCL/sJsRB6ZmoVHshdvtyvFPz8Ch9mE" crossorigin="anonymous"></script>
98<script type="text/javascript"> 99 $(document).ready(function () { 100 function trackAnalyticsClickEvent(clickedElement) { 101 const _target = $(clickedElement); 102 103 try { 104 if (typeof gtag === "undefined") { 105 return; 106 } 107 var _eventName = _target.data("ga-event"); 108 109 if ( 110 !_eventName || 111 (typeof _eventName !== "string" && _eventName.trim().length === 0) 112 ) { 113 return; 114 } 115 116 const prefix = "data-ga-"; 117 const _gaAttributes = clickedElement.getAttributeNames().filter( 118 (_attr) => _attr.indexOf(prefix) > -1 && _attr !== "data-ga-event" 119 ); 120 121 const _params = _gaAttributes.reduce( 122 (previous, current) => { 123 const _paramName = current.replace(prefix, ""); 124 const _paramValue = clickedElement.getAttribute(current); 125 126 previous[_paramName] = _paramValue; 127 return previous; 128 }, 129 { page: window.location.pathname } 130 ); 131 132 gtag("event", _eventName, _params); 133 } catch (e) { 134 console.log("Error while adding ga event"); 135 } 136 } 137 138 $(document).on("click", "[data-ga-event]", function (e) { 139 trackAnalyticsClickEvent(this); 140 }); 141 }); 142</script>
142 143
144<script> 145 $(document).ready(function () { 146 try { 147 const linksToReplace = $("a[email]"); 148 149 const addressDictionary = { 150 hello: { 151 parts: ["hello", "@", "thinkdesquared", ".", "com"], 152 subject: "Say Hello", 153 }, 154 DPO: { 155 parts: ["dpo", "@", "thinkdesquared", ".", "com"], 156 subject: "Contact DPO - Desquared", 157 }, 158 }; 159 160 linksToReplace.each(function () { 161 const value = $(this).attr("email"); 162 163 if ( 164 value in addressDictionary && 165 addressDictionary[value].parts && 166 addressDictionary[value].parts.length > 0 167 ) { 168 const addressParts = 169 addressDictionary[value] && addressDictionary[value].parts 170 ? addressDictionary[value].parts 171 : []; 172 173 if (addressParts && addressParts.length > 0) { 174 const address = addressParts.join(""); 175 const hrefValue = 176 "mailto:" + 177 address + 178 "?subject=" + 179 encodeURIComponent(addressDictionary[value].subject); 180 $(this).attr("href", hrefValue); 181 $(this).text(address); 182 } 183 } 184 }); 185 } catch (error) { 186 console.error(error); 187 } 188}); 189 190</script>
190 191 192 193<style> 194 /*width*/ 195 ::-webkit-scrollbar { 196 width:8px; 197 } 198 /*track*/ 199 ::-webkit-scrollbar-track { 200 background:transparent; 201 } 202 203 /*thumb*/ 204 ::-webkit-scrollbar-thumb { 205 background: rgb(228, 237, 244, 0.2); 206 border-radius:8px; 207 } 208 209 /*thumb - cookies*/ 210 .fs-cc-prefs_component::-webkit-scrollbar-thumb { 211 background:rgb(33, 33, 33, 0.2); 212 } 213</style> 214 215<!-- UTM parameters -->
216<script> 217 // UTM parameters to track 218 const UTM_PARAMS = [ 219 'utm_source', 220 'utm_medium', 221 'utm_campaign', 222 'utm_id', 223 'utm_term', 224 'utm_content', 225 'gclid', 226 'fbclid' 227 ]; 228 229 // Get UTM parameters from URL 230 function getUTMParameters() { 231 const urlParams = new URLSearchParams(window.location.search); 232 const params = {}; 233 UTM_PARAMS.forEach(key => { 234 const value = urlParams.get(key); 235 if (value) params[key] = value; 236 }); 237 return params; 238 } 239 240 // Build updated URL with UTM parameters 241 function buildUrlWithParams(baseUrl, utmParams) { 242 try { 243 const urlObj = new URL(baseUrl, window.location.origin); 244 Object.entries(utmParams).forEach(([key, value]) => { 245 urlObj.searchParams.set(key, value); 246 }); 247 return urlObj.pathname + urlObj.search + urlObj.hash; 248 } catch (e) { 249 console.error('Error building URL:', e); 250 return baseUrl; 251 } 252 } 253 254 // Add UTM parameters to all internal links 255 function appendUTMParametersToLinks() { 256 const utmParams = getUTMParameters(); 257 if (Object.keys(utmParams).length === 0) return; 258 259 const internalLinks = document.querySelectorAll( 260 'a[href^="/"], a[href^="' + window.location.origin + '"]' 261 ); 262 263 internalLinks.forEach(link => { 264 const originalUrl = link.getAttribute('href'); 265 if (!originalUrl) return; 266 const updatedUrl = buildUrlWithParams(originalUrl, utmParams); 267 link.setAttribute('href', updatedUrl); 268 }); 269 } 270 271 // Run when DOM is ready 272 if (document.readyState === 'loading') { 273 document.addEventListener('DOMContentLoaded', appendUTMParametersToLinks); 274 } else { 275 appendUTMParametersToLinks(); 276 } 277</script>
277 278 279<!-- Track user journey, initial referrer, and entry time -->
280<script> 281 // Store the first referrer (if not from own site) in sessionStorage 282 function grabReferrer() { 283 if (sessionStorage.getItem("initialReferrer")) return; 284 285 const referrer = document.referrer; 286 if (referrer && !referrer.includes('desquared')) { 287 sessionStorage.setItem("initialReferrer", referrer); 288 } else { 289 sessionStorage.setItem("initialReferrer", "direct"); 290 } 291 } 292 293 // Track all pages visited today in localStorage 294 function trackUserJourney() { 295 const currentPath = window.location.pathname; 296 const visitedPaths = JSON.parse(localStorage.getItem('visitedPaths') || '{}'); 297 298 const today = new Date().toLocaleDateString('en-GB'); 299 300 if (!visitedPaths[today]) visitedPaths[today] = []; 301 302 const pathsToday = visitedPaths[today]; 303 if (pathsToday.length === 0 || pathsToday[pathsToday.length - 1] !== currentPath){ 304 pathsToday.push(currentPath); 305 } 306 307 localStorage.setItem('visitedPaths', JSON.stringify(visitedPaths)); 308 } 309 310 // Store the time user first entered the site in sessionStorage 311 function trackUserEntryTime() { 312 if (!sessionStorage.getItem('enteredAt')) { 313 sessionStorage.setItem('enteredAt', new Date().toLocaleString('en-GB')); 314 } 315 } 316 317 // Run tracking functions once DOM is ready 318 if (document.readyState === 'loading') { 319 document.addEventListener('DOMContentLoaded', () => { 320 grabReferrer(); 321 trackUserJourney(); 322 trackUserEntryTime(); 323 }); 324 } else { 325 grabReferrer(); 326 trackUserJourney(); 327 trackUserEntryTime(); 328 } 329</script>
329 330</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.