1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6
6<script> 7 // Third-party-noise guard (must be first script in <head> so its 8 // capture-phase listeners register before Vite's runtime-error client 9 // is injected). gtag/GA4/Google Ads pings, LinkedIn Insight, and other 10 // vendor scripts occasionally `throw <non-Error>` (an empty object, 11 // string, or aborted-fetch rejection) when a beacon is blocked or 12 // returns 0/204. Replit's vite-plugin-runtime-error-modal logs these 13 // as `[RUNTIME_ERROR]{...message:"(unknown runtime error)"}`, which 14 // the workflow monitor flags as FAILED even though the app is healthy. 15 // This guard suppresses only those non-Error / unknown-error events; 16 // real Error throws (with a real message + stack) pass through. 17 (function () { 18 function isThirdPartyNoise(value) { 19 if (value == null) return true; 20 if (value instanceof Error) { 21 return !value.message || value.message === "(unknown runtime error)"; 22 } 23 return true; 24 } 25 window.addEventListener( 26 "securitypolicyviolation", 27 function (event) { 28 console.warn("[CSP]", event.violatedDirective, "\u2192", event.blockedURI); 29 event.stopImmediatePropagation(); 30 }, 31 true, 32 ); 33 window.addEventListener( 34 "error", 35 function (event) { 36 // Suppress only cross-origin / third-party script errors where 37 // `event.error` is not a real Error instance (CSP-blocked script 38 // loads, `throw "string"`, etc.). Real user-code errors carry a 39 // populated Error and pass through untouched. 40 if (isThirdPartyNoise(event.error)) { 41 event.stopImmediatePropagation(); 42 event.preventDefault(); 43 } 44 }, 45 true, 46 ); 47 window.addEventListener( 48 "unhandledrejection", 49 function (event) { 50 if (isThirdPartyNoise(event.reason)) { 51 console.warn("[unhandledrejection-suppressed]", event.reason); 52 event.stopImmediatePropagation(); 53 event.preventDefault(); 54 } 55 }, 56 true, 57 ); 58 })(); 59 </script>
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 <!-- favicon.jpg is deliberately NOT listed here: it is a 1080x1080 / 88KB JPEG kept 77 only as the schema.org Organization `logo`. Browsers pick the largest declared 78 icon for high-DPI tabs, so listing it made them download 88KB to paint 16px. --> 79 <link rel="icon" type="image/x-icon" href="/favicon.ico?v=2" /> 80 <link rel="icon" type="image/png" href="/favicon.png?v=2" /> 81 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 82 <link rel="apple-touch-icon-precomposed" sizes="180x180" href="/apple-touch-icon-precomposed.png" /> 83 <link rel="manifest" href="/site.webmanifest" /> 84 <meta name="theme-color" content="#0a0a0a" /> 85 86 <!-- The GA4 / LinkedIn dns-prefetch hints were removed with the consent gate 87 (#377). Their purpose was to warm DNS ahead of a load that was going to 88 happen anyway; now that the vendors wait for an affirmative choice, the 89 hints resolve advertising hostnames on behalf of visitors who go on to 90 decline â a lookup made for a connection that will never open. 91 92 The Calendly hint went the same way, one release later. Its "it warms a 93 first-party-initiated booking flow" justification stopped being true at 94 #474: booking assets now wait for intent (a scroll toward /live-hosts' 95 booking section, or the placeholder click), so the hint was resolving 96 Calendly's hostname at FIRST PAINT ON EVERY ROUTE on behalf of the vast 97 majority of visitors who never open that connection â and it was doing 98 so from a second, ungated place, while the
98<script> half obeyed the 99 loader's gate. The warm-up was not dropped, it moved INTO the gate: 100 client/src/lib/calendly-loader.ts now emits preconnect + widget.css + 101 widget.js together, on intent. 102 103 So: this document names no Calendly host at all, and must not start to 104 (widget.css here was also a render-blocking stylesheet paid by every 105 route). tests/unit/calendly-asset-host-single-source.test.ts enforces 106 that the loader is the only file in client/ that may name it. --> 107 108 <!-- NOTE: do not re-add a preload for /og-image.jpg. It is only ever used as the 109 og:image / twitter:image meta value and is never painted on any route, so a 110 high-priority image preload just burned 43KB of LCP-critical bandwidth on 111 every page load (and tripped Chrome's "preloaded but not used" warning). --> 112 <!-- Typeface payload, in LCP priority order. 113 `Bricolage Grotesque` is the display face and therefore carries the <h1> on 114 "/", i.e. the LCP element itself â it must be in flight before the CSS chunk 115 resolves or the headline paints in the fallback and re-flows on swap. 116 `Martian Mono` carries every eyebrow/index/metric label, several of which sit 117 above the fold (the hero partner badge); a mono is far wider than the sans 118 fallback, so an un-preloaded swap there is a visible reflow, not a recolor. 119 Both are the `latin` subsets only (41KB + 11KB); the latin-ext companions are 120 declared below with a unicode-range and fetched on demand. Do not preload 121 those, and do not preload the mono's weights beyond 500 â nothing renders 122 them. --> 123 <link rel="preload" href="/fonts/bricolage-grotesque-latin.woff2" as="font" type="font/woff2" crossorigin /> 124 <link rel="preload" href="/fonts/plus-jakarta-sans-latin.woff2" as="font" type="font/woff2" crossorigin /> 125 <link rel="preload" href="/fonts/martian-mono-latin.woff2" as="font" type="font/woff2" crossorigin /> 126 <style> 127 /* Display â Bricolage Grotesque (OFL). Variable weight 400..8
12700. */ 128 @font-face { 129 font-family: "Bricolage Grotesque"; 130 font-style: normal; 131 font-weight: 400 800; 132 font-display: swap; 133 src: url("/fonts/bricolage-grotesque-latin.woff2") format("woff2"); 134 unicode-range: 135 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, 136 U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 137 } 138 @font-face { 139 font-family: "Bricolage Grotesque"; 140 font-style: normal; 141 font-weight: 400 800; 142 font-display: swap; 143 src: url("/fonts/bricolage-grotesque-latin-ext.woff2") format("woff2"); 144 unicode-range: 145 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, 146 U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 147 } 148 /* Signal/meta â Martian Mono (OFL). Single weight 500; labels only. */ 149 @font-face { 150 font-family: "Martian Mono"; 151 font-style: normal; 152 font-weight: 500; 153 font-display: swap; 154 src: url("/fonts/martian-mono-latin.woff2") format("woff2"); 155 unicode-range: 156 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, 157 U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 158 } 159 @font-face { 160 font-family: "Martian Mono"; 161 font-style: normal; 162 font-weight: 500; 163 font-display: swap; 164 src: url("/fonts/martian-mono-latin-ext.woff2") format("woff2"); 165 unicode-range: 166 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, 167 U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 168 } 169 @font-face { 170 font-family: "Plus Jakarta Sans"; 171 font-style: normal; 172 font-weight: 200 800; 173 font-display: swap; 174 src: url("/fonts/plus-jakarta-sans-latin.woff2") format("woff2"); 175 unicode-range: 176 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, 177 U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 178 } 179 @font-face { 180 font-family: "Plus Jakarta Sans"; 181 font-style: normal; 182 font-weight: 200 800; 183 font-display: swap; 184 src: url("/fonts/plus-jakarta-sans-latin-ext.woff2") format("woff2"); 185 unicode-range: 186 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, 187 U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 188 } 189 /* METRIC-COMPATIBLE FALLBACK â GENERATED, DO NOT HAND-EDIT. 190 Produced by `npm run fonts:metrics` from the real cmap + hmtx + hhea tables 191 of plus-jakarta-sans-latin.woff2; `npm run fonts:metrics -- --check` (and 192 tests/unit/font-metrics.test.ts) fail if this block drifts from the font. 193 194 Why it exists: font-display:swap paints the fallback first, and a line of 195 real copy set in Plus Jakarta Sans is ~5% wider than the same line in 196 Arial. Without these overrides paragraphs re-wrap on swap and everything 197 below them moves, which is pure CLS, worst on exactly the slow connections 198 the p75 target is about. size-adjust scales Arial's glyphs so a text run 199 matches PJS's width; the ascent/descent overrides divide by that same 200 factor so the line box height is unchanged. 201 202 size-adjust is the ratio of FREQUENCY-WEIGHTED average advances, not of 203 OS/2 xAvgCharWidth â that ratio (132.53%, shipped until 2026-09) compared 204 an all-glyph mean with a weighted-lowercase one and set fallback text 27% 205 too wide. See script/font-metrics/fallback-overrides.ts. 206 207 The body sans is split by font-weight: 100â549 over Arial, 550â900 over 208 Arial Bold, because a single regular face makes the browser synthesize 209 bold, and synthetic bold keeps regular advances â bold runs grew ~3.4% 210 on swap. The display face (h1âh3, which render bold) is over Arial Bold. The display stack is declared in 211 client/src/styles/theme-tokens.css. */ 212 @font-face { 213 font-family: "Plus Jakarta Sans Fallback"; 214 font-weight: 100 549; 215 src: local("Arial"); 216 size-adjust: 105.05%;
217 ascent-override: 98.81%; 218 descent-override: 21.13%; 219 line-gap-override: 0.00%; 220 } 221 @font-face { 222 font-family: "Plus Jakarta Sans Fallback"; 223 font-weight: 550 900; 224 src: local("Arial Bold"), local("Arial-BoldMT"); 225 size-adjust: 100.92%; 226 ascent-override: 102.86%; 227 descent-override: 22.00%; 228 line-gap-override: 0.00%; 229 } 230 @font-face { 231 font-family: "Bricolage Grotesque Fallback"; 232 src: local("Arial Bold"), local("Arial-BoldMT"); 233 size-adjust: 101.89%; 234 ascent-override: 91.28%; 235 descent-override: 26.50%; 236 line-gap-override: 0.00%; 237 } 238 html, 239 body { 240 margin: 0; 241 background: #0a0a0a; 242 color: #f2f2f2; 243 /* "Plus Jakarta Sans Fallback" sits immediately after the webfont so it is 244 what actually paints during swap. The generic stack stays behind it as a 245 last resort (a device with no Arial and no Roboto). */ 246 font-family: 247 "Plus Jakarta Sans", 248 "Plus Jakarta Sans Fallback", 249 system-ui, 250 -apple-system, 251 Segoe UI, 252 Roboto, 253 sans-serif; 254 -webkit-font-smoothing: antialiased; 255 text-rendering: optimizeLegibility; 256 overflow-x: hidden; 257 max-width: 100%; 258 } 259 #root { 260 min-height: 100vh; 261 background: #0a0a0a; 262 } 263 /* The skip link is the FIRST element in <body>, and its `sr-only` class lives in the 264 Tailwind bundle â which arrives after first paint. Until then the anchor is a plain 265 inline element and generates a ~21px line box in normal flow, so <main> paints at 266 y=21 and snaps to y=0 the moment the bundle applies `position:absolute`. That is an 267 unconditional layout shift on EVERY route: measured 0.0146 desktop / 0.0259 mobile 268 on 170/170 route x viewport probes of the local deploy (2026-09-18) â 29%/52% of the 269 0.05 `cumulative-layout-shift` budget in lighthouserc.cjs, spent before a page does 270 anything. Giving the link its out-of-flow geometry inline removes the line box from 271 the very first layout. 272 273 Scoped `:not(:focus)` rather than duplicating `.sr-only`, so the `focus:not-sr-only` 274 utilities that reveal the link on keyboard focus are never competing with this rule: 275 when the link is focused this block simply does not match. Keep in sync with the 276 anchor's own class list below; tests/unit/skip-link-critical-css.test.ts fails if 277 either side drifts. */ 278 a[data-testid="link-skip-to-content"]:not(:focus) { 279 position: absolute; 280 width: 1px; 281 height: 1px; 282 padding: 0; 283 margin: -1px; 284 overflow: hidden; 285 clip: rect(0, 0, 0, 0); 286 white-space: nowrap; 287 border-width: 0; 288 } 289 /* Critical above-the-fold styles applied to the React route fallback (#root [data-testid="page-skeleton"]) so / paints background, nav stripe, and hero shell before the main CSS chunk arrives. */ 290 [data-testid="page-skeleton"] { 291 min-height: 100vh; 292 background: #0a0a0a; 293 } 294 [data-testid="page-skeleton"] > div:first-child { 295 height: 5rem; 296 background: rgba(10, 10, 10, 0.9); 297 border-bottom: 1px solid rgba(255, 255, 255, 0.06); 298 } 299 [data-testid="hero-skeleton"] { 300 position: relative; 301 overflow: hidden; 302 background: #0a0a0a; 303 padding-top: 8rem; 304 padding-bottom: 3.5rem; 305 min-height: 100dvh; 306 display: flex; 307 flex-direction: column; 308 justify-content: center; 309 } 310 @media (min-width: 768px) { 311 [data-testid="hero-skeleton"] { 312 padding-top: 10rem; 313 padding-bottom: 5rem; 314 } 315 } 316 @media (min-width: 1024px) { 317 [data-testid="hero-skeleton"] { 318 padding-top: 11rem; 319 padding-bottom: 6rem; 320 } 321 } 322 </style> 323
323<script type="module" crossorigin src="/assets/index-DAE-z7YX.js"></script>
323 324 <link rel="modulepreload" crossorigin href="/assets/vendor-react-Ck0C0d3-.js"> 325 <link rel="modulepreload" crossorigin href="/assets/vendor-router-BNDQlcI8.js"> 326 <link rel="modulepreload" crossorigin href="/assets/vendor-query-7BnrJQv7.js"> 327 <link rel="modulepreload" crossorigin href="/assets/vendor-radix-CnNGGrEI.js"> 328 <link rel="stylesheet" crossorigin href="/assets/index-X5uefO4-.css"> 329 <title>Contact MomentIQ â Talk to a TikTok Shop Strategist</title> 330 <meta name="description" content="Connect with a MomentIQ strategist for a custom TikTok Shop growth plan spanning commerce operations, creators, content, LIVE, and paid media." /> 331 <meta property="og:title" content="Contact MomentIQ â Talk to a TikTok Shop Strategist" /> 332 <meta property="og:description" content="Connect with a MomentIQ strategist for a custom TikTok Shop growth plan spanning commerce operations, creators, content, LIVE, and paid media." /> 333 <meta property="og:type" content="website" /> 334 <meta property="og:url" content="https://bemomentiq.com/contact-us" /> 335 <meta property="og:image" content="https://bemomentiq.com/og-image.jpg" /> 336 <meta property="og:site_name" content="MomentIQ" /> 337 <meta name="twitter:card" content="summary_large_image" /> 338 <meta name="twitter:site" content="@babormomentiq" /> 339 <meta name="twitter:title" content="Contact MomentIQ â Talk to a TikTok Shop Strategist" /> 340 <meta name="twitter:description" content="Connect with a MomentIQ strategist for a custom TikTok Shop growth plan spanning commerce operations, creators, content, LIVE, and paid media." /> 341 <meta name="twitter:image" content="https://bemomentiq.com/og-image.jpg" /> 342 <link rel="canonical" href="https://bemomentiq.com/contact-us" /> 343
343<script type="application/ld+json">{"@context":"https://schema.org","@type":"ContactPage","name":"Contact MomentIQ","description":"Connect with a MomentIQ strategist for TikTok Shop growth","url":"https://bemomentiq.com/contact-us","publisher":{"@type":"Organization","name":"MomentIQ","url":"https://bemomentiq.com"}}</script>
343 344
344<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://bemomentiq.com"},{"@type":"ListItem","position":2,"name":"Contact Us","item":"https://bemomentiq.com/contact-us"}]}</script>
344 345 <style data-premount>@font-face{font-family:"Premount Sans Fallback";font-weight:100 549;src:local("Arial");size-adjust:105.05%;ascent-override:98.81%;descent-override:21.13%;line-gap-override:0.00%;}@font-face{font-family:"Premount Sans Fallback";font-weight:550 900;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:100.92%;ascent-override:102.86%;descent-override:22.00%;line-gap-override:0.00%;}@font-face{font-family:"Premount Display Fallback";src:local("Arial");size-adjust:105.44%;ascent-override:88.20%;descent-override:25.61%;line-gap-override:0.00%;}.ssr-premount{max-width:72rem;margin:0 auto;padding:6rem 1.25rem 3rem;font-family:"Plus Jakarta Sans","Premount Sans Fallback",system-ui,sans-serif;}.ssr-premount h1,.ssr-premount h2,.ssr-premount h3{font-family:"Bricolage Grotesque","Premount Display Fallback",sans-serif;}.ssr-premount h1{font-family:"Premount Display Fallback",sans-serif;font-size:2.25rem;line-height:1.12;letter-spacing:-0.02em;margin:0 0 1rem;}@media (min-width:640px){.ssr-premount h1{font-size:3.25rem;}}@media (min-width:768px){.ssr-premount h1{font-size:4.75rem;}}.ssr-premount h2{font-size:clamp(1.25rem,2.4vw,1.75rem);margin:2rem 0 0.6rem;}.ssr-premount p,.ssr-premount li{color:#c9c9cf;line-height:1.65;max-width:65ch;}.ssr-premount a{color:#c084fc;text-decoration:none;}.ssr-premount a:hover{text-decoration:underline;}.ssr-premount nav ul{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:0.4rem 1.1rem;}.ssr-premount img{max-width:100%;height:auto;border-radius:12px;}</style> 346 </head> 347 <body> 348 <!-- The <noscript> LinkedIn tracking pixel was removed with the consent gate 349 (#377). It fired an advertising beacon for exactly the visitors who 350 cannot be asked â a consent banner is a React component, so a 351 JS-disabled visitor had no way to accept it and no way to decline it 352 either. "Decline means the pixel never loads" cannot be true while a 353 markup-only pixel loads unconditionally, and an un-declinable pixel is 354 the one case where the honest option is not to ship it. --> 355 356 <a 357 href="#main-content" 358 class="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[9999] focus:px-4 focus:py-2 focus:bg-purple-600 focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg focus:outline-none" 359 data-testid="link-skip-to-content" 360 >Skip to content</a 361 > 362 <main id="main-content" role="main"><div id="root"><div class="ssr-premount"><h1>Contact MomentIQ â Talk to a TikTok Shop Strategist</h1><p>Connect with a MomentIQ strategist for a custom TikTok Shop growth plan spanning commerce operations, creators, content, LIVE, and paid media.</p> 363<p class="page-byline">By <span itemprop="author" itemscope itemtype="https://schema.org/Person"><a href="https://bemomentiq.com/about" itemprop="url"><span itemprop="name">Alex Elsea</span></a></span>, Founder of MomentIQ â Reviewed <time itemprop="dateModified" datetime="2026-05-05">May 5, 2026</time></p> 364<section><h2>Contact MomentIQ</h2> 365<p>Talk to a TikTok Shop strategist about growing your brand across commerce operations, creators, content, LIVE, and paid media.</p> 366<ul><li>Response time: Within 24 hours</li><li>Custom strategy deck: Within 48 hours</li></ul></section> 367<nav aria-label="Main navigation"><ul> 368<li><a href="https://bemomentiq.com">Home</a></li> 369<li><a href="https://bemomentiq.com/solutions">Solutions</a></li> 370<li><a href="https://bemomentiq.com/solutions/tiktok-shop-agency">TikTok Shop Agency</a></li> 371<li><a href="https://bemomentiq.com/solutions/tiktok-shop-management">TikTok Shop Management</a></li> 372<li><a href="https://bemomentiq.com/solutions/live-selling">Live Selling</a></li> 373<li><a href="https://bemomentiq.com/solutions/fixed-rate-creators">Fixed Rate Creators</a></li> 374<li><a href="https://bemomentiq.com/solutions/affiliate-outreach">Affiliate Outreach</a></li> 375<li><a href="https://bemomentiq.com/solutions/tiktok-ads">TikTok Ads</a></li> 376<li><a href="https://bemomentiq.com/solutions/content-strategy">Content Strategy</a></li> 377<li><a href="https://bemomentiq.com/platform">Platform</a></li> 378<li><a href="https://bemomentiq.com/our-work">Our Work</a></li> 379<li><a href="https://bemomentiq.com/about">About</a></li> 380<li><a href="https://bemomentiq.com/contact-us">Contact</a></li> 381<li><a href="https://bemomentiq.com/blog">Blog</a></li> 382</ul></nav> 383<footer><p>© 2026 MomentIQ. All rights reserved.</p> 384<ul> 385<li><a href="https://bemomentiq.com/privacy-policy">MomentIQ Privacy</a></li> 386<li><a href="https://bemomentiq.com/terms-of-service">MomentIQ Terms</a></li> 387<li><a href="https://bemomentiq.com/contact-us">Talk to MomentIQ</a></li> 388<li><a href="https://bemomentiq.com/blog">MomentIQ Academy</a></li> 389</ul></footer></div></div></main> 390 <!-- React portals the visible site footer here so its contentinfo landmark 391 is a sibling of <main>, never a descendant of it. --> 392 <div id="site-footer-root"></div> 393 394
394<script> 395 // Analytics QUEUE STUBS only â zero network. The vendor
395<script> fetches for 396 // GA4 and LinkedIn Insight are injected later, after LCP, by 397 // client/src/lib/third-party-loader.ts (see its module header). 398 // 399 // These stubs used to live inside the same DOMContentLoaded listener that 400 // injected the scripts. DOMContentLoaded fires BEFORE the lazy route chunk 401 // resolves and the hero paints on a cold mobile load, so googletagmanager.com 402 // and snap.licdn.com â plus their beacon fan-out to google-analytics.com and 403 // px.ads.linkedin.com â were downloading and executing inside the 404 // LCP-critical window. The epic budget for this surface is 0 third-party 405 // bytes before LCP. 406 // 407 // Installing the stubs synchronously here (and only the stubs) is what makes 408 // the deferral lossless: both vendors drain the queue their stub filled when 409 // the real script finally executes â gtag replays `dataLayer`, insight.min.js 410 // replays `lintrk.q` â so `page_view` and `web_vitals` events emitted before 411 // the fetch completes are preserved, not dropped. Do NOT move these into a 412 // module: analytics-core.ts calls window.gtag as soon as the app boots, and a 413 // module stub could lose the earliest events to a race. 414 (function () { 415 // Keep in sync with analytics-host.ts. Previews and local test runs must 416 // never configure the production GA property, even before vendor loading. 417 var hostname = window.location.hostname; 418 if (hostname === "bemomentiq.com" || hostname === "www.bemomentiq.com") { 419 window.dataLayer = window.dataLayer || []; 420 window.gtag = function () { 421 window.dataLayer.push(arguments); 422 }; 423 window.gtag("js", new Date()); 424 // ScrollToTop/analytics-core emits the initial and SPA page views. 425 // The config default would count the initial visit a second time. 426 window.gtag("config", "G-EGDD4RY5ED", { send_page_view: false }); 427 } 428 429 window._linkedin_partner_id = "8657681"; 430 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 431 window._linkedin_data_partner_ids.push(window._linkedin_partner_id); 432 if (!window.lintrk) { 433 window.lintrk = function (a, b) { 434 window.lintrk.q.push([a, b]); 435 }; 436 window.lintrk.q = []; 437 } 438 })(); 439 </script>
439 440 </body> 441</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.