{"id":56570,"date":"2026-05-06T05:47:46","date_gmt":"2026-05-06T05:47:46","guid":{"rendered":"http:\/\/trueomni.com\/?page_id=56570"},"modified":"2026-05-06T22:43:27","modified_gmt":"2026-05-06T22:43:27","slug":"visitor-intelligence-api","status":"publish","type":"page","link":"https:\/\/trueomni.com\/spanish\/visitor-intelligence-api\/","title":{"rendered":"Visitor Intelligence API"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"56570\" class=\"elementor elementor-56570\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-294c4bd e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"294c4bd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d725d7d elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"d725d7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- TrueOmni Visitor Intelligence API Landing -->\n<style>\n\n\/* === Embed overrides === *\/\n\/* Reset Elementor container constraints from outside *\/\n#root { display: block; width: 100%; position: relative; z-index: 0; isolation: isolate; margin-bottom: 80px; clear: both; overflow: hidden; }\n#root * { box-sizing: border-box; }\n#root::after { content: \"\"; display: block; clear: both; height: 0; }\n\n.tox-section { width: 100%; max-width: 100%; padding: 14px 0 !important; position: relative; z-index: 1; background-clip: padding-box; }\n.tox-section--tight { padding: 10px 0 !important; }\n.tox-section-head { margin-bottom: 12px !important; }\n@media (max-width: 980px) { .tox-section { padding: 10px 0 !important; } }\n\n.tox-container { max-width: 1320px !important; margin-left: auto !important; margin-right: auto !important; padding: 0 32px !important; }\n\n\/* Force opaque backgrounds so nothing bleeds through *\/\n.tox-bg-deep, .tox-bg-dark { background-color: #04050A !important; }\n.tox-bg-light { background-color: #fff !important; }\n.tox-bg-soft { background-color: #f6f8fb !important; }\n\n\/* Buttons *\/\n.tox-btn, .tox-btn:link, .tox-btn:visited { text-decoration: none !important; }\n.tox-btn--primary, .tox-btn--primary:link, .tox-btn--primary:visited {\n  background: #0088CE !important; color: #fff !important; border: none !important;\n  text-shadow: none !important;\n  box-shadow: 0 8px 24px rgba(0,136,206,0.32), inset 0 1px 0 rgba(255,255,255,0.18) !important;\n}\n.tox-btn--primary span, .tox-btn--primary svg { color: #fff !important; fill: currentColor !important; }\n.tox-btn--primary:hover { background: #0099E6 !important; }\n.tox-btn--ghost-dark, .tox-btn--ghost-dark:link, .tox-btn--ghost-dark:visited {\n  background: transparent !important; color: #fff !important; border: 1px solid rgba(255,255,255,0.3) !important;\n}\n\/* styles\/colors_and_type.css *\/\n\/* ============================================================\n   TrueOmni \u2014 Core Color + Type Tokens\n   Source of truth: TrueOmni Brand Guidelines (Figma 042326)\n   Use these vars everywhere. Do not hardcode brand colors or\n   font stacks inside components.\n   ============================================================ *\/\n\n\/* Web fonts \u2014 Montserrat + Poppins shipped locally from fonts\/.\n   Playfair Display still loaded from Google Fonts (for typography specimen only). *\/\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,600;0,700;0,800&family=Open+Sans:wght@400;500;600&display=swap');\n\n@font-face { font-family: 'Montserrat'; src: url('fonts\/Montserrat-Regular.ttf') format('truetype');       font-weight: 400; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Montserrat'; src: url('fonts\/Montserrat-Medium.ttf') format('truetype');        font-weight: 500; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Montserrat'; src: url('fonts\/Montserrat-SemiBold.ttf') format('truetype');      font-weight: 600; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Montserrat'; src: url('fonts\/Montserrat-Bold.ttf') format('truetype');          font-weight: 700; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Montserrat'; src: url('fonts\/Montserrat-ExtraBold.ttf') format('truetype');     font-weight: 800; font-style: normal; font-display: swap; }\n\n@font-face { font-family: 'Poppins'; src: url('fonts\/Poppins-Regular.ttf') format('truetype');   font-weight: 400; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Poppins'; src: url('fonts\/Poppins-Medium.ttf') format('truetype');    font-weight: 500; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Poppins'; src: url('fonts\/Poppins-SemiBold.ttf') format('truetype');  font-weight: 600; font-style: normal; font-display: swap; }\n@font-face { font-family: 'Poppins'; src: url('fonts\/Poppins-Bold.ttf') format('truetype');      font-weight: 700; font-style: normal; font-display: swap; }\n\n:root {\n  \/* ---------- Brand colors (from Color Meaning page) ---------- *\/\n  --to-tech-blue:        #0088CE;  \/* primary brand \u2014 digital \/ interactive *\/\n  --to-black:            #131313;  \/* \"Black Tetraammine\" \u2014 richness \/ hi-fi *\/\n  --to-off-white:        #FEFFF7;  \/* \"Off White\" \u2014 surface \/ light mode *\/\n  --to-orange:           #EB5A22;  \/* accent \u2014 energy (logo misuse page, callouts) *\/\n  --to-light-orange:     #EB8547;  \/* secondary warm accent *\/\n\n  \/* ---------- Supporting palette (pulled from metadata + frames) ---------- *\/\n  --to-deep-navy:        #0A2532;  \/* Title background *\/\n  --to-near-black:       #010109;  \/* Darkest canvas (Color Meaning, Logo Misuse) *\/\n  --to-ink:              #171717;  \/* Alt dark surface *\/\n  --to-ink-2:            #181818;  \/* Dark card fill *\/\n  --to-blue-ink:         #074A6D;  \/* Dark blue accent (circles \/ shadows) *\/\n  --to-blue-deep:        #09773AF;\n  --to-blue-900:         #00496F;\n  --to-blue-600:         #0977AF;\n  --to-blue-400:         #54BEF5;\n  --to-blue-200:         #79CFFC;  \/* light blue (gradients \/ tint) *\/\n  --to-blue-100:         #C0EAFF;  \/* tint (title gradient) *\/\n  --to-indigo:           #2D38DC;  \/* Logo Construction background *\/\n  --to-violet:           #6232FF;  \/* Highlight *\/\n  --to-red:              #F44336;  \/* \"Don't\" indicators *\/\n  --to-success:          #2BBF6A;  \/* Inferred for UI kit; no swatch in source *\/\n\n  \/* ---------- Neutrals ---------- *\/\n  --to-white:            #FFFFFF;\n  --to-grey-100:         #F5F5F5;\n  --to-grey-200:         #D9D9D9;\n  --to-grey-400:         #9E9E9E;\n  --to-grey-600:         #595959;\n  --to-grey-800:         #232323;\n  --to-brown-ink:        #231F20; \/* print-black (misc vectors) *\/\n\n  \/* ---------- Semantic foreground \/ background ---------- *\/\n  --to-fg:               var(--to-black);\n  --to-fg-muted:         rgba(19,19,19,0.8);\n  --to-fg-subtle:        var(--to-grey-600);\n  --to-fg-on-dark:       var(--to-white);\n  --to-fg-on-dark-muted: rgba(255,255,255,0.8);\n  --to-fg-on-blue:       var(--to-white);\n  --to-bg:               var(--to-white);\n  --to-bg-alt:           var(--to-off-white);\n  --to-bg-dark:          var(--to-black);\n  --to-bg-deep:          var(--to-near-black);\n  --to-bg-brand:         var(--to-tech-blue);\n  --to-border:           rgba(19,19,19,0.12);\n  --to-border-on-dark:   rgba(255,255,255,0.20);\n\n  \/* ---------- Brand tints (the \"halo\" blue blobs) ---------- *\/\n  --to-halo-blue-08:     rgba(0,136,206,0.08);\n  --to-halo-blue-10:     rgba(0,136,206,0.10);\n  --to-halo-blue-14:     rgba(0,136,206,0.14);\n  --to-halo-blue-16:     rgba(0,136,206,0.16);\n  --to-halo-blue-27:     rgba(0,136,206,0.27);\n  --to-halo-blue-41:     rgba(0,136,206,0.41);\n  --to-halo-blue-58:     rgba(0,136,206,0.58);\n\n  \/* ---------- Radii ---------- *\/\n  --to-radius-xs:        4px;\n  --to-radius-sm:        8px;\n  --to-radius-md:        12px;\n  --to-radius-lg:        20px;   \/* used everywhere \u2014 card radius *\/\n  --to-radius-xl:        28px;\n  --to-radius-pill:      50px;\n  --to-radius-full:      9999px;\n\n  \/* ---------- Spacing (8-pt \/ 4-pt hybrid \u2014 reverse-engineered) ---------- *\/\n  --to-space-1:          4px;\n  --to-space-2:          8px;\n  --to-space-3:          12px;\n  --to-space-4:          16px;\n  --to-space-5:          20px;\n  --to-space-6:          24px;\n  --to-space-7:          32px;\n  --to-space-8:          40px;\n  --to-space-9:          56px;\n  --to-space-10:         72px;\n  --to-space-11:         100px;\n\n  \/* ---------- Shadows \/ elevation ---------- *\/\n  --to-shadow-sm:        0 1px 2px rgba(0,0,0,0.06);\n  --to-shadow-md:        0 6px 16px rgba(0,0,0,0.10);\n  --to-shadow-lg:        0 24px 60px rgba(10,37,50,0.25);\n  --to-shadow-halo:      0 0 120px 40px rgba(0,136,206,0.14); \/* brand halo *\/\n\n  \/* ---------- Type families ---------- *\/\n  --to-font-display:     'Montserrat', ui-sans-serif, -apple-system, Segoe UI, sans-serif;\n  --to-font-serif:       'Playfair Display', Georgia, 'Times New Roman', serif;\n  --to-font-body:        'Poppins', ui-sans-serif, -apple-system, Segoe UI, sans-serif;\n  --to-font-ui:          'Open Sans', ui-sans-serif, system-ui, sans-serif;\n\n  \/* ---------- Font weights ---------- *\/\n  --to-fw-regular:       400;\n  --to-fw-medium:        500;\n  --to-fw-semibold:      600;\n  --to-fw-bold:          700;\n\n  \/* ---------- Type scale (from Typography + Font Size pages) ---------- *\/\n  --to-fs-mega:          130px;   \/* \"Brand Guidelines\" cover *\/\n  --to-fs-hero:          120px;   \/* Thank-you display *\/\n  --to-fs-display:       80px;    \/* Big block quote *\/\n  --to-fs-h1:            72px;    \/* Section titles (Our Vision, Color Meaning) *\/\n  --to-fs-h2:            40px;\n  --to-fs-h3:            32px;    \/* In-card titles *\/\n  --to-fs-h4:            25px;    \/* Auxiliar brand product names *\/\n  --to-fs-lead:          30px;    \/* Section lead \/ numbers *\/\n  --to-fs-body-xl:       24px;    \/* Body copy on slides *\/\n  --to-fs-body-lg:       22px;\n  --to-fs-body:          20px;\n  --to-fs-body-sm:       18px;\n  --to-fs-caption:       16px;\n  --to-fs-micro:         14px;\n  --to-fs-nano:          12px;\n\n  \/* ---------- Line height & tracking ---------- *\/\n  --to-lh-tight:         1.0;\n  --to-lh-snug:          1.2;\n  --to-lh-normal:        1.3;\n  --to-lh-body:          1.5;\n  --to-tracking-tight:   -0.030em;   \/* Montserrat display *\/\n  --to-tracking-serif:   0.010em;    \/* Playfair section titles *\/\n  --to-tracking-wide:    0.040em;    \/* \"Aa\" spec *\/\n\n  \/* ---------- Motion ---------- *\/\n  --to-ease-out:         cubic-bezier(0.22, 1, 0.36, 1);\n  --to-ease-in-out:      cubic-bezier(0.65, 0, 0.35, 1);\n  --to-dur-fast:         120ms;\n  --to-dur-base:         220ms;\n  --to-dur-slow:         420ms;\n}\n\n\/* ============================================================\n   Semantic element styles \u2014 apply these via classes, not tags\n   ============================================================ *\/\n\n.to-display-mega {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-mega);\n  line-height: var(--to-lh-snug);\n  letter-spacing: var(--to-tracking-tight);\n  color: var(--to-fg);\n}\n\n.to-display-hero {\n  font-family: var(--to-font-serif);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-hero);\n  line-height: var(--to-lh-tight);\n  letter-spacing: var(--to-tracking-serif);\n  color: var(--to-fg);\n}\n\n.to-h1 {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-h1);\n  line-height: var(--to-lh-snug);\n  letter-spacing: var(--to-tracking-tight);\n}\n\n.to-h1--serif {\n  font-family: var(--to-font-serif);\n  font-weight: var(--to-fw-bold);\n  letter-spacing: var(--to-tracking-serif);\n}\n\n.to-h2 {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-h2);\n  line-height: var(--to-lh-snug);\n  letter-spacing: var(--to-tracking-tight);\n}\n\n.to-h3 {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-h3);\n  line-height: var(--to-lh-snug);\n  letter-spacing: var(--to-tracking-tight);\n}\n\n.to-h4 {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-bold);\n  font-size: var(--to-fs-h4);\n  line-height: var(--to-lh-snug);\n  letter-spacing: var(--to-tracking-tight);\n}\n\n.to-lead {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-regular);\n  font-size: var(--to-fs-lead);\n  line-height: var(--to-lh-tight);\n}\n\n.to-body-xl {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-regular);\n  font-size: var(--to-fs-body-xl);\n  line-height: var(--to-lh-tight);\n  color: var(--to-fg-muted);\n}\n\n.to-body {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-regular);\n  font-size: var(--to-fs-body);\n  line-height: var(--to-lh-tight);\n}\n\n.to-body-sm {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-regular);\n  font-size: var(--to-fs-body-sm);\n  line-height: var(--to-lh-tight);\n}\n\n.to-caption {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-medium);\n  font-size: var(--to-fs-caption);\n  line-height: var(--to-lh-body);\n}\n\n.to-eyebrow {\n  font-family: var(--to-font-display);\n  font-weight: var(--to-fw-medium);\n  font-size: var(--to-fs-caption);\n  line-height: var(--to-lh-tight);\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n}\n\n.to-italic-quote {\n  font-family: var(--to-font-display);\n  font-style: italic;\n  font-weight: var(--to-fw-medium);\n  font-size: var(--to-fs-lead);\n  line-height: var(--to-lh-snug);\n  color: var(--to-fg-muted);\n}\n\n.to-page-number {\n  font-family: var(--to-font-body);\n  font-weight: var(--to-fw-medium);\n  font-size: var(--to-fs-body);\n  line-height: var(--to-lh-tight);\n  color: var(--to-fg);\n}\n\n\/* styles\/page.css *\/\n\/* ============================================================\n   Visitor Intelligence API \u2014 TrueOmni\n   Page-level styles\n   ============================================================ *\/\n\n* { box-sizing: border-box; }\n\nhtml { scroll-behavior: smooth; }\n\nbody {\n  margin: 0;\n  font-family: var(--to-font-body);\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 1.5;\n  color: var(--to-fg);\n  background: #04050A;\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n}\n\nbutton { font-family: inherit; }\n\na { color: inherit; text-decoration: none; }\n\nimg { max-width: 100%; display: block; }\n\n::selection { background: var(--to-tech-blue); color: #fff; }\n\n\/* ---------- Page chrome ---------- *\/\n.tox-container { max-width: 1320px; margin: 0 auto; padding: 0 40px; }\n.tox-container--narrow { max-width: 1100px; }\n\n.tox-section { padding: 56px 0; position: relative; overflow: hidden; }\n.tox-section--tight { padding: 44px 0; }\n\n.tox-bg-light { background: var(--to-white); color: var(--to-fg); }\n.tox-bg-soft  { background: var(--to-off-white); color: var(--to-fg); }\n.tox-bg-dark  { background: var(--to-near-black); color: var(--to-fg-on-dark); }\n.tox-bg-deep  { background: #06070C; color: var(--to-fg-on-dark); }\n\n\/* Eyebrow \/ labels *\/\n.tox-eyebrow {\n  font-family: var(--to-font-display);\n  font-weight: 500;\n  font-size: 13px;\n  letter-spacing: 0.22em;\n  text-transform: uppercase;\n  color: var(--to-tech-blue);\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n}\n.tox-eyebrow .dot {\n  width: 6px; height: 6px; border-radius: 50%;\n  background: var(--to-tech-blue);\n  box-shadow: 0 0 12px var(--to-tech-blue);\n}\n\n\/* Section headlines *\/\n.tox-section-head { max-width: 880px; margin: 0 auto 32px; text-align: center; }\n.tox-section-head--left { text-align: left; margin-left: 0; margin-right: 0; }\n\n.tox-h-display {\n  font-family: var(--to-font-display);\n  font-weight: 700;\n  font-size: clamp(40px, 4.6vw, 64px);\n  line-height: 1.05;\n  letter-spacing: -0.030em;\n  margin: 18px 0 24px;\n}\n.tox-h-display .accent { color: var(--to-tech-blue); }\n\n.tox-lead-text {\n  font-size: 19px;\n  line-height: 1.55;\n  color: var(--to-fg-muted);\n  max-width: 680px;\n}\n.tox-section-head .tox-lead-text { margin-left: auto; margin-right: auto; }\n\n.tox-bg-dark .tox-lead-text, .tox-bg-deep .tox-lead-text { color: rgba(255,255,255,0.72); }\n\n\/* Buttons *\/\n.tox-btn {\n  display: inline-flex; align-items: center; gap: 10px;\n  padding: 14px 22px; border-radius: 10px;\n  font-family: var(--to-font-body); font-weight: 600; font-size: 15px;\n  border: 1px solid transparent;\n  cursor: pointer;\n  transition: all 220ms cubic-bezier(0.22,1,0.36,1);\n  white-space: nowrap;\n  letter-spacing: 0.005em;\n}\n.tox-btn--primary {\n  background: var(--to-tech-blue); color: #fff;\n  box-shadow: 0 8px 24px rgba(0,136,206,0.32), inset 0 1px 0 rgba(255,255,255,0.18);\n}\n.tox-btn--primary:hover {\n  background: #0099E6;\n  transform: translateY(-1px);\n  box-shadow: 0 14px 36px rgba(0,136,206,0.45), inset 0 1px 0 rgba(255,255,255,0.22);\n}\n.tox-btn--ghost-dark {\n  background: rgba(255,255,255,0.04); color: #fff;\n  border-color: rgba(255,255,255,0.18);\n  backdrop-filter: blur(8px);\n}\n.tox-btn--ghost-dark:hover {\n  background: rgba(255,255,255,0.10); border-color: rgba(255,255,255,0.32);\n  transform: translateY(-1px);\n}\n.tox-btn--ghost-light {\n  background: transparent; color: var(--to-black);\n  border-color: rgba(19,19,19,0.18);\n}\n.tox-btn--ghost-light:hover {\n  background: var(--to-black); color: #fff; border-color: var(--to-black);\n}\n.tox-btn--lg { padding: 16px 28px; font-size: 16px; }\n\n\/* Halo motif *\/\n.tox-halo {\n  position: absolute;\n  border-radius: 50%;\n  pointer-events: none;\n  filter: blur(0px);\n  z-index: 0;\n}\n\n\/* Grid utility for cards *\/\n.tox-grid { display: grid; gap: 24px; position: relative; z-index: 1; }\n.tox-grid--2 { grid-template-columns: repeat(2, 1fr); }\n.tox-grid--3 { grid-template-columns: repeat(3, 1fr); }\n.tox-grid--4 { grid-template-columns: repeat(4, 1fr); }\n\n\/* Cards \u2014 premium dark *\/\n.tox-card {\n  position: relative;\n  border-radius: 20px;\n  padding: 32px;\n  transition: transform 220ms cubic-bezier(0.22,1,0.36,1),\n              box-shadow 220ms cubic-bezier(0.22,1,0.36,1),\n              border-color 220ms cubic-bezier(0.22,1,0.36,1);\n}\n.tox-card--dark {\n  background: linear-gradient(180deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.015) 100%);\n  border: 1px solid rgba(255,255,255,0.08);\n  color: rgba(255,255,255,0.92);\n}\n.tox-card--dark:hover {\n  transform: translateY(-4px);\n  border-color: rgba(0,136,206,0.45);\n  box-shadow: 0 30px 60px rgba(0,0,0,0.4), 0 0 0 1px rgba(0,136,206,0.18) inset;\n}\n.tox-card--light {\n  background: #fff;\n  border: 1px solid rgba(19,19,19,0.06);\n  box-shadow: 0 1px 2px rgba(10,37,50,0.04);\n}\n.tox-card--light:hover {\n  transform: translateY(-4px);\n  border-color: rgba(0,136,206,0.30);\n  box-shadow: 0 24px 48px rgba(10,37,50,0.10);\n}\n\n\/* Icon tile *\/\n.tox-icon-tile {\n  width: 48px; height: 48px;\n  border-radius: 12px;\n  display: inline-flex; align-items: center; justify-content: center;\n  background: rgba(0,136,206,0.14);\n  color: var(--to-tech-blue);\n  border: 1px solid rgba(0,136,206,0.22);\n}\n.tox-icon-tile--solid {\n  background: var(--to-tech-blue);\n  color: #fff;\n  border-color: transparent;\n  box-shadow: 0 8px 24px rgba(0,136,206,0.32);\n}\n\n\/* Misc *\/\n.tox-divider { height: 1px; background: rgba(255,255,255,0.08); }\n.tox-bg-light .tox-divider { background: rgba(19,19,19,0.08); }\n\n\/* Reveal-on-scroll *\/\n.tox-reveal {\n  opacity: 0;\n  transform: translateY(16px);\n  transition: opacity 700ms cubic-bezier(0.22,1,0.36,1), transform 700ms cubic-bezier(0.22,1,0.36,1);\n}\n.tox-reveal.is-in {\n  opacity: 1;\n  transform: translateY(0);\n}\n\n@media (max-width: 980px) {\n  .tox-section { padding: 40px 0; }\n  .tox-grid--3, .tox-grid--4 { grid-template-columns: 1fr 1fr; }\n  .tox-grid--2 { grid-template-columns: 1fr; }\n}\n@media (max-width: 640px) {\n  .tox-container { padding: 0 24px; }\n  .tox-grid--3, .tox-grid--4 { grid-template-columns: 1fr; }\n}\n\n<\/style>\n<script src=\"https:\/\/unpkg.com\/react@18.3.1\/umd\/react.production.min.js\" crossorigin><\/script>\n<script src=\"https:\/\/unpkg.com\/react-dom@18.3.1\/umd\/react-dom.production.min.js\" crossorigin><\/script>\n<script src=\"https:\/\/unpkg.com\/@babel\/standalone@7.29.0\/babel.min.js\" crossorigin><\/script>\n<div id=\"root\"><\/div>\n<script type=\"text\/babel\" data-presets=\"env,react\">\n\n\/\/ === src\/icons.jsx ===\n\/\/ Lucide-style inline SVG icons. Stroke 1.75 to match design system rec.\n\nconst Ic = {\n  arrowRight: (p={}) => (\n    <svg width={p.size||18} height={p.size||18} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M5 12h14M13 6l6 6-6 6\"\/>\n    <\/svg>\n  ),\n  arrowUpRight: (p={}) => (\n    <svg width={p.size||16} height={p.size||16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M7 17 17 7M9 7h8v8\"\/>\n    <\/svg>\n  ),\n  database: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\"\/><path d=\"M3 5v14a9 3 0 0 0 18 0V5\"\/><path d=\"M3 12a9 3 0 0 0 18 0\"\/>\n    <\/svg>\n  ),\n  zap: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/>\n    <\/svg>\n  ),\n  trending: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <polyline points=\"22 7 13.5 15.5 8.5 10.5 2 17\"\/><polyline points=\"16 7 22 7 22 13\"\/>\n    <\/svg>\n  ),\n  globe: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M2 12h20M12 2a15 15 0 0 1 0 20M12 2a15 15 0 0 0 0 20\"\/>\n    <\/svg>\n  ),\n  layers: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"m12 2 9 5-9 5-9-5 9-5z\"\/><path d=\"m3 12 9 5 9-5\"\/><path d=\"m3 17 9 5 9-5\"\/>\n    <\/svg>\n  ),\n  eye: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/>\n    <\/svg>\n  ),\n  users: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/>\n    <\/svg>\n  ),\n  serverStack: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"3\" y=\"3\" width=\"18\" height=\"6\" rx=\"2\"\/><rect x=\"3\" y=\"15\" width=\"18\" height=\"6\" rx=\"2\"\/><path d=\"M7 6h.01M7 18h.01\"\/>\n    <\/svg>\n  ),\n  qr: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"\/>\n      <path d=\"M14 14h3v3M21 17v4h-4M14 21h0M17 21h0M21 14h0\"\/>\n    <\/svg>\n  ),\n  smartphone: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"2\"\/><path d=\"M12 18h.01\"\/>\n    <\/svg>\n  ),\n  monitor: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\"\/><path d=\"M8 21h8M12 17v4\"\/>\n    <\/svg>\n  ),\n  routeFlow: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <circle cx=\"6\" cy=\"19\" r=\"3\"\/><circle cx=\"18\" cy=\"5\" r=\"3\"\/><path d=\"M9 19h5a4 4 0 0 0 0-8H10a4 4 0 0 1 0-8h5\"\/>\n    <\/svg>\n  ),\n  share: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><path d=\"m8.6 13.5 6.8 4M15.4 6.5l-6.8 4\"\/>\n    <\/svg>\n  ),\n  shield: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><path d=\"m9 12 2 2 4-4\"\/>\n    <\/svg>\n  ),\n  lock: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/>\n    <\/svg>\n  ),\n  cloud: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M17.5 19a4.5 4.5 0 0 0 0-9 6 6 0 0 0-11.7 1.5A4 4 0 0 0 6 19h11.5z\"\/>\n    <\/svg>\n  ),\n  fileCheck: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><path d=\"M14 2v6h6M9 15l2 2 4-4\"\/>\n    <\/svg>\n  ),\n  check: (p={}) => (\n    <svg width={p.size||16} height={p.size||16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M5 12l5 5L20 7\"\/>\n    <\/svg>\n  ),\n  x: (p={}) => (\n    <svg width={p.size||16} height={p.size||16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M6 6l12 12M18 6 6 18\"\/>\n    <\/svg>\n  ),\n  download: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3\"\/>\n    <\/svg>\n  ),\n  link: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M10 13a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-1 1\"\/>\n      <path d=\"M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l1-1\"\/>\n    <\/svg>\n  ),\n  rocket: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\"\/>\n      <path d=\"M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\"\/>\n      <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\"\/>\n    <\/svg>\n  ),\n  pin: (p={}) => (\n    <svg width={p.size||16} height={p.size||16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/>\n    <\/svg>\n  ),\n  activity: (p={}) => (\n    <svg width={p.size||16} height={p.size||16} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"\/>\n    <\/svg>\n  ),\n  code: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <polyline points=\"16 18 22 12 16 6\"\/><polyline points=\"8 6 2 12 8 18\"\/>\n    <\/svg>\n  ),\n  briefcase: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\"\/><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"\/>\n    <\/svg>\n  ),\n  target: (p={}) => (\n    <svg width={p.size||22} height={p.size||22} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\" {...p}>\n      <circle cx=\"12\" cy=\"12\" r=\"10\"\/><circle cx=\"12\" cy=\"12\" r=\"6\"\/><circle cx=\"12\" cy=\"12\" r=\"2\"\/>\n    <\/svg>\n  ),\n};\n\nwindow.Ic = Ic;\n\n\/\/ === src\/primitives.jsx ===\n\/\/ Shared visual primitives for the page\n\nfunction Halo({ size = 900, top, left, right, bottom, opacity = 0.14, color = \"#0088CE\", blur, style }) {\n  \/\/ Default blur scales with size so halos always feel like ambient glow,\n  \/\/ not visible circles.\n  const b = blur != null ? blur : Math.round(size * 0.42);\n  return (\n    <div className=\"tox-halo\" style={{\n      width: size, height: size, top, left, right, bottom,\n      background: color, opacity, filter: `blur(${b}px)`,\n      ...style,\n    }} \/>\n  );\n}\n\nfunction Container({ children, narrow, style, className = \"\" }) {\n  return (\n    <div className={`tox-container${narrow ? \" tox-container--narrow\" : \"\"} ${className}`} style={style}>\n      {children}\n    <\/div>\n  );\n}\n\nfunction Eyebrow({ children, color, style }) {\n  return (\n    <span className=\"tox-eyebrow\" style={{ color, ...style }}>\n      <span className=\"dot\" style={{ background: color, boxShadow: color ? `0 0 12px ${color}` : undefined }}\/>\n      {children}\n    <\/span>\n  );\n}\n\nfunction Btn({ variant = \"primary\", size, children, icon, onClick, type = \"button\", href, target, rel }) {\n  const cls = [\"tox-btn\", `tox-btn--${variant}`, size === \"lg\" ? \"tox-btn--lg\" : \"\"].filter(Boolean).join(\" \");\n  if (href) {\n    return (\n      <a className={cls} href={href} target={target} rel={rel} onClick={onClick}>\n        <span>{children}<\/span>\n        {icon}\n      <\/a>\n    );\n  }\n  return (\n    <button type={type} className={cls} onClick={onClick}>\n      <span>{children}<\/span>\n      {icon}\n    <\/button>\n  );\n}\n\n\/\/ Section with eyebrow + h1 + lead all together (centered or left)\nfunction SectionHead({ eyebrow, title, titleAccent, lead, align = \"center\", eyebrowColor }) {\n  return (\n    <div className={`tox-section-head${align === \"left\" ? \" tox-section-head--left\" : \"\"}`}>\n      {eyebrow && <Eyebrow color={eyebrowColor}>{eyebrow}<\/Eyebrow>}\n      <h2 className=\"tox-h-display\" style={{ textWrap: \"pretty\" }}>\n        {title}\n        {titleAccent && <> <span className=\"accent\">{titleAccent}<\/span><\/>}\n      <\/h2>\n      {lead && <p className=\"tox-lead-text\">{lead}<\/p>}\n    <\/div>\n  );\n}\n\n\/\/ Reveal-on-scroll wrapper\nfunction Reveal({ children, delay = 0, as: Tag = \"div\", ...rest }) {\n  const ref = React.useRef(null);\n  React.useEffect(() => {\n    const el = ref.current;\n    if (!el) return;\n    const io = new IntersectionObserver((entries) => {\n      entries.forEach(e => {\n        if (e.isIntersecting) {\n          el.classList.add(\"is-in\");\n          io.unobserve(el);\n        }\n      });\n    }, { rootMargin: \"0px 0px -8% 0px\", threshold: 0.08 });\n    io.observe(el);\n    return () => io.disconnect();\n  }, []);\n  return (\n    <Tag ref={ref} className={`tox-reveal ${rest.className || \"\"}`} style={{ transitionDelay: `${delay}ms`, ...(rest.style || {}) }}>\n      {children}\n    <\/Tag>\n  );\n}\n\nObject.assign(window, { Halo, Container, Eyebrow, Btn, SectionHead, Reveal });\n\n\/\/ === src\/Hero.jsx ===\nfunction Hero() {\n  return (\n    <section id=\"hero\" style={{\n      position: \"relative\",\n      background: \"#04050A\",\n      color: \"#fff\",\n      overflow: \"hidden\",\n      minHeight: 360, display: \"flex\", alignItems: \"center\", isolation: \"isolate\",\n    }}>\n      {\/* Full-bleed background image *\/}\n      <div style={{\n        position: \"absolute\", inset: 0, zIndex: 0,\n      }}>\n        <img\n          src={(window.__resources && window.__resources.heroLifestyle) || \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/hero-lifestyle-scaled.png\"}\n          alt=\"\"\n          style={{ width: \"115%\", height: \"100%\", objectFit: \"cover\", objectPosition: \"right center\", marginLeft: \"auto\", display: \"block\" }}\n        \/>\n        {\/* Left gradient overlay for legibility *\/}\n        <div style={{\n          position: \"absolute\", inset: 0,\n          background: \"linear-gradient(90deg, rgba(4,5,10,0.96) 0%, rgba(4,5,10,0.92) 38%, rgba(4,5,10,0.55) 58%, rgba(4,5,10,0.1) 100%)\",\n        }}\/>\n        {\/* Subtle bottom fade to blend with next section *\/}\n        <div style={{\n          position: \"absolute\", left: 0, right: 0, bottom: 0, height: 140,\n          background: \"linear-gradient(180deg, transparent 0%, rgba(4,5,10,0.6) 100%)\",\n        }}\/>\n      <\/div>\n\n      <div style={{ position: \"relative\", zIndex: 2, paddingTop: 24, paddingBottom: 24, paddingLeft: \"clamp(24px, 6vw, 88px)\", paddingRight: 24, width: \"100%\" }}>\n        <div style={{ maxWidth: 540 }}>\n          <Eyebrow color=\"#54BEF5\" style={{ marginBottom: 22 }}>VISITOR INTELLIGENCE API<\/Eyebrow>\n          <h1 style={{\n            margin: 0,\n            fontFamily: \"var(--to-font-display)\",\n            fontWeight: 800,\n            fontSize: \"clamp(36px, 4.2vw, 60px)\",\n            lineHeight: 1.02,\n            letterSpacing: \"-0.032em\",\n            textWrap: \"balance\",\n          }}>\n            Every Visitor,<br\/>\n            Every Touchpoint.<br\/>\n            <span style={{\n              background: \"linear-gradient(90deg, #54BEF5 0%, #0088CE 70%)\",\n              WebkitBackgroundClip: \"text\",\n              backgroundClip: \"text\",\n              color: \"transparent\",\n            }}>Always Connected.<\/span>\n          <\/h1>\n\n          <p style={{\n            marginTop: 28,\n            marginBottom: 0,\n            fontSize: 19, lineHeight: 1.5,\n            color: \"rgba(255,255,255,0.78)\",\n            fontWeight: 400,\n            maxWidth: 520,\n          }}>\n            One API unifying kiosk, mobile and signage data into a single\n            intelligence layer.\n          <\/p>\n\n          <div style={{ display: \"flex\", gap: 14, marginTop: 40 }}>\n            <Btn variant=\"primary\" size=\"lg\" icon={Ic.arrowRight()} href=\"https:\/\/trueomni.com\/book_a_demo\/\">Book a Demo<\/Btn>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n  );\n}\n\nwindow.Hero = Hero;\n\n\/\/ === src\/WhyMatters.jsx ===\nfunction WhyMatters() {\n  const rows = [\n    { from: \"Forecasting\", to: \"Real Behavior\", desc: \"Stop guessing what visitors might do. See what they actually did across every channel.\" },\n    { from: \"Modeled Data\", to: \"Verified Engagement\", desc: \"Replace statistical assumptions with verified, in-destination interactions and conversions.\" },\n    { from: \"Disconnected Systems\", to: \"Continuous Journey\", desc: \"Follow visitors seamlessly across kiosks, mobile and signage in a unified intelligence layer.\" },\n  ];\n  return (\n    <section id=\"why\" className=\"tox-section tox-bg-soft\" style={{ position: \"relative\" }}>\n      <Container style={{ position: \"relative\" }}>\n        <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 80, alignItems: \"start\" }}>\n          <div style={{ position: \"sticky\", top: 100 }}>\n            <Eyebrow>Why This Matters<\/Eyebrow>\n            <h2 className=\"tox-h-display\" style={{ marginTop: 18 }}>\n              Most providers tell you who's coming<br\/>and what <em style={{ fontStyle: \"italic\", color: \"var(--to-grey-600)\", fontWeight: 600 }}>might<\/em> happen.\n            <\/h2>\n            <p className=\"tox-lead-text\" style={{ marginTop: 8 }}>\n              Visitor Intelligence API shows you what visitors are <strong style={{ color: \"var(--to-tech-blue)\" }}>actually<\/strong> doing \u2014\n              tap by tap, scan by scan, journey by journey.\n            <\/p>\n          <\/div>\n\n          <div style={{ display: \"flex\", flexDirection: \"column\", gap: 16 }}>\n            {rows.map((r, i) => (\n              <Reveal key={r.from} delay={i * 80}>\n                <div className=\"tox-card tox-card--light\" style={{ padding: \"28px 30px\" }}>\n                  <div style={{ display: \"flex\", alignItems: \"center\", gap: 16, flexWrap: \"wrap\" }}>\n                    <span style={{\n                      padding: \"6px 14px\", borderRadius: 999,\n                      background: \"rgba(244,67,54,0.08)\", color: \"#B43A30\",\n                      fontSize: 13, fontWeight: 600, letterSpacing: \"0.01em\",\n                      textDecoration: \"line-through\", textDecorationColor: \"rgba(180,58,48,0.5)\",\n                    }}>{r.from}<\/span>\n                    <span style={{ color: \"var(--to-tech-blue)\" }}>{Ic.arrowRight({ size: 18 })}<\/span>\n                    <span style={{\n                      padding: \"6px 14px\", borderRadius: 999,\n                      background: \"rgba(0,136,206,0.10)\", color: \"var(--to-tech-blue)\",\n                      fontSize: 13, fontWeight: 700, letterSpacing: \"0.01em\",\n                    }}>{r.to}<\/span>\n                  <\/div>\n                  <p style={{ margin: \"16px 0 0\", fontSize: 15.5, lineHeight: 1.6, color: \"var(--to-grey-600)\" }}>{r.desc}<\/p>\n                <\/div>\n              <\/Reveal>\n            ))}\n          <\/div>\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.WhyMatters = WhyMatters;\n\n\/\/ === src\/WhatItDoes.jsx ===\nfunction WhatItDoes() {\n  return (\n    <section id=\"what\" className=\"tox-section tox-bg-dark\" style={{ position: \"relative\" }}>\n      <Container style={{ position: \"relative\" }}>\n        <SectionHead\n          eyebrow=\"What It Does\"\n          title=\"A complete visitor intelligence platform\"\n          lead=\"Capture, unify and activate behavioral data across every channel \u2014 with the polish enterprise teams expect and the simplicity developers want.\"\n        \/>\n\n        <div style={{ display: \"grid\", gridTemplateColumns: \"1.2fr 1fr 1fr\", gridTemplateRows: \"auto auto\", gap: 24 }}>\n          {\/* Big card - Unifies (spans 2 rows) *\/}\n          <Reveal style={{ gridRow: \"span 2\" }}>\n            <div className=\"tox-card tox-card--dark\" style={{ height: \"100%\", display: \"flex\", flexDirection: \"column\", padding: 36 }}>\n              <span className=\"tox-icon-tile tox-icon-tile--solid\">{Ic.layers()}<\/span>\n              <h3 style={{ marginTop: 20, marginBottom: 8, fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 26, letterSpacing: \"-0.02em\" }}>Unifies Data Across Channels<\/h3>\n              <p style={{ margin: 0, color: \"rgba(255,255,255,0.66)\", fontSize: 15.5, lineHeight: 1.6 }}>\n                Bring kiosk, mobile and signage into one cohesive intelligence layer instead of three disconnected silos.\n              <\/p>\n\n              <div style={{ marginTop: 28, display: \"grid\", gridTemplateColumns: \"1fr\", gap: 10 }}>\n                {[\n                  { icon: Ic.monitor({ size: 18 }), label: \"Kiosk interactions\", v: \"Tap, scroll, dwell\" },\n                  { icon: Ic.smartphone({ size: 18 }), label: \"Mobile engagement\", v: \"Omni Mobile PWA\" },\n                  { icon: Ic.serverStack({ size: 18 }), label: \"Digital signage\", v: \"Content views & paths\" },\n                ].map(c => (\n                  <div key={c.label} style={{\n                    display: \"flex\", alignItems: \"center\", gap: 14,\n                    padding: \"14px 16px\", borderRadius: 12,\n                    background: \"rgba(255,255,255,0.03)\",\n                    border: \"1px solid rgba(255,255,255,0.06)\",\n                  }}>\n                    <span style={{ color: \"var(--to-tech-blue)\" }}>{c.icon}<\/span>\n                    <div style={{ flex: 1 }}>\n                      <div style={{ fontSize: 14.5, fontWeight: 600, color: \"#fff\" }}>{c.label}<\/div>\n                      <div style={{ fontSize: 12.5, color: \"rgba(255,255,255,0.55)\" }}>{c.v}<\/div>\n                    <\/div>\n                  <\/div>\n                ))}\n              <\/div>\n            <\/div>\n          <\/Reveal>\n\n          {\/* Top right - Captures *\/}\n          <Reveal delay={80} style={{ gridColumn: \"span 2\" }}>\n            <div className=\"tox-card tox-card--dark\" style={{ padding: 32 }}>\n              <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: 20 }}>\n                <span className=\"tox-icon-tile\">{Ic.eye()}<\/span>\n                <div style={{ flex: 1 }}>\n                  <h3 style={{ margin: \"4px 0 8px\", fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 22, letterSpacing: \"-0.02em\" }}>Captures Real Visitor Behavior<\/h3>\n                  <p style={{ margin: 0, color: \"rgba(255,255,255,0.66)\", fontSize: 15, lineHeight: 1.55 }}>\n                    Every tap, scan, click and view \u2014 recorded as a verified signal, not a model.\n                  <\/p>\n                <\/div>\n              <\/div>\n              <div style={{ marginTop: 22, display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 10 }}>\n                {[\n                  { l: \"QR scans\", v: \"12.4K\" },\n                  { l: \"Email\", v: \"3.8K\" },\n                  { l: \"SMS clicks\", v: \"2.1K\" },\n                  { l: \"Content views\", v: \"48K\" },\n                ].map(s => (\n                  <div key={s.l} style={{\n                    padding: \"12px 14px\", borderRadius: 10,\n                    background: \"rgba(0,136,206,0.08)\",\n                    border: \"1px solid rgba(0,136,206,0.18)\",\n                  }}>\n                    <div style={{ fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 18, color: \"#fff\" }}>{s.v}<\/div>\n                    <div style={{ fontSize: 11.5, color: \"rgba(255,255,255,0.6)\", marginTop: 2 }}>{s.l}<\/div>\n                  <\/div>\n                ))}\n              <\/div>\n            <\/div>\n          <\/Reveal>\n\n          {\/* Bottom middle - Single source *\/}\n          <Reveal delay={120}>\n            <div className=\"tox-card tox-card--dark\" style={{ height: \"100%\", padding: 32 }}>\n              <span className=\"tox-icon-tile\">{Ic.database()}<\/span>\n              <h3 style={{ marginTop: 18, marginBottom: 8, fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 20, letterSpacing: \"-0.02em\" }}>Single Source of Truth<\/h3>\n              <ul style={{ margin: \"12px 0 0\", padding: 0, listStyle: \"none\", color: \"rgba(255,255,255,0.7)\", fontSize: 14, lineHeight: 1.8 }}>\n                <li>\u00b7 Session-level tracking<\/li>\n                <li>\u00b7 Cross-device journey<\/li>\n                <li>\u00b7 Real-time + historical<\/li>\n              <\/ul>\n            <\/div>\n          <\/Reveal>\n\n          {\/* Bottom right - Built for action *\/}\n          <Reveal delay={160}>\n            <div className=\"tox-card tox-card--dark\" style={{ height: \"100%\", padding: 32 }}>\n              <span className=\"tox-icon-tile\">{Ic.target()}<\/span>\n              <h3 style={{ marginTop: 18, marginBottom: 8, fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 20, letterSpacing: \"-0.02em\" }}>Built for Action<\/h3>\n              <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6, marginTop: 10 }}>\n                {[\"Developers\", \"Marketing\", \"Operations\"].map(t => (\n                  <span key={t} style={{\n                    padding: \"5px 11px\", borderRadius: 999, fontSize: 12, fontWeight: 600,\n                    background: \"rgba(255,255,255,0.06)\", color: \"rgba(255,255,255,0.85)\",\n                    border: \"1px solid rgba(255,255,255,0.1)\",\n                  }}>{t}<\/span>\n                ))}\n              <\/div>\n            <\/div>\n          <\/Reveal>\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.WhatItDoes = WhatItDoes;\n\n\/\/ === src\/HowItWorks.jsx ===\nfunction HowItWorks() {\n  const steps = [\n    { num: \"01\", title: \"Collect\", icon: Ic.download(), tag: \"Kiolytics\", desc: \"Kiolytics captures engagement across every device \u2014 kiosks, mobile and signage \u2014 without lifting a finger.\", chips: [\"QR scans\", \"Taps\", \"Email\", \"Content views\"] },\n    { num: \"02\", title: \"Connect\", icon: Ic.link(), tag: \"OmniEdge API\", desc: \"OmniEdge structures and unifies the raw signals into one clean, query-ready format that's easy to work with.\", chips: [\"Sessions\", \"Journeys\", \"Real-time\", \"Historical\"] },\n    { num: \"03\", title: \"Activate\", icon: Ic.rocket(), tag: \"Your stack\", desc: \"Push insights into your CRM, dashboards, CDPs and partner systems \u2014 and turn data into decisions.\", chips: [\"CRM\", \"Reports\", \"Marketing\", \"Partners\"] },\n  ];\n  return (\n    <section id=\"how\" className=\"tox-section tox-bg-soft\" style={{ position: \"relative\" }}>\n      <Halo size={900} top={-440} left=\"40%\" opacity={0.10}\/>\n      <Container style={{ position: \"relative\" }}>\n        <SectionHead\n          eyebrow=\"How It Works\"\n          title=\"Three seamless steps\"\n          titleAccent=\"from data to action\"\n          lead=\"A simple end-to-end pipeline that turns scattered visitor interactions into actionable intelligence.\"\n        \/>\n\n        <div style={{ position: \"relative\" }}>\n          {\/* Connecting line *\/}\n          <div style={{\n            position: \"absolute\", left: \"8%\", right: \"8%\", top: 86,\n            height: 2,\n            background: \"linear-gradient(90deg, transparent, rgba(0,136,206,0.45), rgba(0,136,206,0.45), transparent)\",\n            zIndex: 0,\n          }}\/>\n\n          <div className=\"tox-grid tox-grid--3\" style={{ position: \"relative\", zIndex: 1 }}>\n            {steps.map((s, i) => (\n              <Reveal key={s.num} delay={i * 100}>\n                <div className=\"tox-card tox-card--light\" style={{ padding: 36, height: \"100%\", position: \"relative\" }}>\n                  <span className=\"tox-icon-tile\">{s.icon}<\/span>\n                  <div style={{ marginTop: 18, display: \"flex\", alignItems: \"center\", gap: 10 }}>\n                    <h3 style={{ margin: 0, fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 28, letterSpacing: \"-0.02em\", color: \"var(--to-black)\" }}>{s.title}<\/h3>\n                    <span style={{ fontSize: 11, fontWeight: 600, padding: \"3px 10px\", borderRadius: 999, background: \"rgba(0,136,206,0.10)\", color: \"var(--to-tech-blue)\", border: \"1px solid rgba(0,136,206,0.22)\" }}>{s.tag}<\/span>\n                  <\/div>\n                  <p style={{ margin: \"10px 0 18px\", color: \"var(--to-grey-600)\", fontSize: 14.5, lineHeight: 1.6 }}>{s.desc}<\/p>\n                  <div style={{ display: \"flex\", flexWrap: \"wrap\", gap: 6 }}>\n                    {s.chips.map(c => (\n                      <span key={c} style={{ padding: \"4px 10px\", fontSize: 12, fontWeight: 500, borderRadius: 999, background: \"var(--to-grey-100)\", color: \"var(--to-grey-800)\", border: \"1px solid rgba(19,19,19,0.06)\" }}>{c}<\/span>\n                    ))}\n                  <\/div>\n                <\/div>\n              <\/Reveal>\n            ))}\n          <\/div>\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.HowItWorks = HowItWorks;\n\n\/\/ === src\/Integrations.jsx ===\nfunction Integrations() {\n  const R = (window.__resources || {});\n  const partners = [\n    { name: \"Tourism Economics\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/tourism-economics.png\", desc: \"Enhance economic impact modeling with real engagement data.\" },\n    { name: \"Zartico\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/zartico.png\", desc: \"Feed richer in-destination signals into destination analytics.\" },\n    { name: \"Google Analytics\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/google-analytics.png\", desc: \"Visualize web and physical visitor data in one place.\" },\n    { name: \"Looker Studio\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/looker.png\", desc: \"Share live dashboards across your organization.\" },\n    { name: \"Salesforce\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/salesforce.png\", desc: \"Sync visitor profiles, leads and engagement events.\" },\n    { name: \"Twilio Segment\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/segment.png\", desc: \"Stream unified visitor identities to every downstream tool.\" },\n    { name: \"HubSpot\", logo: \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/hubspot.png\", desc: \"Trigger marketing automations from real-world behavior.\" },\n    { name: \"Custom APIs\", logo: null, desc: \"REST endpoints and webhooks for everything else in your stack.\" },\n  ];\n  return (\n    <section id=\"integrations\" className=\"tox-section tox-bg-dark\" style={{ position: \"relative\" }}>\n      <Container>\n        <SectionHead\n          eyebrow=\"Seamless Integrations\"\n          title=\"Works with the platforms\"\n          titleAccent=\"you already trust.\"\n          lead=\"Bridge the gap between digital intent and real-world behavior \u2014 without ripping out a single tool from your stack.\"\n        \/>\n\n        <div className=\"tox-grid tox-grid--4\">\n          {partners.map((p, i) => (\n            <Reveal key={p.name} delay={i * 50}>\n              <div style={{\n                background: \"#fff\",\n                borderRadius: 16,\n                border: \"1px solid rgba(255,255,255,0.08)\",\n                padding: 24,\n                height: \"100%\",\n                display: \"flex\",\n                flexDirection: \"column\",\n                boxShadow: \"0 2px 6px rgba(0,0,0,0.18), 0 18px 40px rgba(0,0,0,0.28)\",\n              }}>\n                <div style={{\n                  height: 56,\n                  display: \"flex\",\n                  alignItems: \"center\",\n                  justifyContent: \"flex-start\",\n                  marginBottom: 18,\n                }}>\n                  {p.logo ? (\n                    <img src={p.logo} alt={p.name} style={{ maxHeight: 38, maxWidth: \"70%\", objectFit: \"contain\", display: \"block\" }}\/>\n                  ) : (\n                    <span style={{\n                      display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\",\n                      width: 44, height: 44, borderRadius: 12,\n                      background: \"rgba(0,136,206,0.10)\",\n                      border: \"1px solid rgba(0,136,206,0.22)\",\n                      color: \"var(--to-tech-blue)\",\n                    }}>{Ic.code({ size: 22 })}<\/span>\n                  )}\n                <\/div>\n                <h4 style={{\n                  margin: \"0 0 6px\",\n                  fontFamily: \"var(--to-font-display)\",\n                  fontWeight: 700, fontSize: 16,\n                  letterSpacing: \"-0.01em\",\n                  color: \"var(--to-black)\",\n                }}>{p.name}<\/h4>\n                <p style={{\n                  margin: 0,\n                  fontSize: 13.5, lineHeight: 1.55,\n                  color: \"var(--to-grey-600)\",\n                }}>{p.desc}<\/p>\n              <\/div>\n            <\/Reveal>\n          ))}\n        <\/div>\n\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.Integrations = Integrations;\n\n\/\/ === src\/AudienceTabs.jsx ===\nfunction AudienceTabs() {\n  const R = (window.__resources || {});\n  const [active, setActive] = React.useState(\"dev\");\n  const tabs = [\n    {\n      id: \"dev\", label: \"Developers\", icon: Ic.code({ size: 16 }),\n      headline: \"Simple, scalable endpoints. Production-ready.\",\n      desc: \"REST + webhooks, predictable JSON, idempotent writes, and SDKs in Node, Python and Go. Ship integrations in an afternoon, not a quarter.\",\n      bullets: [\n        \"Drop-in SDKs (Node \u00b7 Python \u00b7 Go)\",\n        \"Webhooks for every event\",\n        \"OpenAPI 3.1 + typed clients\",\n        \"Sandbox + staging environments\",\n      ],\n      image: R.audDevelopers || \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/audience-developers.png\",\n      code: `\/\/ Initialize TrueOmni client\nconst trueomni = new TrueOmni({ apiKey: process.env.OMNI_KEY });\n\n\/\/ Pull unified visitor sessions for last 7 days\nconst sessions = await trueomni.sessions.list({\n  since: '7d',\n  channels: ['kiosk', 'mobile', 'signage'],\n});\n\n\/\/ Subscribe to real-time interactions\ntrueomni.events.on('qr.scan', (e) => {\n  console.log(e.visitorId, e.zone, e.timestamp);\n});`,\n    },\n    {\n      id: \"mkt\", label: \"Marketing\", icon: Ic.target({ size: 16 }),\n      headline: \"Optimize what visitors actually engage with.\",\n      desc: \"Stop running campaigns on assumptions. See exactly which content, placements and offers move people \u2014 and double down on what works.\",\n      bullets: [\n        \"Verified content engagement\",\n        \"Cross-channel attribution\",\n        \"Offer A\/B testing\",\n        \"Audience syncs to ad platforms\",\n      ],\n      image: R.audMarketing || \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/audience-marketing.png\",\n      stats: [\n        { v: \"+34%\", l: \"Content engagement\" },\n        { v: \"\u221242%\", l: \"Wasted spend\" },\n        { v: \"2.7\u00d7\", l: \"Attribution clarity\" },\n      ],\n    },\n  ];\n  const cur = tabs.find(t => t.id === active);\n\n  return (\n    <section id=\"audience\" className=\"tox-section tox-bg-light\" style={{ position: \"relative\" }}>\n      <Container>\n        <SectionHead\n          eyebrow=\"Built for Every Team\"\n          title=\"One API. Three ways\"\n          titleAccent=\"to win.\"\n          lead=\"Whether you're shipping integrations, optimizing campaigns or reporting to the board \u2014 Visitor Intelligence speaks your language.\"\n        \/>\n\n        {\/* Tab bar *\/}\n        <div style={{\n          display: \"inline-flex\", padding: 6, borderRadius: 999,\n          background: \"#fff\", border: \"1px solid rgba(19,19,19,0.08)\",\n          boxShadow: \"0 1px 2px rgba(10,37,50,0.04)\",\n          marginBottom: 32,\n        }}>\n          {tabs.map(t => (\n            <button key={t.id} onClick={() => setActive(t.id)} style={{\n              display: \"inline-flex\", alignItems: \"center\", gap: 8,\n              padding: \"10px 22px\", borderRadius: 999, border: 0, cursor: \"pointer\",\n              fontFamily: \"var(--to-font-body)\", fontSize: 14.5, fontWeight: 600,\n              background: active === t.id ? \"var(--to-black)\" : \"transparent\",\n              color: active === t.id ? \"#fff\" : \"var(--to-grey-600)\",\n              transition: \"all 220ms cubic-bezier(0.22,1,0.36,1)\",\n            }}>\n              {t.icon}{t.label}\n            <\/button>\n          ))}\n        <\/div>\n\n        {\/* Tab panel *\/}\n        <div className=\"tox-card tox-card--light\" style={{ padding: 0, overflow: \"hidden\" }}>\n          <div style={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", minHeight: 420 }}>\n            {\/* Left: copy *\/}\n            <div style={{ padding: \"44px 48px\" }}>\n              <h3 style={{ margin: 0, fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 30, letterSpacing: \"-0.02em\", lineHeight: 1.15, color: \"var(--to-black)\", textWrap: \"balance\" }}>\n                {cur.headline}\n              <\/h3>\n              <p style={{ marginTop: 14, fontSize: 16, lineHeight: 1.6, color: \"var(--to-grey-600)\" }}>{cur.desc}<\/p>\n\n              <ul style={{ marginTop: 24, padding: 0, listStyle: \"none\", display: \"grid\", gap: 10 }}>\n                {cur.bullets.map(b => (\n                  <li key={b} style={{ display: \"flex\", alignItems: \"center\", gap: 12, fontSize: 14.5, color: \"var(--to-grey-800)\" }}>\n                    <span style={{ width: 22, height: 22, borderRadius: 999, background: \"rgba(0,136,206,0.12)\", color: \"var(--to-tech-blue)\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\" }}>{Ic.check({ size: 12 })}<\/span>\n                    {b}\n                  <\/li>\n                ))}\n              <\/ul>\n\n            <\/div>\n\n            {\/* Right: visual *\/}\n            <div style={{ background: \"linear-gradient(160deg, #06070C 0%, #0A1320 100%)\", position: \"relative\", overflow: \"hidden\" }}>\n              {\/* Background lifestyle image *\/}\n              {cur.image && (\n                <img\n                  src={cur.image}\n                  alt={cur.label}\n                  style={{\n                    position: \"absolute\", inset: 0,\n                    width: \"100%\", height: \"100%\",\n                    objectFit: \"cover\",\n                    zIndex: 0,\n                  }}\n                \/>\n              )}\n              {\/* Gradient overlay for legibility *\/}\n              <div style={{\n                position: \"absolute\", inset: 0, zIndex: 1,\n                background: \"linear-gradient(180deg, rgba(4,5,10,0.05) 0%, rgba(4,5,10,0.35) 100%)\",\n              }}\/>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.AudienceTabs = AudienceTabs;\n\n\/\/ === src\/AnalyticsShowcase.jsx ===\nfunction AnalyticsShowcase() {\n  return (\n    <section className=\"tox-section tox-bg-deep\" style={{ position: \"relative\" }}>\n      <Halo size={900} top={-380} right={-260} opacity={0.18}\/>\n      <Container style={{ position: \"relative\" }}>\n        <SectionHead\n          eyebrow=\"Analytics Showcase\"\n          title=\"See the visitor journey\"\n          titleAccent=\"clearly.\"\n          lead=\"Powerful analytics that transform raw signals into the insights destination teams actually act on.\"\n        \/>\n\n        <div className=\"tox-card tox-card--dark\" style={{ padding: 28, background: \"linear-gradient(180deg, rgba(255,255,255,0.025), rgba(255,255,255,0.005))\" }}>\n          <div style={{ display: \"grid\", gridTemplateColumns: \"1.4fr 1fr\", gap: 20 }}>\n            {\/* Heatmap *\/}\n            <div style={{ padding: 24, borderRadius: 16, background: \"rgba(0,0,0,0.35)\", border: \"1px solid rgba(255,255,255,0.06)\" }}>\n              <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 16 }}>\n                <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, color: \"#fff\", fontWeight: 600, fontSize: 14 }}>\n                  <span style={{ color: \"var(--to-tech-blue)\" }}>{Ic.pin({ size: 16 })}<\/span> Visitor Heatmap\n                <\/div>\n                <span style={{ fontSize: 12, color: \"rgba(255,255,255,0.5)\" }}>Last 7 days<\/span>\n              <\/div>\n              <Heatmap\/>\n            <\/div>\n\n            {\/* Right column: QR trend + Top zones *\/}\n            <div style={{ display: \"grid\", gridTemplateRows: \"auto 1fr\", gap: 20 }}>\n              <div style={{ padding: 22, borderRadius: 16, background: \"rgba(0,0,0,0.35)\", border: \"1px solid rgba(255,255,255,0.06)\" }}>\n                <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, color: \"#fff\", fontWeight: 600, fontSize: 14, marginBottom: 14 }}>\n                  <span style={{ color: \"var(--to-tech-blue)\" }}>{Ic.qr({ size: 16 })}<\/span> QR Scan Trends\n                <\/div>\n                {[\n                  { t: \"12:00 PM\", v: 847,  pct: 60 },\n                  { t: \"1:00 PM\",  v: 1092, pct: 72 },\n                  { t: \"2:00 PM\",  v: 1234, pct: 82 },\n                  { t: \"3:00 PM\",  v: 956,  pct: 64 },\n                  { t: \"4:00 PM\",  v: 1147, pct: 76 },\n                ].map(r => (\n                  <div key={r.t} style={{ display: \"flex\", alignItems: \"center\", gap: 10, fontSize: 12, padding: \"5px 0\" }}>\n                    <span style={{ width: 60, color: \"rgba(255,255,255,0.6)\" }}>{r.t}<\/span>\n                    <span style={{ flex: 1, height: 6, borderRadius: 6, background: \"rgba(255,255,255,0.06)\", overflow: \"hidden\" }}>\n                      <span style={{ display: \"block\", height: \"100%\", width: `${r.pct}%`, background: \"linear-gradient(90deg, var(--to-tech-blue), #54BEF5)\", borderRadius: 6 }}\/>\n                    <\/span>\n                    <span style={{ width: 46, textAlign: \"right\", color: \"#fff\", fontWeight: 600 }}>{r.v.toLocaleString()}<\/span>\n                  <\/div>\n                ))}\n              <\/div>\n\n              <div style={{ padding: 22, borderRadius: 16, background: \"rgba(0,0,0,0.35)\", border: \"1px solid rgba(255,255,255,0.06)\" }}>\n                <div style={{ display: \"flex\", alignItems: \"center\", gap: 8, color: \"#fff\", fontWeight: 600, fontSize: 14, marginBottom: 14 }}>\n                  <span style={{ color: \"var(--to-tech-blue)\" }}>{Ic.users({ size: 16 })}<\/span> Top Zones\n                <\/div>\n                {[\n                  { n: \"Main Entrance\", v: 3247, sub: \"visits today\" },\n                  { n: \"Info Center\",   v: 2891, sub: \"visits today\" },\n                  { n: \"Exhibit Hall\",  v: 2456, sub: \"visits today\" },\n                  { n: \"Gift Shop\",     v: 1832, sub: \"visits today\" },\n                ].map((z, i) => (\n                  <div key={z.n} style={{\n                    display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\n                    padding: \"10px 12px\", borderRadius: 10,\n                    background: i === 0 ? \"rgba(0,136,206,0.08)\" : \"transparent\",\n                    border: i === 0 ? \"1px solid rgba(0,136,206,0.18)\" : \"1px solid transparent\",\n                    marginTop: i === 0 ? 0 : 4,\n                  }}>\n                    <div>\n                      <div style={{ fontSize: 13.5, fontWeight: 600, color: \"#fff\" }}>{z.n}<\/div>\n                      <div style={{ fontSize: 11, color: \"rgba(255,255,255,0.5)\" }}>{z.sub}<\/div>\n                    <\/div>\n                    <div style={{ fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 15, color: \"var(--to-tech-blue)\" }}>{z.v.toLocaleString()}<\/div>\n                  <\/div>\n                ))}\n              <\/div>\n            <\/div>\n          <\/div>\n\n          {\/* Bottom strip *\/}\n          <div style={{ marginTop: 20, display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 14 }}>\n            {[\n              { l: \"Total interactions\", v: \"248K\", c: \"+12.4%\" },\n              { l: \"Avg dwell time\",     v: \"4m 32s\", c: \"+8%\" },\n              { l: \"Conversion rate\",    v: \"9.7%\", c: \"+2.1pp\" },\n              { l: \"Active devices\",     v: \"286\", c: \"Live\" },\n            ].map(s => (\n              <div key={s.l} style={{ padding: \"16px 18px\", borderRadius: 12, background: \"rgba(0,0,0,0.35)\", border: \"1px solid rgba(255,255,255,0.06)\" }}>\n                <div style={{ fontSize: 12, color: \"rgba(255,255,255,0.55)\" }}>{s.l}<\/div>\n                <div style={{ display: \"flex\", alignItems: \"baseline\", gap: 8, marginTop: 4 }}>\n                  <span style={{ fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 22, letterSpacing: \"-0.02em\", color: \"#fff\" }}>{s.v}<\/span>\n                  <span style={{ fontSize: 11, color: \"#2BBF6A\", fontWeight: 600 }}>{s.c}<\/span>\n                <\/div>\n              <\/div>\n            ))}\n          <\/div>\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\n\nfunction Heatmap() {\n  \/\/ 4x5 grid of varying intensity tiles\n  const intensities = [\n    [0.72, 0.95, 0.86, 0.34],\n    [0.42, 0.55, 0.50, 0.92],\n    [0.88, 0.62, 0.45, 0.30],\n    [0.55, 0.78, 0.95, 0.66],\n    [0.30, 0.40, 0.58, 0.82],\n  ];\n  return (\n    <div style={{ display: \"grid\", gridTemplateColumns: \"repeat(4, 1fr)\", gap: 8 }}>\n      {intensities.flat().map((v, i) => (\n        <div key={i} style={{\n          aspectRatio: \"1\",\n          borderRadius: 10,\n          background: `rgba(0,136,206,${v})`,\n          border: \"1px solid rgba(255,255,255,0.04)\",\n        }}\/>\n      ))}\n    <\/div>\n  );\n}\n\nwindow.AnalyticsShowcase = AnalyticsShowcase;\n\n\/\/ === src\/TrustStrip.jsx ===\nfunction TrustStrip() {\n  const items = [\n    { icon: Ic.shield(), title: \"Privacy-Ready\", desc: \"Built around modern data standards and consent-aware data flows.\" },\n    { icon: Ic.lock(), title: \"Enterprise Security\", desc: \"SOC 2 Type II, encryption in transit and at rest, role-based access.\" },\n    { icon: Ic.cloud(), title: \"Scalable Cloud\", desc: \"Auto-scaling infrastructure built for millions of events per day.\" },\n    { icon: Ic.fileCheck(), title: \"Consent-Aware\", desc: \"GDPR, CCPA and regional consent frameworks supported out of the box.\" },\n  ];\n  return (\n    <section className=\"tox-section tox-section--tight tox-bg-soft\" style={{ position: \"relative\" }}>\n      <Container>\n        <SectionHead\n          eyebrow=\"Trust & Compliance\"\n          title=\"Enterprise-grade by\"\n          titleAccent=\"every measure.\"\n          lead=\"Visitor data is sensitive. We built the API with privacy, security and consent at the core \u2014 so your team can move fast without compromising trust.\"\n        \/>\n        <div className=\"tox-grid tox-grid--4\">\n          {items.map((it, i) => (\n            <Reveal key={it.title} delay={i * 60}>\n              <div className=\"tox-card tox-card--light\" style={{ padding: 28, height: \"100%\" }}>\n                <span className=\"tox-icon-tile\">{it.icon}<\/span>\n                <h4 style={{ margin: \"16px 0 6px\", fontFamily: \"var(--to-font-display)\", fontWeight: 700, fontSize: 17, letterSpacing: \"-0.01em\" }}>{it.title}<\/h4>\n                <p style={{ margin: 0, fontSize: 13.5, lineHeight: 1.55, color: \"var(--to-grey-600)\" }}>{it.desc}<\/p>\n              <\/div>\n            <\/Reveal>\n          ))}\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.TrustStrip = TrustStrip;\n\n\/\/ === src\/FinalCTA.jsx ===\nfunction FinalCTA() {\n  return (\n    <section className=\"tox-section\" style={{\n      position: \"relative\",\n      background: \"radial-gradient(ellipse at 50% 0%, rgba(0,136,206,0.30) 0%, transparent 55%), linear-gradient(180deg, #04050A 0%, #06070C 100%)\",\n      color: \"#fff\",\n      overflow: \"hidden\",\n    }}>\n      <Halo size={1100} top={-560} left=\"50%\" style={{ transform: \"translateX(-50%)\" }} opacity={0.14}\/>\n      <div style={{\n        position: \"absolute\", inset: 0,\n        backgroundImage: \"linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px)\",\n        backgroundSize: \"64px 64px\",\n        maskImage: \"radial-gradient(ellipse at 50% 50%, #000 30%, transparent 70%)\",\n        WebkitMaskImage: \"radial-gradient(ellipse at 50% 50%, #000 30%, transparent 70%)\",\n      }}\/>\n      <Container narrow style={{ position: \"relative\", textAlign: \"center\" }}>\n        <Eyebrow color=\"#54BEF5\">Ready When You Are<\/Eyebrow>\n        <h2 style={{\n          margin: \"20px auto 22px\",\n          fontFamily: \"var(--to-font-display)\", fontWeight: 800,\n          fontSize: \"clamp(40px, 5.2vw, 68px)\",\n          lineHeight: 1.05, letterSpacing: \"-0.032em\",\n          textWrap: \"balance\", maxWidth: 900,\n        }}>\n          Turn visitor behavior into<br\/>\n          <span style={{ background: \"linear-gradient(90deg, #54BEF5, #0088CE)\", WebkitBackgroundClip: \"text\", backgroundClip: \"text\", color: \"transparent\" }}>measurable growth.<\/span>\n        <\/h2>\n        <p style={{ margin: \"0 auto 36px\", fontSize: 18, color: \"rgba(255,255,255,0.72)\", lineHeight: 1.5, maxWidth: 620 }}>\n          See how TrueOmni transforms real-world engagement into the kind of intelligence\n          your destination, venue or smart city actually deploys against.\n        <\/p>\n        <div style={{ display: \"inline-flex\", gap: 14 }}>\n          <Btn variant=\"primary\" size=\"lg\" icon={Ic.arrowRight()} href=\"https:\/\/trueomni.com\/book_a_demo\/\">Book a Demo<\/Btn>\n          <Btn variant=\"ghost-dark\" size=\"lg\" href=\"https:\/\/trueomni.com\/contact-us\/\">Talk to Sales<\/Btn>\n        <\/div>\n        <div style={{ marginTop: 28, fontSize: 13, color: \"rgba(255,255,255,0.5)\" }}>\n          Trusted by destinations, convention centers, airports and smart cities \u00b7 sales@trueomni.com\n        <\/div>\n      <\/Container>\n    <\/section>\n  );\n}\nwindow.FinalCTA = FinalCTA;\n\n\/\/ === src\/Footer.jsx ===\nfunction Footer() {\n  const cols = [\n    { h: \"Product\", links: [\"Visitor API\", \"Kiolytics\", \"OmniEdge\", \"Integrations\", \"Pricing\"] },\n    { h: \"Developers\", links: [\"Documentation\", \"API Reference\", \"Status\", \"Changelog\", \"GitHub\"] },\n    { h: \"Company\", links: [\"About TrueOmni\", \"Customers\", \"Careers\", \"Contact\", \"Legal\"] },\n  ];\n  return (\n    <footer style={{ background: \"#04050A\", color: \"rgba(255,255,255,0.7)\", padding: \"80px 0 40px\", borderTop: \"1px solid rgba(255,255,255,0.06)\" }}>\n      <Container>\n        <div style={{ display: \"grid\", gridTemplateColumns: \"1.4fr 1fr 1fr 1fr\", gap: 48 }}>\n          <div>\n            <img src={(window.__resources && window.__resources.logoLight) || \"https:\/\/trueomni.com\/wp-content\/uploads\/2026\/05\/Logo-Trueomni-Light.svg\"} alt=\"TrueOmni\" style={{ height: 26 }}\/>\n            <p style={{ marginTop: 18, fontSize: 14, lineHeight: 1.6, color: \"rgba(255,255,255,0.55)\", maxWidth: 280 }}>\n              The visitor intelligence layer for physical venues. Capturing real engagement, everywhere.\n            <\/p>\n            <div style={{ marginTop: 22, fontSize: 13, color: \"rgba(255,255,255,0.5)\" }}>\n              sales@trueomni.com \u00b7 1 833 300 6664\n            <\/div>\n          <\/div>\n          {cols.map(c => (\n            <div key={c.h}>\n              <div style={{ fontSize: 12, fontWeight: 600, letterSpacing: \"0.16em\", textTransform: \"uppercase\", color: \"rgba(255,255,255,0.85)\" }}>{c.h}<\/div>\n              <ul style={{ margin: \"16px 0 0\", padding: 0, listStyle: \"none\", display: \"grid\", gap: 10 }}>\n                {c.links.map(l => (\n                  <li key={l}><a href=\"#\" style={{ fontSize: 14, color: \"rgba(255,255,255,0.65)\" }}>{l}<\/a><\/li>\n                ))}\n              <\/ul>\n            <\/div>\n          ))}\n        <\/div>\n        <div style={{ marginTop: 56, paddingTop: 24, borderTop: \"1px solid rgba(255,255,255,0.06)\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", flexWrap: \"wrap\", gap: 16 }}>\n          <div style={{ fontSize: 12, color: \"rgba(255,255,255,0.45)\", letterSpacing: \"0.06em\" }}>\u00a9 2026 TRUEOMNI \u00b7 ALL RIGHTS RESERVED<\/div>\n          <div style={{ display: \"flex\", gap: 18, fontSize: 12, color: \"rgba(255,255,255,0.45)\", letterSpacing: \"0.06em\", textTransform: \"uppercase\" }}>\n            <a href=\"#\" style={{ color: \"inherit\" }}>Privacy Policy<\/a>\n            <a href=\"#\" style={{ color: \"inherit\" }}>Terms of Service<\/a>\n            <a href=\"#\" style={{ color: \"inherit\" }}>Status<\/a>\n          <\/div>\n        <\/div>\n      <\/Container>\n    <\/footer>\n  );\n}\nwindow.Footer = Footer;\n\n\/\/ === src\/App.jsx ===\n\/\/ Tweak defaults \u2014 toggleable from the Tweaks panel\nconst TWEAK_DEFAULTS = \/*EDITMODE-BEGIN*\/{\n  \"darkDominant\": false\n}\/*EDITMODE-END*\/;\n\nfunction App() {\n  const [tweaks, setTweaks] = React.useState(TWEAK_DEFAULTS);\n  const [editMode, setEditMode] = React.useState(false);\n\n  \/\/ Tweak protocol\n  React.useEffect(() => {\n    const handler = (ev) => {\n      const d = ev.data || {};\n      if (d.type === \"__activate_edit_mode\") setEditMode(true);\n      if (d.type === \"__deactivate_edit_mode\") setEditMode(false);\n    };\n    window.addEventListener(\"message\", handler);\n    \/* edit mode disabled in embed *\/\n    return () => window.removeEventListener(\"message\", handler);\n  }, []);\n\n  const setTweak = (k, v) => {\n    setTweaks(prev => {\n      const next = { ...prev, [k]: v };\n      window.parent.postMessage({ type: \"__edit_mode_set_keys\", edits: { [k]: v } }, \"*\");\n      return next;\n    });\n  };\n\n  \/\/ When darkDominant: force every section background dark variants\n  React.useEffect(() => {\n    document.body.dataset.darkDominant = tweaks.darkDominant ? \"true\" : \"false\";\n  }, [tweaks.darkDominant]);\n\n  return (\n    <>\n      <style>{`\n        body[data-dark-dominant=\"true\"] .tox-bg-light,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft {\n          background: #06070C !important;\n          color: #fff !important;\n        }\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-card--light,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-card--light {\n          background: linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.015)) !important;\n          border-color: rgba(255,255,255,0.08) !important;\n          color: rgba(255,255,255,0.92) !important;\n        }\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-card--light h3,\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-card--light h4,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-card--light h3,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-card--light h4 {\n          color: #fff !important;\n        }\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-card--light p,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-card--light p {\n          color: rgba(255,255,255,0.66) !important;\n        }\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-h-display,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-h-display {\n          color: #fff !important;\n        }\n        body[data-dark-dominant=\"true\"] .tox-bg-light .tox-lead-text,\n        body[data-dark-dominant=\"true\"] .tox-bg-soft .tox-lead-text {\n          color: rgba(255,255,255,0.72) !important;\n        }\n      `}<\/style>\n      <main>\n      <Hero\/>\n        <WhyMatters\/>\n        <WhatItDoes\/>\n        <HowItWorks\/>\n        <Integrations\/>\n        <AudienceTabs\/>\n        <TrustStrip\/>\n        <FinalCTA\/>\n      <\/main>\n\n      {editMode && (\n        <div style={{\n          position: \"fixed\", right: 24, bottom: 24, zIndex: 100,\n          width: 280, padding: 18, borderRadius: 14,\n          background: \"rgba(13,16,24,0.92)\", color: \"#fff\",\n          border: \"1px solid rgba(255,255,255,0.12)\",\n          boxShadow: \"0 24px 60px rgba(0,0,0,0.4)\",\n          backdropFilter: \"blur(18px)\",\n          fontFamily: \"var(--to-font-body)\",\n        }}>\n          <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 14 }}>\n            <strong style={{ fontFamily: \"var(--to-font-display)\", fontSize: 14, letterSpacing: \"0.04em\", textTransform: \"uppercase\" }}>Tweaks<\/strong>\n            <button onClick={() => { setEditMode(false); window.parent.postMessage({ type: \"__edit_mode_dismissed\" }, \"*\"); }}\n              style={{ background: \"transparent\", border: 0, color: \"rgba(255,255,255,0.6)\", cursor: \"pointer\" }}>\u2715<\/button>\n          <\/div>\n          <label style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 12, fontSize: 13.5 }}>\n            <span>\n              <div style={{ fontWeight: 600 }}>Dark dominant<\/div>\n              <div style={{ fontSize: 12, color: \"rgba(255,255,255,0.55)\" }}>Force every section dark<\/div>\n            <\/span>\n            <input type=\"checkbox\" checked={!!tweaks.darkDominant} onChange={e => setTweak(\"darkDominant\", e.target.checked)} style={{ width: 36, height: 20 }}\/>\n          <\/label>\n        <\/div>\n      )}\n    <\/>\n  );\n}\n\nReactDOM.createRoot(document.getElementById(\"root\")).render(<App\/>);\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"inline_featured_image":false,"postBodyCss":"","postBodyMargin":[],"postBodyPadding":[],"postBodyBackground":{"backgroundType":"classic","gradient":""},"_thinkrank_schema_form_data":"","_thinkrank_selected_schema_type":"","_thinkrank_additional_schemas":"","_thinkrank_canonical_url":"","_thinkrank_og_title":"","_thinkrank_og_description":"","_thinkrank_og_image":"","_thinkrank_twitter_title":"","_thinkrank_twitter_description":"","_thinkrank_twitter_image":"","_thinkrank_imported_from":"","_thinkrank_focus_keywords":[],"_thinkrank_focus_keyword":"","_thinkrank_robots_meta_enabled":0,"_thinkrank_robots_meta":"","_thinkrank_advanced_robots_meta":"","_thinkrank_exclude_from_search":0,"_thinkrank_exclude_from_archives":0,"_thinkrank_primary_category":0,"footnotes":""},"class_list":["post-56570","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.9 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Visitor Intelligence API - TrueOmni<\/title>\n<meta name=\"description\" content=\"%\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trueomni.com\/spanish\/visitor-intelligence-api\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visitor Intelligence API\" \/>\n<meta property=\"og:description\" content=\"%\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trueomni.com\/spanish\/visitor-intelligence-api\/\" \/>\n<meta property=\"og:site_name\" content=\"TrueOmni\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/trueomni\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-06T22:43:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/trueomni.com\/wp-content\/uploads\/2021\/02\/trueomni_hospitality_mainheader.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/trueomni.com\\\/visitor-intelligence-api\\\/\",\"url\":\"https:\\\/\\\/trueomni.com\\\/visitor-intelligence-api\\\/\",\"name\":\"Visitor Intelligence API - TrueOmni\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/trueomni.com\\\/#website\"},\"datePublished\":\"2026-05-06T05:47:46+00:00\",\"dateModified\":\"2026-05-06T22:43:27+00:00\",\"description\":\"%\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/trueomni.com\\\/visitor-intelligence-api\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/trueomni.com\\\/visitor-intelligence-api\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/trueomni.com\\\/visitor-intelligence-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/trueomni.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Visitor Intelligence API\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/trueomni.com\\\/#website\",\"url\":\"http:\\\/\\\/trueomni.com\\\/\",\"name\":\"TrueOmni\",\"description\":\"TrueOmni Self-Service Digital Customer Experience Company\",\"publisher\":{\"@id\":\"http:\\\/\\\/trueomni.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/trueomni.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/trueomni.com\\\/#organization\",\"name\":\"TRUE OMNI LLC\",\"alternateName\":\"TRUE OMNI LLC\",\"url\":\"http:\\\/\\\/trueomni.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/trueomni.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"http:\\\/\\\/trueomni.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/TrueOmni-Logo-2.png\",\"contentUrl\":\"http:\\\/\\\/trueomni.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/TrueOmni-Logo-2.png\",\"width\":1000,\"height\":230,\"caption\":\"TRUE OMNI LLC\"},\"image\":{\"@id\":\"http:\\\/\\\/trueomni.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/trueomni\\\/\"],\"description\":\"TrueOmni is the leader in digital self-service solutions, offering innovative kiosks, digital signage, and mobile marketing platforms. Enhance customer engagement and streamline operations with our cutting-edge technology tailored for the hospitality, retail, and tourism industries.\",\"email\":\"info@trueomni.com\",\"telephone\":\"8333006664\",\"legalName\":\"True Omni LLC\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Visitor Intelligence API - TrueOmni","description":"%","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/trueomni.com\/spanish\/visitor-intelligence-api\/","og_locale":"es_MX","og_type":"article","og_title":"Visitor Intelligence API","og_description":"%","og_url":"https:\/\/trueomni.com\/spanish\/visitor-intelligence-api\/","og_site_name":"TrueOmni","article_publisher":"https:\/\/www.facebook.com\/trueomni\/","article_modified_time":"2026-05-06T22:43:27+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/trueomni.com\/wp-content\/uploads\/2021\/02\/trueomni_hospitality_mainheader.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trueomni.com\/visitor-intelligence-api\/","url":"https:\/\/trueomni.com\/visitor-intelligence-api\/","name":"Visitor Intelligence API - TrueOmni","isPartOf":{"@id":"http:\/\/trueomni.com\/#website"},"datePublished":"2026-05-06T05:47:46+00:00","dateModified":"2026-05-06T22:43:27+00:00","description":"%","breadcrumb":{"@id":"https:\/\/trueomni.com\/visitor-intelligence-api\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trueomni.com\/visitor-intelligence-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/trueomni.com\/visitor-intelligence-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/trueomni.com\/"},{"@type":"ListItem","position":2,"name":"Visitor Intelligence API"}]},{"@type":"WebSite","@id":"http:\/\/trueomni.com\/#website","url":"http:\/\/trueomni.com\/","name":"VerdaderoOmni","description":"TrueOmni es una empresa de experiencia digital de autoservicio para el cliente.","publisher":{"@id":"http:\/\/trueomni.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/trueomni.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"http:\/\/trueomni.com\/#organization","name":"TRUE OMNI LLC","alternateName":"TRUE OMNI LLC","url":"http:\/\/trueomni.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/trueomni.com\/#\/schema\/logo\/image\/","url":"http:\/\/trueomni.com\/wp-content\/uploads\/2024\/06\/TrueOmni-Logo-2.png","contentUrl":"http:\/\/trueomni.com\/wp-content\/uploads\/2024\/06\/TrueOmni-Logo-2.png","width":1000,"height":230,"caption":"TRUE OMNI LLC"},"image":{"@id":"http:\/\/trueomni.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/trueomni\/"],"description":"TrueOmni is the leader in digital self-service solutions, offering innovative kiosks, digital signage, and mobile marketing platforms. Enhance customer engagement and streamline operations with our cutting-edge technology tailored for the hospitality, retail, and tourism industries.","email":"info@trueomni.com","telephone":"8333006664","legalName":"True Omni LLC"}]}},"_links":{"self":[{"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/pages\/56570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/comments?post=56570"}],"version-history":[{"count":96,"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/pages\/56570\/revisions"}],"predecessor-version":[{"id":56844,"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/pages\/56570\/revisions\/56844"}],"wp:attachment":[{"href":"https:\/\/trueomni.com\/spanish\/wp-json\/wp\/v2\/media?parent=56570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}