{"id":227767,"date":"2026-10-06T16:09:53","date_gmt":"2026-10-06T16:09:53","guid":{"rendered":"https:\/\/datatrue.com\/?page_id=227767"},"modified":"2026-10-06T16:15:31","modified_gmt":"2026-10-06T16:15:31","slug":"ga4-ecommerce-setup","status":"publish","type":"page","link":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/","title":{"rendered":"GA4 Ecommerce Setup"},"content":{"rendered":"\n<style id=\"dt-divi-integration\">body h1.entry-title.main_title{display:none !important}#main-content .container{width:100% !important;max-width:100% !important;padding-left:0 !important;padding-right:0 !important;padding-top:0 !important}#left-area{width:100% !important;float:none !important;padding:0 !important}#sidebar{display:none !important}#main-content .container:before{display:none !important}.yarpp-related,.yarpp.yarpp-related{display:none !important}#left-area article.et_pb_post{margin-bottom:0 !important}#dt-page p{padding-bottom:0}#dt-page :is(h1,h2,h3,h4,h5,h6){padding-bottom:0}#dt-page :is(ul,ol){padding:0;margin:0;list-style:none;line-height:inherit}#dt-page img{max-width:100%;height:auto}<\/style><style id=\"dt-page-css\">@import url('https:\/\/fonts.googleapis.com\/css2?family=Lato:wght@400;#dt-page 700;900&family=Work+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@500;600&display=swap');:root{--ink:#242923;--ink-soft:#55605A;--ink-faint:#8B958E;--mint:#0EA173;--mint-fill:#10B981;--mint-tint:#F3FAF7;--teal:#4C7E93;--teal-tint:#EAF2F4;--surface:#FFFFFF;--border:#DCE7E2;--draft:#B5791A;--draft-tint:#FBF1DF;--warn:#C0453B;--warn-tint:#FDF0EE;--shadow:0 24px 48px -28px rgba(36,41,35,0.28);}#dt-page,#dt-page *{box-sizing:border-box;}#dt-page{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}#dt-page{margin:0;background:var(--surface);color:var(--ink);font-family:'Work Sans','Helvetica Neue',Arial,sans-serif;line-height:1.55;}#dt-page h1,#dt-page h2,#dt-page h3,#dt-page h4{font-family:'Lato','Helvetica Neue',Arial,sans-serif;color:var(--ink);margin:0;text-wrap:balance;}#dt-page p{margin:0;}#dt-page a{color:inherit;}#dt-page code{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:.86em;background:var(--mint-tint);border:1px solid #DCEDE5;border-radius:5px;padding:1px 6px;color:var(--ink);white-space:nowrap;}#dt-page .wrap{max-width:1120px;margin:0 auto;padding:0 32px;}#dt-page .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}#dt-page .breadcrumb{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.04em;color:var(--ink-faint);text-transform:uppercase;}#dt-page .breadcrumb ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px;}#dt-page .breadcrumb li{display:inline-flex;gap:6px;align-items:center;}#dt-page .breadcrumb li + li::before{content:\"\\203A\";color:#B9C4BE;}#dt-page .breadcrumb a{color:var(--teal);text-decoration:none;}#dt-page .breadcrumb a:hover{text-decoration:underline;}#dt-page .eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--mint);background:var(--mint-tint);border:1px solid #CFE9DF;padding:6px 12px 6px 10px;border-radius:999px;}#dt-page .eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--mint-fill);}#dt-page .eyebrow .sep{color:#9CCFBA;}#dt-page .eyebrow.on-dark{background:rgba(255,255,255,0.1);border-color:rgba(255,255,255,0.18);color:#8FE3C3;}#dt-page .eyebrow.on-dark .dot{background:#6FE3B6;}#dt-page .section-head{max-width:64ch;}#dt-page .section-head h2{font-size:28px;font-weight:900;letter-spacing:-0.01em;line-height:1.2;}#dt-page .section-head p{margin-top:10px;color:var(--ink-soft);font-size:15px;line-height:1.6;}#dt-page .pc-head{padding:40px 0 0;}#dt-page .pc-head .eyebrow{margin-top:22px;}#dt-page .pc-head h1{margin-top:16px;font-size:40px;font-weight:900;letter-spacing:-0.015em;line-height:1.14;max-width:900px;}#dt-page .definition{position:relative;margin-top:28px;max-width:900px;background:var(--mint-tint);border:1px solid #CFE9DF;border-left:5px solid var(--mint-fill);border-radius:14px;padding:26px 34px 28px 32px;overflow:hidden;}#dt-page .definition::after{content:\"\\201C\";position:absolute;right:22px;top:-18px;font-family:'Lato',Georgia,serif;font-weight:900;font-size:132px;line-height:1;color:var(--mint-fill);opacity:.13;pointer-events:none;}#dt-page .def-kicker{display:flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--mint);margin-bottom:10px;}#dt-page .def-kicker::before{content:\"\";width:16px;height:2px;background:var(--mint-fill);border-radius:2px;}#dt-page .def-text{position:relative;font-family:'Lato','Helvetica Neue',Arial,sans-serif;font-weight:700;font-size:19.5px;line-height:1.58;color:var(--ink);letter-spacing:-0.002em;}#dt-page .art-grid{display:grid;grid-template-columns:minmax(0,1fr) 248px;gap:72px;padding:44px 0 8px;align-items:start;}#dt-page .prose{max-width:700px;min-width:0;}#dt-page .prose>* + *{margin-top:16px;}#dt-page .prose .lede{font-size:17.5px;line-height:1.68;color:var(--ink);}#dt-page .prose h2{font-size:26px;font-weight:900;letter-spacing:-0.01em;line-height:1.22;margin-top:52px;scroll-margin-top:24px;}#dt-page .prose h2 + *{margin-top:14px;}#dt-page .prose h3{font-size:19px;font-weight:900;line-height:1.3;margin-top:30px;scroll-margin-top:24px;}#dt-page .prose h3 + *{margin-top:8px;}#dt-page .prose p{font-size:16px;line-height:1.72;color:var(--ink-soft);}#dt-page .prose strong{color:var(--ink);font-weight:600;}#dt-page .prose a,#dt-page .inline-link{color:var(--teal);font-weight:500;text-decoration:underline;text-decoration-color:#B8CFD8;text-underline-offset:3px;text-decoration-thickness:1px;}#dt-page .prose a:hover,#dt-page .inline-link:hover{text-decoration-color:var(--teal);}#dt-page .prose ul{list-style:none;margin-left:0;padding:0;}#dt-page .prose ul li{position:relative;padding-left:24px;font-size:16px;line-height:1.68;color:var(--ink-soft);}#dt-page .prose ul li + li{margin-top:8px;}#dt-page .prose ul li::before{content:\"\";position:absolute;left:4px;top:.72em;width:7px;height:7px;border-radius:50%;background:var(--mint-fill);}#dt-page .prose ol.steps{list-style:none;padding:0;counter-reset:step;}#dt-page .prose ol.steps li{position:relative;counter-increment:step;padding:2px 0 0 50px;font-size:16px;line-height:1.68;color:var(--ink-soft);min-height:32px;}#dt-page .prose ol.steps li + li{margin-top:16px;}#dt-page .prose ol.steps li::before{content:counter(step);position:absolute;left:0;top:0;width:32px;height:32px;border-radius:50%;background:var(--mint-tint);border:1px solid #CFE9DF;color:var(--mint);font-family:'Lato',sans-serif;font-weight:900;font-size:14px;display:flex;align-items:center;justify-content:center;}#dt-page .prose ol.steps li:not(:last-child)::after{content:\"\";position:absolute;left:15.5px;top:36px;bottom:-14px;width:1px;background:#D5E8DF;}#dt-page .prose ul.check-list li{padding:14px 18px 14px 50px;background:var(--surface);border:1px solid var(--border);border-radius:12px;}#dt-page .prose ul.check-list li + li{margin-top:10px;}#dt-page .prose ul.check-list li::before{content:\"\\2713\";left:16px;top:15px;width:22px;height:22px;background:var(--mint-tint);border:1px solid #CFE9DF;color:var(--mint);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;}#dt-page .prose ul.check-list li strong{font-family:'Lato',sans-serif;font-weight:900;}#dt-page .lead-stack{display:flex;flex-direction:column;gap:10px;}#dt-page .prose .lead-stack{margin-top:18px;}#dt-page .lead-card{border:1px solid var(--border);border-left:3px solid var(--mint-fill);border-radius:10px;padding:16px 20px;background:var(--surface);}#dt-page .lead-card p{font-size:15.5px;line-height:1.66;}#dt-page .lead-card .lead{display:block;font-family:'Lato',sans-serif;font-weight:900;font-size:16.5px;color:var(--ink);margin-bottom:4px;}#dt-page .next-read{display:flex;flex-wrap:wrap;gap:10px;}#dt-page .prose .next-read{margin-top:22px;}#dt-page .next-link{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--teal);text-decoration:none;background:var(--teal-tint);border:1px solid #D3E3E9;border-radius:999px;padding:9px 16px;}#dt-page .next-link:hover{border-color:var(--teal);}#dt-page .next-link svg{width:14px;height:14px;}#dt-page .visual-slot{border:1px dashed #C4D3CC;border-radius:14px;background:linear-gradient(180deg,#FBFDFC,#F4F8F6);padding:26px 24px;text-align:center;color:var(--ink-faint);display:flex;flex-direction:column;align-items:center;}#dt-page .prose .visual-slot{margin-top:26px;}#dt-page .visual-slot .vs-badge{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mint);background:var(--mint-tint);border:1px solid #CFE9DF;padding:3px 9px;border-radius:5px;margin-bottom:10px;}#dt-page .visual-slot .vs-title{font-family:'Lato',sans-serif;font-weight:700;font-size:14.5px;color:var(--ink-soft);}#dt-page .visual-slot .vs-desc{font-size:12.5px;margin-top:6px;max-width:52ch;line-height:1.5;}#dt-page .visual-slot.tall{min-height:220px;justify-content:center;}#dt-page .checklist{list-style:none;margin:22px 0 0;padding:0;display:flex;flex-direction:column;gap:14px;counter-reset:ck;}#dt-page .checklist>li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;border:1px solid var(--border);border-radius:14px;padding:22px 24px 22px 20px;background:var(--surface);}#dt-page .checklist .ck-num{width:40px;height:40px;border-radius:50%;background:var(--mint-fill);color:#fff;font-family:'Lato',sans-serif;font-weight:900;font-size:17px;display:flex;align-items:center;justify-content:center;}#dt-page .checklist .ck-body>* + *{margin-top:12px;}#dt-page .prose .checklist h3{margin-top:6px;font-size:18.5px;}#dt-page .checklist .ck-body p,#dt-page .checklist .ck-body li{font-size:15.5px;}#dt-page .checklist-wrap{margin-top:22px;}#dt-page .checklist-head{display:flex;align-items:center;gap:10px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .checklist-head .bar{flex:1;height:1px;background:var(--border);}#dt-page .toc{position:sticky;top:24px;border-left:1px solid var(--border);padding:4px 0 4px 20px;}#dt-page .toc-label{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:12px;}#dt-page .toc ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}#dt-page .toc a{display:block;font-size:13.5px;line-height:1.4;color:var(--ink-soft);text-decoration:none;}#dt-page .toc a:hover{color:var(--mint);}#dt-page .faq-block{padding:12px 0 8px;}#dt-page .faq-block h2{font-size:26px;font-weight:900;margin-bottom:18px;scroll-margin-top:24px;}#dt-page .faq-list{max-width:80ch;display:flex;flex-direction:column;gap:10px;}#dt-page .faq-item{border:1px solid var(--border);border-radius:10px;padding:2px 18px;background:var(--surface);}#dt-page .faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;font-size:15.5px;font-weight:700;color:var(--ink);cursor:pointer;list-style:none;font-family:'Lato',sans-serif;}#dt-page .faq-item summary::-webkit-details-marker{display:none;}#dt-page .faq-item summary::after{content:\"+\";font-size:20px;font-weight:400;color:var(--mint);flex-shrink:0;}#dt-page .faq-item[open] summary::after{content:\"\\2013\";}#dt-page .faq-item p{padding-bottom:16px;font-size:15px;color:var(--ink-soft);line-height:1.65;}#dt-page .band{padding:52px 0;}#dt-page .band.alt{background:var(--mint-tint);border-top:1px solid #E4F1EB;border-bottom:1px solid #E4F1EB;}#dt-page .band.rule{border-top:1px solid var(--border);}#dt-page .tile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:22px;}#dt-page .tile-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));}#dt-page .tile{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px 44px 18px 20px;text-decoration:none;color:var(--ink);transition:border-color .15s,background .15s;}#dt-page .tile:hover{border-color:var(--mint-fill);}#dt-page .tile::after{content:\"\\2192\";position:absolute;right:18px;top:17px;color:var(--ink-faint);font-size:15px;transition:color .15s,transform .15s;}#dt-page .tile:hover::after{color:var(--mint);transform:translateX(2px);}#dt-page .tile .t-label{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px;}#dt-page .tile h3{font-size:16px;font-weight:900;line-height:1.3;}#dt-page .tile p{margin-top:6px;font-size:13.5px;color:var(--ink-soft);line-height:1.55;}#dt-page .tile.feature{grid-column:span 2;background:var(--surface);border-color:#BFDFD1;box-shadow:var(--shadow);padding:24px 52px 24px 26px;}#dt-page .tile.feature h3{font-size:21px;}#dt-page .tile.feature p{font-size:14.5px;}#dt-page .tile.feature .t-label{color:var(--mint);}#dt-page .tile .t-lane{align-self:flex-start;margin-top:10px;}#dt-page .market{margin-top:22px;max-width:900px;display:grid;grid-template-columns:minmax(0,1fr);border:1px solid #CFE0E6;border-radius:14px;overflow:hidden;}#dt-page .market-main{background:var(--teal-tint);padding:24px 28px 26px;position:relative;}#dt-page .market-code{position:absolute;right:22px;top:18px;font-family:'Lato',sans-serif;font-weight:900;font-size:44px;letter-spacing:-0.02em;color:var(--teal);opacity:.18;line-height:1;}#dt-page .market-main .market-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--teal);}#dt-page .market-main h2{margin-top:10px;font-size:22px;font-weight:900;}#dt-page .market-main p.m-line{margin-top:8px;max-width:60ch;font-size:17px;color:var(--ink);line-height:1.6;}#dt-page .market-main .m-src{margin-top:12px;font-size:12px;color:var(--ink-faint);}#dt-page .market-main .m-src a{color:var(--teal);}#dt-page .market-laws{background:var(--surface);padding:20px 22px;}#dt-page .market-laws .ml-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:10px;}#dt-page .mini-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;}#dt-page .mini-tile{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:9px;padding:10px 14px;text-decoration:none;color:var(--ink);font-size:14px;font-weight:600;line-height:1.3;}#dt-page .mini-tile:hover{border-color:var(--mint-fill);background:var(--mint-tint);}#dt-page .mini-tile::after{content:\"\\2192\";color:var(--ink-faint);font-weight:400;}#dt-page .mini-tile .mt-type{display:block;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:9.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:2px;}#dt-page .market-laws .ml-empty{font-size:13px;color:var(--ink-faint);line-height:1.5;}#dt-page .jump{margin-top:22px;max-width:900px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border:1px solid var(--border);border-radius:14px;background:var(--surface);}#dt-page .jump-col{padding:20px 24px 22px;}#dt-page .jump-col + .jump-col{border-left:1px solid var(--border);}#dt-page .jump-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .jump-col h2{margin-top:6px;font-size:16.5px;font-weight:900;}#dt-page .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}#dt-page .chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:7px 13px;text-decoration:none;}#dt-page .chip:hover{border-color:var(--mint-fill);background:var(--mint-tint);color:var(--mint);}#dt-page .chip::after{content:\"\\2192\";color:var(--ink-faint);font-weight:400;font-size:12px;}#dt-page .pillar-body{padding-top:40px;padding-bottom:8px;}#dt-page .pillar-body .prose{max-width:720px;}#dt-page .module{margin-top:22px;}#dt-page .card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}#dt-page .card-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));}#dt-page .r-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:14px;padding:22px 22px 20px;background:var(--surface);}#dt-page .r-card .rc-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mint);margin-bottom:8px;}#dt-page .r-card h3{font-size:17px;font-weight:900;line-height:1.3;}#dt-page .r-card p{margin-top:8px;font-size:14.5px;color:var(--ink-soft);line-height:1.62;flex:1;}#dt-page .r-card .rc-go{margin-top:14px;font-size:13.5px;font-weight:600;color:var(--teal);text-decoration:none;display:inline-flex;gap:6px;align-items:center;}#dt-page .r-card .rc-go:hover{text-decoration:underline;}#dt-page .r-card.numbered{position:relative;padding-top:58px;}#dt-page .r-card.numbered .rc-n{position:absolute;left:22px;top:18px;width:30px;height:30px;border-radius:50%;background:var(--mint-fill);color:#fff;font-family:'Lato',sans-serif;font-weight:900;font-size:14px;display:flex;align-items:center;justify-content:center;}#dt-page .r-card.region{text-decoration:none;color:var(--ink);position:relative;}#dt-page .r-card.region:hover,#dt-page a.r-card:hover{border-color:var(--mint-fill);}#dt-page .r-card.region .rc-code{font-family:'Lato',sans-serif;font-weight:900;font-size:26px;color:var(--teal);opacity:.35;line-height:1;margin-bottom:10px;}#dt-page .feat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}#dt-page .feat{border:1px solid var(--border);border-radius:12px;padding:20px;background:var(--surface);}#dt-page .feat .f-check{width:26px;height:26px;border-radius:50%;background:var(--mint-tint);color:var(--mint);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;margin-bottom:12px;border:1px solid #CFE9DF;}#dt-page .feat h3{font-size:15.5px;font-weight:900;margin-bottom:6px;line-height:1.3;}#dt-page .feat p{font-size:14px;color:var(--ink-soft);line-height:1.62;}#dt-page .feat p a{color:var(--teal);}#dt-page .feat.wide{grid-column:1 \/ -1;}#dt-page .cat-nav{margin-top:26px;display:flex;flex-wrap:wrap;gap:10px;}#dt-page .cat-nav a{display:inline-flex;align-items:center;gap:9px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);background:var(--surface);border:1px solid var(--border);padding:8px 14px;border-radius:999px;text-decoration:none;transition:border-color .15s,color .15s,background .15s;}#dt-page .cat-nav a:hover{border-color:var(--mint-fill);color:var(--mint);background:var(--mint-tint);}#dt-page .cat-nav a .count{font-size:11px;color:var(--ink-faint);font-weight:500;letter-spacing:.02em;}#dt-page .hub-intro{margin-top:26px;max-width:76ch;font-size:16px;color:var(--ink-soft);line-height:1.65;}#dt-page .cat{padding:48px 0 8px;border-top:1px solid var(--border);scroll-margin-top:24px;}#dt-page .cat:first-of-type{border-top:none;}#dt-page .cat .eyebrow{margin-bottom:14px;}#dt-page .cat-note{margin-top:16px;font-size:14px;color:var(--ink-soft);max-width:76ch;}#dt-page .hub-callout{margin-top:4px;background:var(--teal-tint);border:1px solid #CFE0E6;border-left:4px solid var(--teal);border-radius:12px;padding:22px 26px;max-width:82ch;}#dt-page .hub-callout .hc-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin-bottom:6px;}#dt-page .hub-callout h2{font-size:20px;font-weight:900;line-height:1.3;}#dt-page .hub-callout p{margin-top:8px;font-size:15px;line-height:1.62;color:var(--ink);}#dt-page .hub-callout a{color:var(--teal);font-weight:600;}#dt-page .closing-section{padding:56px 0 72px;}#dt-page .closing{background:var(--ink);padding:56px 32px;text-align:center;border-radius:14px;}#dt-page .closing h2{color:#fff;font-size:28px;font-weight:900;margin-top:16px;}#dt-page .closing .single-cta{margin-top:24px;display:flex;flex-direction:column;align-items:center;}#dt-page .region-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--mint-fill);color:#fff;font-family:'Lato',sans-serif;font-weight:700;font-size:15px;border:none;border-radius:8px;padding:14px 24px;min-width:260px;text-decoration:none;letter-spacing:.005em;line-height:1.3;cursor:pointer;}#dt-page .region-btn:hover{background:#0C9A6E;}#dt-page .region-btn svg{width:15px;height:15px;flex-shrink:0;}#dt-page .trial-fine{margin-top:14px;font-size:13px;color:#9DB3A8;line-height:1.5;}@media (max-width:980px){#dt-page .art-grid{grid-template-columns:minmax(0,1fr);gap:0;}#dt-page .toc{display:none;}#dt-page .prose{max-width:none;}#dt-page .tile-grid{grid-template-columns:repeat(2,minmax(0,1fr));}#dt-page .card-grid.three{grid-template-columns:repeat(2,minmax(0,1fr));}}@media (max-width:820px){#dt-page .market,#dt-page .jump{grid-template-columns:minmax(0,1fr);}#dt-page .jump-col + .jump-col{border-left:none;border-top:1px solid var(--border);}#dt-page .card-grid,#dt-page .feat-grid{grid-template-columns:minmax(0,1fr);}#dt-page .card-grid.three{grid-template-columns:minmax(0,1fr);}}@media (max-width:680px){#dt-page .wrap,#dt-page .notice .wrap{padding-left:20px;padding-right:20px;}#dt-page .pc-head{padding-top:28px;}#dt-page .pc-head h1{font-size:30px;}#dt-page .definition{padding:22px 20px 22px 20px;}#dt-page .def-text{font-size:16.5px;}#dt-page .prose h2{font-size:23px;margin-top:42px;}#dt-page .tile-grid,#dt-page .tile-grid.two{grid-template-columns:minmax(0,1fr);}#dt-page .tile.feature{grid-column:auto;}#dt-page .checklist>li{grid-template-columns:minmax(0,1fr);gap:10px;padding:18px;}#dt-page .closing{padding:44px 20px;}#dt-page .closing h2{font-size:24px;}#dt-page .region-btn{width:100%;min-width:0;}#dt-page code{white-space:normal;word-break:break-word;}}#dt-page .prose a.next-link,#dt-page .prose a.rc-go,#dt-page .prose a.tile,#dt-page .prose a.chip,#dt-page .prose a.mini-tile,#dt-page .prose a.r-card{text-decoration:none;}#dt-page .prose a.next-link:hover{text-decoration:none;}#dt-page .rc-go svg,#dt-page .next-link svg,#dt-page .chip svg{width:14px;height:14px;flex-shrink:0;}#dt-page .cat.faq-cat{padding-top:36px;}#dt-page .def-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px;}#dt-page .def-top .def-kicker{margin-bottom:0;}#dt-page .verdict{position:relative;z-index:1;display:inline-flex;align-items:center;gap:10px;background:var(--surface);border:1px solid #CFE9DF;border-radius:999px;padding:6px 16px 6px 12px;margin-right:64px;}#dt-page .verdict .v-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .verdict .v-v{font-family:'Lato',sans-serif;font-weight:900;font-size:17px;color:var(--ink);}#dt-page .glance{margin-top:14px;max-width:900px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 24px 20px;}#dt-page .glance .g-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--teal);margin-bottom:10px;}#dt-page .glance dl{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}#dt-page .glance .g-row{border-left:3px solid var(--teal-tint);padding-left:14px;}#dt-page .glance dt{font-family:'Lato',sans-serif;font-weight:900;font-size:14px;color:var(--ink);margin-bottom:4px;}#dt-page .glance dd{margin:0;font-size:15px;line-height:1.6;color:var(--ink-soft);}@media (max-width:680px){#dt-page .glance dl{grid-template-columns:minmax(0,1fr);}#dt-page .verdict{margin-right:0;}}#dt-page .shot-img{margin:28px 0 0;}#dt-page .shot-img img{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:14px;background:#F4F8F6;box-shadow:var(--shadow);}#dt-page .shot-img figcaption{margin-top:10px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .diagram{margin:28px 0 0;border:1px solid var(--border);border-radius:14px;padding:20px 20px 16px;background:var(--surface);}#dt-page .diagram svg{display:block;width:100%;height:auto;}#dt-page .diagram .dg-narrow{display:none;}#dt-page .diagram figcaption{margin-top:14px;font-size:13.5px;line-height:1.55;color:var(--ink-soft);}#dt-page .diagram .dg-tag{display:block;margin-top:8px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);}@media (max-width:680px){#dt-page .diagram .dg-wide{display:none;}#dt-page .diagram .dg-narrow{display:block;max-width:360px;margin:0 auto;}#dt-page .diagram{padding:16px 12px 14px;}}#dt-page .compare-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:14px;}#dt-page table.compare-table{width:100%;border-collapse:collapse;font-size:14px;min-width:600px;}#dt-page .compare-table th,#dt-page .compare-table td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top;}#dt-page .compare-table thead th{font-family:'Lato',sans-serif;font-weight:900;font-size:13px;color:var(--ink);background:var(--mint-tint);white-space:nowrap;}#dt-page .compare-table tbody tr:last-child td{border-bottom:none;}#dt-page .compare-table td.cap{font-weight:600;color:var(--ink);max-width:220px;}#dt-page .compare-table td.note{color:var(--ink-soft);font-size:12.5px;max-width:320px;}#dt-page .sources-intro{font-size:13.5px;color:var(--ink-soft);line-height:1.6;max-width:80ch;}#dt-page .byline{margin-top:18px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13.5px;color:var(--ink-faint);}#dt-page .byline .by-who{color:var(--ink-soft);font-weight:600;}#dt-page .byline .by-sep{width:4px;height:4px;border-radius:50%;background:#C4D3CC;}#dt-page .nod{margin-top:16px;max-width:900px;display:flex;align-items:flex-start;gap:12px;border:1px solid var(--border);border-radius:12px;padding:13px 18px;background:var(--surface);}#dt-page .nod-mark{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--teal-tint);border:1px solid #CFE0E6;color:var(--teal);display:flex;align-items:center;justify-content:center;margin-top:1px;}#dt-page .nod-mark svg{width:14px;height:14px;}#dt-page .nod p{font-size:14px;line-height:1.6;color:var(--ink-soft);}#dt-page .nod .nod-k{display:block;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin-bottom:2px;}#dt-page .inline-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;border:1px solid #CFE0E6;background:var(--teal-tint);border-radius:14px;padding:20px 22px 20px 24px;}#dt-page .prose .inline-cta{margin-top:26px;}#dt-page .inline-cta .ic-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);}#dt-page .inline-cta .ic-t{margin-top:4px;font-family:'Lato',sans-serif;font-weight:900;font-size:17px;line-height:1.35;color:var(--ink);}#dt-page .prose a.ic-go,#dt-page a.ic-go{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;background:var(--surface);border:1px solid #BCD3DC;color:var(--teal);font-weight:600;font-size:14px;padding:10px 16px;border-radius:9px;text-decoration:none;}#dt-page a.ic-go:hover{border-color:var(--teal);}#dt-page a.ic-go svg{width:14px;height:14px;}#dt-page .code-block{border-radius:12px;overflow:hidden;border:1px solid #2F3630;background:var(--ink);}#dt-page .prose .code-block{margin-top:20px;}#dt-page .code-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px 8px 16px;background:#2E352F;}#dt-page .code-lang{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#8FE3C3;}#dt-page .code-copy{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#C9D3CD;background:transparent;border:1px solid #4A544D;border-radius:6px;padding:4px 9px;cursor:pointer;}#dt-page .code-copy:hover{color:#fff;border-color:#8FE3C3;}#dt-page .code-block pre{margin:0;padding:16px 18px 18px;overflow-x:auto;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:13px;line-height:1.7;color:#E7EEEA;}#dt-page .code-block pre code{background:none;border:none;padding:0;color:inherit;font-size:inherit;white-space:pre;}#dt-page .code-block .tk-tag{color:#8FE3C3;}#dt-page .code-block .tk-attr{color:#A9CBD8;}#dt-page .code-block .tk-str{color:#F0D9A8;}#dt-page .code-block .tk-com{color:#8B958E;}#dt-page .code-note{margin-top:8px;font-size:13px;color:var(--ink-faint);}#dt-page figure.shot{margin:0;}#dt-page .prose figure.shot{margin-top:24px;}#dt-page .shot-frame{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow);}#dt-page .shot-bar{display:flex;gap:6px;padding:9px 12px;background:#F4F7F5;border-bottom:1px solid var(--border);}#dt-page .shot-bar i{width:9px;height:9px;border-radius:50%;background:#D5DFDA;}#dt-page .shot-frame img{display:block;width:100%;height:auto;}#dt-page .shot-frame .visual-slot{border:none;border-radius:0;margin:0;min-height:220px;justify-content:center;}#dt-page .prose .shot-frame .visual-slot{margin-top:0;}#dt-page figure.shot figcaption{margin-top:10px;font-size:13px;color:var(--ink-faint);line-height:1.5;display:flex;gap:8px;}#dt-page figure.shot figcaption b{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;padding-top:1px;}#dt-page .dt-wrap{border:1px solid var(--border);border-radius:14px;overflow-x:auto;background:var(--surface);}#dt-page .prose .dt-wrap,#dt-page .prose .compare-table-wrap{margin-top:20px;}#dt-page table.data-table{width:100%;border-collapse:collapse;font-size:14px;}#dt-page .data-table caption{caption-side:bottom;text-align:left;padding:10px 16px 12px;font-size:12.5px;color:var(--ink-faint);border-top:1px solid var(--border);}#dt-page .data-table th,#dt-page .data-table td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top;line-height:1.55;}#dt-page .data-table thead th{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);background:#F7FAF8;white-space:nowrap;}#dt-page .data-table tbody tr:last-child td{border-bottom:none;}#dt-page .data-table tbody th{font-family:'Lato',sans-serif;font-weight:900;font-size:14.5px;color:var(--ink);}#dt-page .data-table td{color:var(--ink-soft);}#dt-page .compare-table td{color:var(--ink-soft);line-height:1.55;}#dt-page .compare-table tbody td:first-child{font-weight:600;color:var(--ink);white-space:nowrap;}#dt-page .compare-table code,#dt-page .data-table code{white-space:normal;}#dt-page .rail{position:sticky;top:24px;display:flex;flex-direction:column;gap:26px;}#dt-page .rail .toc{position:static;}#dt-page .rail-links{border-left:1px solid var(--border);padding:4px 0 4px 20px;}#dt-page .rail-links ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}#dt-page .rail-links a{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;line-height:1.4;color:var(--teal);font-weight:500;text-decoration:none;}#dt-page .rail-links a::before{content:\"\\2192\";color:var(--ink-faint);font-size:12px;margin-top:1px;}#dt-page .rail-links a:hover{text-decoration:underline;}#dt-page .toc a.active{color:var(--mint);font-weight:600;}#dt-page .src-list{margin:18px 0 0;padding:0;list-style:none;counter-reset:src;columns:2;column-gap:40px;}#dt-page .src-list li{counter-increment:src;break-inside:avoid;position:relative;padding-left:30px;font-size:13px;color:var(--ink-faint);line-height:1.55;margin-bottom:10px;}#dt-page .src-list li::before{content:counter(src);position:absolute;left:0;top:1px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;color:var(--mint);background:var(--mint-tint);border:1px solid #CFE9DF;border-radius:4px;min-width:20px;text-align:center;padding:0 3px;}#dt-page .src-list a{color:var(--teal);text-decoration:none;font-weight:500;word-break:break-word;}#dt-page .src-list a:hover{text-decoration:underline;}#dt-page .cat-pill{display:inline-flex;align-items:center;gap:6px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:5px;white-space:nowrap;border:1px solid;}#dt-page .cat-pill::before{content:\"\";width:6px;height:6px;border-radius:50%;background:currentColor;}#dt-page .cat-pill.ad{color:var(--ink);background:#F1F3F2;border-color:#DDE3E0;}#dt-page .cat-pill.an{color:var(--teal);background:var(--teal-tint);border-color:#CFE0E6;}#dt-page .cat-pill.sr{color:#3E6A7C;background:var(--surface);border-color:#BCD3DC;border-style:dashed;}#dt-page .cat-pill.ct{color:var(--mint);background:var(--mint-tint);border-color:#CFE9DF;}#dt-page .consent{display:inline-flex;align-items:flex-start;gap:7px;font-size:13px;line-height:1.4;color:var(--ink);font-weight:600;}#dt-page .consent .c-dot{flex-shrink:0;margin-top:4px;width:9px;height:9px;border-radius:50%;background:var(--warn);box-shadow:0 0 0 3px var(--warn-tint);}#dt-page .consent.early .c-dot{background:var(--teal);box-shadow:0 0 0 3px var(--teal-tint);}#dt-page .risk{display:inline-flex;align-items:center;gap:10px;}#dt-page .risk-meter{display:inline-grid;grid-template-columns:repeat(3,14px);gap:3px;}#dt-page .risk-meter i{height:8px;border-radius:2px;background:#E3EAE6;}#dt-page .risk-label{font-family:'Lato',sans-serif;font-weight:900;font-size:15px;letter-spacing:.01em;}#dt-page .risk.low .risk-meter i:nth-child(1){background:var(--mint-fill);}#dt-page .risk.low .risk-label{color:var(--mint);}#dt-page .risk.medium .risk-meter i:nth-child(-n+2){background:var(--teal);}#dt-page .risk.medium .risk-label{color:var(--teal);}#dt-page .risk.high .risk-meter i{background:var(--warn);}#dt-page .risk.high .risk-label{color:var(--warn);}#dt-page .risk.lg .risk-meter{grid-template-columns:repeat(3,26px);gap:4px;}#dt-page .risk.lg .risk-meter i{height:10px;}#dt-page .risk.lg .risk-label{font-size:20px;}#dt-page .risk-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid;border-radius:999px;padding:5px 12px 5px 10px;background:var(--surface);}#dt-page .risk-chip.high{border-color:#EFC9C4;background:var(--warn-tint);}#dt-page .risk-chip.medium{border-color:#CFE0E6;background:var(--teal-tint);}#dt-page .risk-chip.low{border-color:#CFE9DF;background:var(--mint-tint);}#dt-page .risk-chip .rk{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:9.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .risk-chip .risk-label{font-size:13px;}#dt-page .risk-chip .risk-meter{grid-template-columns:repeat(3,9px);gap:2px;}#dt-page .risk-chip .risk-meter i{height:6px;}#dt-page .ref-band{padding:44px 0 12px;}#dt-page .ref-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;}#dt-page .ref-head .section-head{max-width:70ch;}#dt-page .ref-note{margin-top:10px;font-size:14px;color:var(--ink-soft);line-height:1.6;max-width:80ch;}#dt-page .ref-note b{color:var(--ink);font-weight:600;}#dt-page .ref-tools{margin-top:22px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:12px;border:1px solid var(--border);border-radius:14px;background:#F7FAF8;position:sticky;top:0;z-index:5;}#dt-page .ref-search{position:relative;flex:1 1 220px;max-width:300px;}#dt-page .ref-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--ink-faint);}#dt-page .ref-search input{width:100%;font:inherit;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:9px 12px 9px 34px;}#dt-page .ref-search input:focus{outline:none;border-color:var(--mint-fill);box-shadow:0 0 0 3px rgba(16,185,129,.15);}#dt-page .ref-filters{display:flex;flex-wrap:wrap;gap:6px;}#dt-page .fchip{font:inherit;font-size:13px;font-weight:600;color:var(--ink-soft);background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:7px 12px;cursor:pointer;display:inline-flex;gap:6px;align-items:center;}#dt-page .fchip .n{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;color:var(--ink-faint);font-weight:500;}#dt-page .fchip:hover{border-color:var(--mint-fill);}#dt-page .fchip[aria-pressed=\"true\"]{background:var(--ink);border-color:var(--ink);color:#fff;}#dt-page .fchip[aria-pressed=\"true\"] .n{color:#9DB3A8;}#dt-page .fchip.toggle{border-style:dashed;}#dt-page .fchip.toggle[aria-pressed=\"true\"]{background:var(--mint-tint);color:var(--mint);border-color:var(--mint-fill);border-style:solid;}#dt-page .ref-view{margin-left:auto;display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:3px;}#dt-page .ref-view button{font:inherit;font-size:13px;font-weight:600;color:var(--ink-soft);background:none;border:none;border-radius:6px;padding:6px 12px;cursor:pointer;display:inline-flex;gap:6px;align-items:center;}#dt-page .ref-view button svg{width:14px;height:14px;}#dt-page .ref-view button[aria-pressed=\"true\"]{background:var(--mint-tint);color:var(--mint);}#dt-page .ref-count{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;color:var(--ink-faint);letter-spacing:.04em;margin-top:12px;}#dt-page table.tagref{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;}#dt-page .tagref-wrap{margin-top:10px;border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow:hidden;}#dt-page .tagref thead th{position:relative;text-align:left;vertical-align:bottom;padding:12px 14px;background:#F7FAF8;border-bottom:1px solid var(--border);font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);line-height:1.35;}#dt-page .tagref thead th button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;}#dt-page .tagref thead th button:focus-visible{outline:2px solid var(--mint-fill);outline-offset:3px;border-radius:3px;}#dt-page .tagref thead th .sort-ic{display:inline-flex;flex-direction:column;gap:2px;opacity:.45;}#dt-page .tagref thead th .sort-ic::before,#dt-page .tagref thead th .sort-ic::after{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;}#dt-page .tagref thead th .sort-ic::before{border-bottom:4px solid currentColor;}#dt-page .tagref thead th .sort-ic::after{border-top:4px solid currentColor;}#dt-page .tagref thead th[aria-sort=\"ascending\"] .sort-ic,#dt-page .tagref thead th[aria-sort=\"descending\"] .sort-ic{opacity:1;color:var(--mint);}#dt-page .tagref thead th[aria-sort=\"ascending\"] .sort-ic::after{opacity:.25;}#dt-page .tagref thead th[aria-sort=\"descending\"] .sort-ic::before{opacity:.25;}#dt-page .tagref tbody td,#dt-page .tagref tbody th{padding:15px 14px;border-bottom:1px solid var(--border);vertical-align:top;text-align:left;line-height:1.55;color:var(--ink-soft);}#dt-page .tagref tbody tr:last-child>*{border-bottom:none;}#dt-page .tagref tbody tr:hover>*{background:#FBFDFC;}#dt-page .tagref tbody th{font-weight:400;min-width:150px;}#dt-page .tagref .t-name{display:block;font-family:'Lato',sans-serif;font-weight:900;font-size:15px;color:var(--ink);text-decoration:none;line-height:1.3;}#dt-page a.t-name:hover{color:var(--mint);}#dt-page .tagref .t-name + .cat-pill{margin-top:7px;}#dt-page .tagref .t-prof{display:inline-flex;margin-top:8px;font-size:12px;font-weight:600;color:var(--teal);text-decoration:none;gap:4px;}#dt-page .tagref .t-prof:hover{text-decoration:underline;}#dt-page .tagref td.collects{min-width:260px;max-width:360px;}#dt-page .tagref td.goes{min-width:120px;color:var(--ink);}#dt-page .tagref td.detect{min-width:130px;}#dt-page .tagref td.detect code{white-space:normal;font-size:11.5px;line-height:1.9;}#dt-page .tagref col.c-collect{width:36%;}#dt-page mark.hl{background:#DDF3EA;color:inherit;border-radius:3px;padding:0 1px;}#dt-page .hashed{display:inline;background:linear-gradient(transparent 62%,#FDE3DF 62%);color:var(--ink);}#dt-page .ref-empty{display:none;padding:28px;text-align:center;color:var(--ink-faint);font-size:14px;}#dt-page .ref-empty.show{display:block;}#dt-page .ref-legend{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px 22px;font-size:12.5px;color:var(--ink-faint);}#dt-page .ref-legend span{display:inline-flex;align-items:center;gap:8px;}#dt-page .gated-note{margin-top:18px;max-width:900px;background:var(--mint-tint);border:1px solid #CFE9DF;border-left:4px solid var(--mint-fill);border-radius:12px;padding:16px 22px;font-size:14.5px;line-height:1.65;color:var(--ink-soft);}#dt-page .gated-note strong{color:var(--ink);}#dt-page .gated-note a{color:var(--teal);font-weight:600;}#dt-page .consent-band{padding:52px 0;background:var(--mint-tint);border-top:1px solid #E4F1EB;border-bottom:1px solid #E4F1EB;margin-top:40px;}#dt-page .consent-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:48px;align-items:start;margin-top:4px;}#dt-page .consent-grid .lead-p{font-family:'Lato',sans-serif;font-weight:700;font-size:20px;line-height:1.5;color:var(--ink);}#dt-page .consent-grid .lead-p + p{margin-top:14px;font-size:15.5px;line-height:1.7;color:var(--ink-soft);}#dt-page .consent-grid p a{color:var(--teal);font-weight:600;}#dt-page .setting-stack{display:flex;flex-direction:column;gap:12px;}#dt-page .setting{background:var(--surface);border:1px solid #CFE9DF;border-radius:14px;padding:20px 22px;display:grid;grid-template-columns:40px minmax(0,1fr);gap:14px;}#dt-page .setting .s-n{width:36px;height:36px;border-radius:50%;background:var(--mint-fill);color:#fff;font-family:'Lato',sans-serif;font-weight:900;font-size:15px;display:flex;align-items:center;justify-content:center;}#dt-page .setting .s-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mint);margin-bottom:5px;}#dt-page .setting p{font-size:15px;line-height:1.66;color:var(--ink-soft);}#dt-page .setting-intro{font-size:15.5px;line-height:1.7;color:var(--ink-soft);}#dt-page .deck-band{padding:56px 0 20px;overflow:hidden;}#dt-page .deck-top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;}#dt-page .deck-nav{display:flex;align-items:center;gap:10px;}#dt-page .deck-pos{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;color:var(--ink-soft);letter-spacing:.04em;min-width:62px;text-align:center;}#dt-page .deck-btn{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .15s,background .15s;}#dt-page .deck-btn:hover:not(:disabled){border-color:var(--mint-fill);background:var(--mint-tint);color:var(--mint);}#dt-page .deck-btn:disabled{opacity:.35;cursor:default;}#dt-page .deck-btn svg{width:16px;height:16px;}#dt-page .deck{margin-top:22px;display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:max(32px,calc((100vw - 1120px)\/2 + 32px));padding:6px max(32px,calc((100vw - 1120px)\/2 + 32px)) 26px;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}#dt-page .deck::-webkit-scrollbar{display:none;}#dt-page .deck:focus-visible{outline:2px solid var(--mint-fill);outline-offset:-2px;}#dt-page .tag-card{flex:0 0 360px;scroll-snap-align:start;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 1px 0 rgba(36,41,35,.03);transition:border-color .2s,box-shadow .2s,transform .2s;scroll-margin-top:80px;}#dt-page .tag-card.is-hidden{display:none;}#dt-page .tag-card:target,#dt-page .tag-card.flash{border-color:var(--mint-fill);box-shadow:var(--shadow);}#dt-page .tc-head{padding:20px 22px 16px;border-bottom:1px solid var(--border);position:relative;}#dt-page .tc-num{position:absolute;right:20px;top:18px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:11px;color:var(--ink-faint);letter-spacing:.04em;}#dt-page .tc-head h3{font-size:21px;font-weight:900;line-height:1.2;margin-top:10px;padding-right:40px;}#dt-page .tc-goes{margin-top:6px;font-size:13.5px;color:var(--ink-soft);}#dt-page .tc-goes b{color:var(--ink);font-weight:600;}#dt-page .tc-body{padding:16px 22px 4px;display:flex;flex-direction:column;gap:14px;flex:1;}#dt-page .tc-row .tc-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:4px;}#dt-page .tc-row p{font-size:14px;line-height:1.6;color:var(--ink-soft);}#dt-page .tc-row code{white-space:normal;font-size:11.5px;}#dt-page .tc-duo{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:12px;border-top:1px dashed var(--border);}#dt-page .tc-more{border-top:1px solid var(--border);margin-top:auto;}#dt-page .tc-more summary{list-style:none;cursor:pointer;padding:13px 22px;font-size:13.5px;font-weight:600;color:var(--teal);display:flex;align-items:center;justify-content:space-between;}#dt-page .tc-more summary::-webkit-details-marker{display:none;}#dt-page .tc-more summary::after{content:\"+\";font-size:18px;font-weight:400;color:var(--mint);}#dt-page .tc-more[open] summary::after{content:\"\\2013\";}#dt-page .tc-more .tc-full{padding:0 22px 16px;font-size:14px;line-height:1.65;color:var(--ink-soft);}#dt-page .tc-src{margin-top:10px;font-size:12px;line-height:1.5;color:var(--ink-faint);font-style:italic;}#dt-page .tc-foot{padding:14px 22px 18px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#FBFDFC;border-radius:0 0 16px 16px;}#dt-page .tc-foot a{font-size:13.5px;font-weight:600;color:var(--teal);text-decoration:none;display:inline-flex;gap:6px;align-items:center;}#dt-page .tc-foot a:hover{text-decoration:underline;}#dt-page .tc-foot .tc-noprof{font-size:12.5px;color:var(--ink-faint);}#dt-page .deck-dots{display:flex;justify-content:center;gap:6px;margin-top:4px;flex-wrap:wrap;}#dt-page .deck-dots button{width:8px;height:8px;padding:0;border-radius:99px;border:none;background:#D5DFDA;cursor:pointer;transition:width .2s,background .2s;}#dt-page .deck-dots button[aria-current=\"true\"]{width:22px;background:var(--mint-fill);}#dt-page .deck-hint{display:none;}#dt-page .deck.as-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;scroll-snap-type:none;padding-left:0;padding-right:0;}#dt-page .deck-band.grid-mode .deck{max-width:1120px;margin-left:auto;margin-right:auto;padding:6px 32px 26px;}#dt-page .deck-band.grid-mode .deck-nav,#dt-page .deck-band.grid-mode .deck-dots{display:none;}#dt-page .prof-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:56px;padding:40px 0 8px;align-items:start;}#dt-page .prof-glance{position:sticky;top:24px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden;}#dt-page .pg-head{padding:18px 20px 16px;background:var(--ink);color:#fff;}#dt-page .pg-head .pg-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8FE3C3;}#dt-page .pg-head .pg-name{margin-top:6px;font-family:'Lato',sans-serif;font-weight:900;font-size:20px;line-height:1.2;}#dt-page .pg-risk{padding:18px 20px;border-bottom:1px solid var(--border);}#dt-page .pg-risk.high{background:var(--warn-tint);}#dt-page .pg-risk.medium{background:var(--teal-tint);}#dt-page .pg-risk.low{background:var(--mint-tint);}#dt-page .pg-risk .pg-rk{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;display:flex;justify-content:space-between;}#dt-page .pg-risk .pg-rk a{color:var(--teal);text-decoration:none;letter-spacing:.04em;}#dt-page .pg-risk .pg-rk a:hover{text-decoration:underline;}#dt-page .prof-glance dl{margin:0;}#dt-page .prof-glance .pg-row{padding:12px 20px;border-bottom:1px solid var(--border);}#dt-page .prof-glance .pg-row:last-child{border-bottom:none;}#dt-page .prof-glance dt{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:3px;}#dt-page .prof-glance dd{margin:0;font-size:14.5px;line-height:1.5;color:var(--ink);font-weight:500;}#dt-page .prof-glance dd code{white-space:normal;font-size:12px;}#dt-page .yn-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:700;margin-right:6px;vertical-align:-3px;}#dt-page .yn-mark.y{background:var(--warn-tint);color:var(--warn);border:1px solid #EFC9C4;}#dt-page .yn-mark.n{background:var(--mint-tint);color:var(--mint);border:1px solid #CFE9DF;}#dt-page .yn-mark.live{background:var(--mint-tint);color:var(--mint);border:1px solid #CFE9DF;}#dt-page .risk-h2{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}#dt-page .risk-note{margin-top:14px;font-size:13px;color:var(--ink-faint);line-height:1.55;border-top:1px dashed var(--border);padding-top:12px;}#dt-page .rubric{margin-top:18px;border:1px solid var(--border);border-radius:12px;overflow:hidden;}#dt-page .rubric-k{padding:10px 16px;background:#F7FAF8;border-bottom:1px solid var(--border);font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);}#dt-page .detect-card{margin-top:18px;border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}#dt-page .detect-card .dc-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);margin-right:4px;}#dt-page .tagtype{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;font-weight:500;color:var(--ink);background:var(--mint-tint);border:1px solid #CFE9DF;border-radius:6px;padding:4px 9px;}#dt-page .hub-lede{margin-top:22px;max-width:76ch;font-size:16px;color:var(--ink-soft);line-height:1.7;}#dt-page .profile-strip{margin-top:14px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;}#dt-page .pchip{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:12px;padding:14px 14px 12px;text-decoration:none;color:var(--ink);background:var(--surface);transition:border-color .15s;}#dt-page .pchip:hover{border-color:var(--mint-fill);}#dt-page .pchip .pc-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:9.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .pchip .pc-n{font-family:'Lato',sans-serif;font-weight:900;font-size:15px;line-height:1.25;}#dt-page .strip-label{margin-top:22px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);display:flex;align-items:center;gap:10px;}#dt-page .strip-label .bar{flex:1;height:1px;background:var(--border);}#dt-page .soon{margin-top:18px;display:flex;align-items:center;gap:12px;border:1px dashed #C4D3CC;border-radius:12px;padding:14px 18px;font-size:14px;color:var(--ink-faint);max-width:82ch;}#dt-page .soon .soon-k{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);background:#F1F3F2;border-radius:5px;padding:3px 8px;white-space:nowrap;}#dt-page .rel-list{margin-top:22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;}#dt-page .rel-item{border:1px solid var(--border);border-radius:12px;padding:18px 20px;background:var(--surface);}#dt-page .rel-item .ri-k{font-family:'Lato',sans-serif;font-weight:900;font-size:15.5px;color:var(--ink);}#dt-page .rel-item p{margin-top:6px;font-size:14px;line-height:1.6;color:var(--ink-soft);}#dt-page .rel-item a{color:var(--teal);font-weight:600;}#dt-page .rel-item .plain{color:var(--ink);font-weight:600;}@media (max-width:980px){#dt-page .prof-grid{grid-template-columns:minmax(0,1fr);gap:28px;}#dt-page .prof-glance{position:static;order:-1;}#dt-page .rail{display:none;}#dt-page .consent-grid{grid-template-columns:minmax(0,1fr);gap:24px;}#dt-page .deck.as-grid{grid-template-columns:repeat(2,minmax(0,1fr));}#dt-page .profile-strip{grid-template-columns:repeat(3,minmax(0,1fr));}#dt-page .rel-list{grid-template-columns:minmax(0,1fr);}}@media (max-width:820px){#dt-page .tagref-wrap{border:none;background:none;overflow:visible;}#dt-page table.tagref,#dt-page .tagref tbody,#dt-page .tagref tr,#dt-page .tagref td,#dt-page .tagref tbody th{display:block;width:auto;}#dt-page .tagref thead{display:none;}#dt-page .tagref tbody tr{border:1px solid var(--border);border-radius:14px;background:var(--surface);margin-bottom:10px;padding:16px 18px 6px;}#dt-page .tagref tbody tr.is-hidden{display:none;}#dt-page .tagref tbody td,#dt-page .tagref tbody th{border:none;padding:0 0 12px;min-width:0;max-width:none;}#dt-page .tagref tbody tr:hover>*{background:none;}#dt-page .tagref tbody td::before{content:attr(data-label);display:block;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:3px;}#dt-page .ref-tools{position:static;}#dt-page .ref-view{margin-left:0;}#dt-page .src-list{columns:1;}#dt-page .inline-cta{grid-template-columns:minmax(0,1fr);}}@media (max-width:680px){#dt-page .tag-card{flex-basis:86vw;}#dt-page .deck{gap:12px;scroll-padding-left:20px;padding-left:20px;padding-right:20px;}#dt-page .deck-hint{display:flex;align-items:center;gap:8px;margin-top:10px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);}#dt-page .deck-top .deck-nav .deck-btn{width:38px;height:38px;}#dt-page .deck.as-grid{grid-template-columns:minmax(0,1fr);}#dt-page .deck-band.grid-mode .deck{padding:6px 20px 26px;}#dt-page .ref-search{max-width:none;flex-basis:100%;}#dt-page .ref-filters{flex-wrap:nowrap;overflow-x:auto;margin:0 -12px;padding:0 12px 2px;scrollbar-width:none;}#dt-page .ref-filters::-webkit-scrollbar{display:none;}#dt-page .fchip{white-space:nowrap;}#dt-page .profile-strip{grid-template-columns:repeat(2,minmax(0,1fr));}#dt-page .tc-duo{grid-template-columns:minmax(0,1fr);}#dt-page .consent-grid .lead-p{font-size:18px;}}@media (prefers-reduced-motion:reduce){#dt-page .deck{scroll-behavior:auto;}#dt-page .tag-card{transition:none;}}#dt-page .tagref .t-prof{display:flex;width:max-content;align-items:center;}#dt-page .tagref .t-prof svg,#dt-page .tc-foot a svg{width:13px;height:13px;flex-shrink:0;}#dt-page .tc-foot a{white-space:nowrap;}#dt-page .tagref th[scope=\"row\"]{width:190px;}#dt-page .tagref td.consent-cell{min-width:150px;}#dt-page .tagref td.detect code,#dt-page .tc-row code{display:inline-block;white-space:nowrap;margin:0 4px 5px 0;line-height:1.5;}#dt-page .consent .c-dot{background:var(--teal);box-shadow:0 0 0 3px var(--teal-tint);}#dt-page .consent.early .c-dot{background:var(--ink);box-shadow:0 0 0 3px #E6EBE8;}#dt-page .deck-hint svg{width:12px;height:12px;}@media (max-width:820px){#dt-page .tagref td.collects,#dt-page .tagref td.detect{display:none;}#dt-page .tagref tbody tr{display:grid;grid-template-columns:1fr 1fr;column-gap:14px;padding:14px 16px 4px;}#dt-page .tagref tbody th{grid-column:1 \/ -1;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;}#dt-page .tagref .t-name{width:100%;}#dt-page .tagref .t-name::after{content:\" \\2192\";color:var(--mint);font-weight:700;}#dt-page .tagref .t-name + .cat-pill{margin-top:0;}#dt-page .tagref .t-prof{margin-top:0;}#dt-page .tagref tbody td{font-size:13px;}#dt-page .tagref-mobile-note{display:block !important;}}#dt-page .tagref-mobile-note{display:none;margin-top:8px;font-size:13px;color:var(--ink-faint);}#dt-page .risk-h2 .risk.lg .risk-label{font-size:26px;}#dt-page .risk-h2 .risk.lg .risk-meter{margin-top:3px;}#dt-page .code-block pre code{white-space:pre-wrap;overflow-wrap:anywhere;}#dt-page .data-table tbody th{min-width:150px;}#dt-page .pchip .pc-risk{padding-top:8px;border-top:1px dashed var(--border);}#dt-page .pchip .risk-label{font-size:13px;}#dt-page .rel-item a{text-decoration:underline;text-decoration-color:#B8CFD8;text-underline-offset:3px;}#dt-page .closing .closing-body{margin:12px auto 0;max-width:60ch;font-size:15.5px;line-height:1.65;color:#C9D3CD;}#dt-page .closing .trial-fine a{color:#8FE3C3;text-decoration:underline;text-underline-offset:3px;}#dt-page .tile.is-soon{border-style:dashed;border-color:#C4D3CC;background:#FBFCFB;cursor:default;}#dt-page .tile.is-soon::after{content:none;}#dt-page .tile.is-soon:hover{border-color:#C4D3CC;}#dt-page .tile.is-soon h3{color:var(--ink-soft);}#dt-page .tile.is-soon p{color:var(--ink-faint);}#dt-page .soon-pill{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);background:#F1F3F2;border:1px solid #DDE3E0;border-radius:999px;padding:4px 10px;}#dt-page .soon-pill::before{content:\"\";width:6px;height:6px;border-radius:50%;border:1.5px solid var(--ink-faint);}#dt-page .tile .t-label.hub{color:var(--mint);}#dt-page .cat.cat-row{padding:36px 0 32px;}#dt-page .cr-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:40px;align-items:start;}#dt-page .cr-head .eyebrow{margin-bottom:12px;}#dt-page .cr-head .section-head h2{font-size:24px;}#dt-page .cr-tiles{display:flex;flex-direction:column;gap:12px;padding-top:4px;}#dt-page .cr-tiles .tile h3{font-size:18px;}@media (max-width:900px){#dt-page .cr-grid{grid-template-columns:minmax(0,1fr);gap:18px;}}#dt-page .tile:not([href])::after{content:none;}#dt-page div.tile:hover{border-color:var(--border);}#dt-page .tile.is-gated::after{content:none;}#dt-page .tile.is-gated:hover{border-color:var(--border);}#dt-page .r1-fig{margin:22px 0 6px;}#dt-page .r1-fig img{display:block;max-width:100%;height:auto;}#dt-page .r1-diagram img{width:100%;max-width:960px;border:1px solid var(--border,#E3EAE6);border-radius:12px;background:#fff;}#dt-page .r1-hero img,#dt-page .r1-card img{width:100%;max-width:640px;aspect-ratio:640\/440;border-radius:14px;}#dt-page .r1-crop>img{display:block;width:100%;height:auto;}#dt-page .r1-crop{border:1px solid var(--border,#E3EAE6);border-radius:12px;overflow:hidden;background:#fff;}#dt-page .r1-shots .r1-crop + .r1-crop{margin-top:14px;}#dt-page .r1-fig figcaption{margin-top:10px;font-size:13.5px;color:var(--ink-soft,#51605A);line-height:1.55;max-width:80ch;}#dt-page .r1-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}#dt-page .r1-cards img{width:100%;aspect-ratio:640\/440;border-radius:12px;}#dt-page .head-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,440px);gap:40px;align-items:start;}#dt-page .head-grid .r1-fig{margin-top:6px;}#dt-page .r1-hero-wide{margin-top:28px;}#dt-page .ty-hero-grid.r1-onecol{grid-template-columns:1fr;}@media (max-width:900px){#dt-page .head-grid{grid-template-columns:1fr;}#dt-page .r1-cards{grid-template-columns:1fr;}}#dt-page .head-grid.hv2{grid-template-columns:minmax(0,1fr) minmax(0,440px);grid-template-areas:\"title media\" \"rest media\";grid-template-rows:auto 1fr;column-gap:48px;row-gap:0;align-items:start;}#dt-page .head-grid.hv2>.head-title{grid-area:title;}#dt-page .head-grid.hv2>.head-media{grid-area:media;}#dt-page .head-grid.hv2>.head-rest{grid-area:rest;}#dt-page .head-media{display:flex;flex-direction:column;gap:18px;}#dt-page .head-media .r1-fig{margin:6px 0 0;}#dt-page .head-media .definition{margin-top:0;max-width:none;}#dt-page .head-media .def-text{font-size:16px;line-height:1.55;}#dt-page .head-lead{margin-top:24px;}#dt-page .head-rest>.head-lead{margin-top:0;}#dt-page .head-rest{padding-top:24px;}#dt-page .head-rest>.hero-copy>p:first-child{margin-top:0;}#dt-page .head-rest>.hero-copy{margin-top:0;}#dt-page .head-lead h2{font-size:22px;line-height:1.3;margin:0 0 10px;}#dt-page .head-lead p{margin:0 0 14px;}#dt-page .head-lead .section-head{margin:0;max-width:none;}#dt-page .ew-head{padding-bottom:56px;}#dt-page .def-kicker::before{content:none;}#dt-page .definition::after{content:none;}#dt-page .definition .def-text{font-weight:400;letter-spacing:0;}#dt-page .definition .def-text strong{font-weight:700;}#dt-page .hero-link{margin-top:24px;}#dt-page .prof-grid.no-aside{grid-template-columns:minmax(0,780px);}#dt-page .case-hero .head-media .prof-glance{position:static;width:100%;}#dt-page .art-grid>article.prose>h2:first-child,#dt-page .pillar-body>.prose:first-child>h2:first-child{margin-top:0;}#dt-page .head-lead p.lede,#dt-page .head-rest p.lede{font-size:inherit;}#dt-page .case-layout.no-aside{grid-template-columns:minmax(0,780px);grid-template-areas:\"main\";}#dt-page .case-hero .head-lead .definition{margin-top:22px;}#dt-page .case-hero .head-lead .def-text{font-size:16px;line-height:1.55;}#dt-page .case-hero .head-media .case-aside{position:static;}#dt-page .case-hero .head-media .factbox{margin:0;width:100%;max-width:none;}#dt-page .case-hero .head-media .case-aside{width:100%;}@media (max-width:900px){#dt-page .head-grid.hv2{display:flex;flex-direction:column;gap:0;}#dt-page .head-grid.hv2 .head-media{display:contents;}#dt-page .head-grid.hv2>.head-title{order:1;}#dt-page .head-grid.hv2 .head-media .definition{order:2;margin-top:22px;}#dt-page .head-grid.hv2 .head-media .r1-fig{order:3;margin-top:22px;}#dt-page .head-grid.hv2>.head-rest{order:4;}#dt-page .head-grid.case-hero>.head-rest{order:2;}#dt-page .head-grid.case-hero .head-media>*{order:3;margin-top:22px;}}#dt-page .tcta-band{padding:48px 0;}#dt-page .tcta{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:40px;align-items:center;border-radius:16px;padding:40px 0 40px 40px;background:var(--ink);color:#fff;text-align:left;}#dt-page .tcta::after{content:\"\";position:absolute;right:-120px;top:-120px;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(16,185,129,.28),rgba(16,185,129,0) 70%);pointer-events:none;}#dt-page .tcta .eyebrow.on-dark{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.18);color:#8FE3C3;border-radius:999px;padding:6px 12px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin-bottom:14px;}#dt-page .tcta .eyebrow.on-dark .dot{width:6px;height:6px;border-radius:50%;background:#6FE3B6;}#dt-page .tcta h2{font-size:28px;font-weight:900;letter-spacing:-0.01em;line-height:1.2;color:#fff;margin:0;}#dt-page .tcta .tcta-sub{margin:12px 0 0;font-size:15px;line-height:1.6;color:#CFE0D8;}#dt-page .tcta-k{margin-top:22px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#8FA69A;}#dt-page .tcta-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;font-size:14px;}#dt-page .tcta-list li{display:flex;gap:8px;align-items:flex-start;line-height:1.45;color:#fff;font-weight:600;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.08);}#dt-page .tcta-more{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;font-size:13.5px;color:#E4EEE9;}#dt-page .tcta-more li{display:flex;gap:7px;align-items:flex-start;line-height:1.45;}#dt-page .tcta svg{width:14px;height:14px;flex-shrink:0;margin-top:3px;color:#6FE3B6;}#dt-page .tcta-act{margin-top:26px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;}#dt-page .tcta-btn{display:inline-flex;align-items:center;gap:8px;background:var(--mint-fill);color:#fff;font-family:'Lato',sans-serif;font-weight:700;font-size:16px;border-radius:8px;padding:14px 22px;text-decoration:none;}#dt-page .tcta-btn:hover{background:#0C9A6E;}#dt-page .tcta-btn svg{width:16px;height:16px;margin:0;color:#fff;}#dt-page .tcta-g2{font-size:12.5px;color:#CFE0D8;}#dt-page .tcta-g2 strong{color:#fff;}#dt-page .tcta-g2 .stars{color:#E0A32E;letter-spacing:1px;font-size:11px;}#dt-page .tcta-fine{margin:12px 0 0;font-size:12.5px;line-height:1.55;max-width:52ch;color:#8FA69A;}#dt-page .tcta-shot{align-self:stretch;display:flex;align-items:center;}#dt-page .tcta-frame{width:calc(100% + 140px);border-radius:10px 0 0 10px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.14);border-right:none;background:#fff;}#dt-page .tcta-frame .bar{height:26px;display:flex;align-items:center;gap:6px;padding:0 12px;background:#EEF2F0;border-bottom:1px solid var(--border);}#dt-page .tcta-frame .bar i{width:8px;height:8px;border-radius:50%;background:#C9D3CE;}#dt-page .tcta-frame img{display:block;width:100%;height:auto;}#dt-page .tcta-cap{margin-top:10px;font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#8FA69A;}@media (max-width:900px){#dt-page .tcta{grid-template-columns:1fr;padding:32px 24px 0;gap:28px;}#dt-page .tcta-shot{margin:0 -24px 0 0;}#dt-page .tcta-frame{width:100%;}}@media (max-width:600px){#dt-page .tcta h2{font-size:23px;}#dt-page .tcta-more{grid-template-columns:1fr;}#dt-page .tcta-btn{width:100%;justify-content:center;}}#dt-page .definition .def-text{font-size:16px;line-height:1.6;}<\/style><div id=\"dt-page\" class=\"dt-page\"><section class=\"pc-head\"><div class=\"wrap\"> <nav class=\"breadcrumb\" aria-label=\"Breadcrumb\"><ol><li><a href=\"\/en\/\">Home<\/a><\/li><li><a href=\"https:\/\/datatrue.com\/en\/resources\/\">Resources<\/a><\/li><li><a href=\"https:\/\/datatrue.com\/en\/resources\/analytics\/\">Analytics &amp; Data Quality<\/a><\/li><li aria-current=\"page\">GA4 ecommerce setup<\/li><\/ol><\/nav><div class=\"head-grid hv2\"><div class=\"head-title\"> <span class=\"eyebrow\"><span class=\"dot\"><\/span>Analytics &amp; Data Quality <span class=\"sep\">\/<\/span> Guide<\/span> <h1>GA4 Ecommerce Tracking Setup with GTM<\/h1> <p class=\"byline\"><span class=\"by-who\">DataTrue Team<\/span><span class=\"by-sep\"><\/span><span>Updated September 2026<\/span><\/p> <\/div><div class=\"head-media\"><figure class=\"r1-fig r1-hero\"><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/H-GA4.png\" alt=\"\" width=\"640\" height=\"440\"><\/figure><div class=\"definition\" id=\"definition\"><p class=\"def-kicker\">Summary<\/p><p class=\"def-text\"><strong>GA4 ecommerce tracking<\/strong> captures shopping actions, such as viewing a product, adding to cart, and completing a purchase, and sends them to Google Analytics 4. You set it up by pushing ecommerce data to the data layer and configuring GA4 events with the Google tag (gtag.js) or Google Tag Manager, then confirming each event fires with the right values.<\/p><\/div><\/div><div class=\"head-rest\"><div class=\"head-lead\"><p>Effective data tracking is critical for ecommerce sites. Understanding how users interact with your store can make the difference to securing sales, and integrating Google Tag Manager (GTM) and Google Analytics 4 (GA4) is central to keeping that data accurate. This guide walks through what you need to set up GTM and GA4 for an ecommerce site.<\/p><p>The sections below cover how ecommerce event tracking works, how to set it up, and which events and product data GA4 can track. They finish with the purchases report, ecommerce data and privacy, and how to confirm your events fire with the right values.<\/p><\/div><\/div><\/div><\/div><\/section> <div class=\"wrap\"><div class=\"art-grid\"><article class=\"prose\"> <h2 id=\"how-does-ecommerce-event-tracking-work-in-ga4\">How does ecommerce event tracking work in GA4?<\/h2> <p>Tracking ecommerce events in GA4 is fundamentally similar to tracking other events. You set up tags or code to fire when specific events happen, then access the data in GA4.<\/p> <p>GA4&#8217;s predecessor, Universal Analytics, used the Enhanced Ecommerce model for most ecommerce tracking. On July 1, 2023, standard Universal Analytics properties stopped processing data (360 properties had until July 1, 2024), which required the move to GA4. In GA4, ecommerce tracking is more integrated into overall event tracking, which makes it more flexible, and lets you get a fuller picture of what is happening on your site than UA did. Metrics and terminology also changed between UA and GA4, so it is worth checking Google&#8217;s comparison guide.<\/p> <p>As with any GA4 setup, you can add GA4 code to your site manually, or use a tag-based solution like Google Tag Manager. This guide focuses on GTM. For the general event-tracking process, including setup without a data layer, see our <a href=\"\/en\/resources\/analytics\/ga4-event-tracking\/\">GA4 event tracking guide<\/a>.<\/p> <h2 id=\"how-to-set-up-ga4-ecommerce-event-tracking\">How to set up GA4 ecommerce event tracking<\/h2> <p>This is the basic process with a data layer in use on your site.<\/p> <ol class=\"steps\"><li>Create a GA4 event tag in your Google Tag Manager container.<\/li><li>Configure the event tag with your parameters: enter a name in the left field and select the data layer variable with the relevant information in the right field.<\/li><li>In the event tag, add a trigger. In the event name field, enter the data layer event you want to fire the tag.<\/li><li>Click Preview and trigger the relevant events on your site. In the GTM preview pane, confirm the correct event data is captured and sent to GA4.<\/li><li>Publish your changes.<\/li><li>Test your changes after publishing, and on a regular, ongoing basis.<\/li><\/ol> <h2 id=\"what-types-of-ecommerce-events-does-ga4-have\">What types of ecommerce events does GA4 have?<\/h2> <p>There are four event types in GA4. Two are collected without extra code (automatically collected events, and enhanced measurement events when enhanced measurement is enabled), and two must be implemented (recommended events and custom events). Here are the ones most useful to ecommerce sites.<\/p><figure class=\"r1-fig r1-diagram\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/D17.png\" alt=\"GA4&#x27;s four event types: automatically collected and enhanced measurement come by default. Recommended and custom need setup.\" width=\"960\" height=\"400\" loading=\"lazy\"><\/figure> <p><strong>Automatically collected events.<\/strong> Tracked once the initial GA4 setup is done, with no extra steps, such as <code>session_start<\/code>, <code>first_visit<\/code> and <code>user_engagement<\/code>.<\/p> <p><strong>Enhanced measurement events.<\/strong> When enhanced measurement is enabled, GA4 also collects events such as <code>page_view<\/code>, <code>scroll<\/code> and <code>view_search_results<\/code>. The one ecommerce sites should watch is <code>view_search_results<\/code>, and you can optionally set site search to look for other URL query parameters.<\/p> <p><strong>Recommended ecommerce events.<\/strong> Commonplace events with predefined names and parameters, so they are relatively simple to implement, and where most ecommerce tracking happens. The ones likely to matter for an ecommerce site: <code>login<\/code>, <code>purchase<\/code>, <code>refund<\/code>, <code>search<\/code>, <code>sign_up<\/code>, <code>add_payment_info<\/code>, <code>add_shipping_info<\/code>, <code>add_to_cart<\/code>, <code>add_to_wishlist<\/code>, <code>begin_checkout<\/code>, <code>remove_from_cart<\/code>, <code>select_item<\/code>, <code>select_promotion<\/code>, <code>view_cart<\/code>, <code>view_item<\/code>, <code>view_item_list<\/code>, <code>view_promotion<\/code>.<\/p> <p><strong>Custom ecommerce events.<\/strong> For highly specialised needs you can create custom events, but this is more manual, because you provide your own parameters and triggers, and it is more prone to error, so it is best to rely on other event types where possible.<\/p> <h2 id=\"what-product-data-can-be-tracked-in-ga4\">What product data can be tracked in GA4?<\/h2> <p>When setting up ecommerce tracking, you want data about the products customers buy, which shows your best sellers, popular categories, and how customers find particular products.<\/p> <p>In GA4, product data is collected in a parameter called the items array. For an items array to function, one of these two parameters must be set:<\/p> <ul><li><code>item_id<\/code>, for example SKU_12345<\/li><li><code>item_name<\/code>, for example Camo Hoodie<\/li><\/ul> <p>Other significant item parameters:<\/p> <ul><li><code>coupon<\/code>: the name of a coupon associated with the item<\/li><li><code>discount<\/code>: the per-unit monetary discount for the item<\/li><li><code>item_brand<\/code>: the brand of the item<\/li><li><code>item_category<\/code>: item categories such as &#8220;Apparel,&#8221; &#8220;Adult,&#8221; &#8220;Hoodies.&#8221; You can set up to five <code>item_category<\/code> parameters, organised by hierarchy<\/li><li><code>item_list_id<\/code>: the ID of the list the item appeared in, such as &#8220;related_products&#8221; (<code>item_list_name<\/code> is the list&#8217;s name, such as &#8220;Related products&#8221;)<\/li><li><code>price<\/code>: the monetary unit price of the item<\/li><\/ul> <p>Beyond the required and recommended parameters, a standard GA4 property accepts up to 27 item-level custom parameters in an ecommerce event.<\/p> <h2 id=\"what-are-the-key-ecommerce-events-in-ga4\">What are the key ecommerce events in GA4?<\/h2> <p>The most significant recommended ecommerce events, and how to track them:<\/p> <ul class=\"check-list\"><li><strong>view_item_list.<\/strong> Fires when a user is shown a list of products, such as related items on a product page. Requires an items array, and can take <code>item_list_id<\/code> and <code>item_list_name<\/code> (not needed if set at the item level).<\/li><li><strong>view_item.<\/strong> Fires when a customer sees content about an item, such as its detail page. Requires an items array. A <code>value<\/code> parameter (for example 25.00) is needed for useful reporting, and setting <code>value<\/code> requires a <code>currency<\/code> parameter (for example AUD).<\/li><li><strong>begin_checkout.<\/strong> Fires when a user starts checkout. Like <code>view_item<\/code>, it needs <code>value<\/code> and <code>currency<\/code> plus the items array. You can also set a <code>coupon<\/code> parameter (item-level and event-level coupons are separate).<\/li><li><strong>add_shipping_info.<\/strong> Indicates a user added shipping information at checkout. Needs <code>value<\/code>, <code>currency<\/code>, and an items array, and can take a <code>coupon<\/code> and a <code>shipping_tier<\/code> (the selected shipping form, such as air or next-day).<\/li><li><strong>purchase and refund.<\/strong> Indicate a purchase or refund. Both use <code>currency<\/code>, <code>value<\/code>, <code>coupon<\/code>, <code>transaction_id<\/code> (a unique transaction identifier, for example T_12345), <code>shipping<\/code> (the monetary shipping value, not to be confused with <code>shipping_tier<\/code>), and <code>tax<\/code>. A <code>purchase<\/code> requires <code>transaction_id<\/code> and the items array. A <code>refund<\/code> requires <code>transaction_id<\/code>, and its items array is optional: send it for a partial refund.<\/li><\/ul> <h2 id=\"what-is-the-ga4-ecommerce-purchases-report\">What is the GA4 ecommerce purchases report?<\/h2> <p>Once ecommerce events are being sent, you can access a premade ecommerce purchases report, a good starting point for GA4 ecommerce.<\/p> <p>It includes these dimensions: item brand (from <code>item_brand<\/code>), item category (the first hierarchical category, from <code>item_category<\/code>), item category 2 to 5 (from <code>item_category2<\/code> and up), item ID (from <code>item_id<\/code>), and item name (from <code>item_name<\/code>).<\/p> <p>And these metrics: item revenue (total revenue from items, excluding tax and shipping), items added to cart (from the items array in an <code>add_to_cart<\/code> event), items purchased (from the items array in a <code>purchase<\/code> event), and items viewed (from the items array in a <code>view_item<\/code> event).<\/p> <h2 id=\"ga4-ecommerce-data-and-privacy\">GA4 ecommerce data and privacy<\/h2> <p>An ecommerce site handles personally identifiable information (PII), such as names, email addresses and card details. Google&#8217;s own policies prohibit sending PII, such as email addresses or phone numbers, to Google Analytics, so ecommerce and event tracking has to be set up to keep it out. Whether a given setup is compliant with the GDPR, the CCPA, or other laws depends on the data involved, your configuration, and the jurisdiction, which is a compliance question. For that, see the <a href=\"https:\/\/datatrue.com\/en\/resources\/privacy-compliance\/\">Privacy &amp; Compliance resources<\/a>.<\/p> <h2 id=\"improve-your-ecommerce-reporting-with-datatrue\">Improve your ecommerce reporting with DataTrue<\/h2> <p>Optimising a GA4 ecommerce setup takes work, and you want to be sure you are collecting the best possible data. DataTrue&#8217;s <a href=\"\/en\/resources\/analytics\/data-layer-testing\/\">data layer testing<\/a> confirms this part of your setup is working, and its tag audit tools check the overall health of your tags with simulation tests, coverage tests, and validation maps. To understand the accuracy and integrity that ecommerce reporting depends on, see <a href=\"https:\/\/datatrue.com\/en\/resources\/analytics\/data-accuracy\/\">data accuracy<\/a> and <a href=\"\/en\/resources\/analytics\/data-integrity\/\">data integrity<\/a>, and to check the tags themselves, the <a href=\"https:\/\/datatrue.com\/en\/resources\/tags\/what-is-a-tag-audit\/\">tag audit guide<\/a>.<\/p><figure class=\"r1-fig r1-shot\"><div class=\"r1-crop\" style=\"max-width:912px\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/data-layer-validation-crop.png\" alt=\"DataTrue validating a cart-addition data layer event: the event method, action, page and phase each match their expected values.\" width=\"912\" height=\"715\" loading=\"lazy\"><\/div><\/figure> <h2 id=\"confirm-your-ecommerce-events-fire-with-the-right-values\">Confirm your ecommerce events fire with the right values<\/h2><p>DataTrue tests your ecommerce journey step by step on your live site, checking each event fires with the right values, in each consent state. See how it works on the <a href=\"\/en\/platform\/web-analytics-testing\/\">web analytics testing<\/a> page.<\/p><section class=\"faq-block\" aria-labelledby=\"questions\"><h2 id=\"questions\">Questions<\/h2><div class=\"faq-list\"><details class=\"faq-item\" open><summary>What is GA4 ecommerce tracking?<\/summary><p>GA4 ecommerce tracking captures shopping actions, such as viewing a product, adding to cart, and purchasing, and sends them to Google Analytics 4. You push ecommerce data to the data layer and configure GA4 events with the Google tag (gtag.js) or Google Tag Manager, then confirm each event fires with the right values.<\/p><\/details><details class=\"faq-item\"><summary>What events does GA4 ecommerce tracking use?<\/summary><p>Mostly recommended events with predefined names, such as <code>view_item<\/code>, <code>view_item_list<\/code>, <code>add_to_cart<\/code>, <code>begin_checkout<\/code>, <code>add_shipping_info<\/code>, <code>purchase<\/code>, and <code>refund<\/code>, most carrying an items array, plus parameters like <code>value<\/code>, <code>currency<\/code>, and <code>transaction_id<\/code>.<\/p><\/details><details class=\"faq-item\"><summary>Do you need Google Tag Manager for GA4 ecommerce tracking?<\/summary><p>No. You can send GA4 events with the Google tag (gtag.js) or with Google Tag Manager. Tag Manager is a popular approach because it lets you configure ecommerce event tags, parameters, and triggers, and read from the data layer, without editing site code each time.<\/p><\/details><details class=\"faq-item\"><summary>What is the items array in GA4?<\/summary><p>The items array is the parameter that carries product data on an ecommerce event. It needs at least <code>item_id<\/code> or <code>item_name<\/code>, and can hold parameters like <code>price<\/code>, <code>item_brand<\/code>, <code>item_category<\/code>, and <code>coupon<\/code>, plus, in a standard property, up to 27 item-level custom parameters.<\/p><\/details><details class=\"faq-item\"><summary>How do you know your GA4 ecommerce tracking is working?<\/summary><p>Preview in GTM and trigger each event, confirm the values in GA4&#8217;s Realtime and DebugView reports, then use automated testing to walk the full purchase journey and check each event fires with the right values on an ongoing basis.<\/p><\/details><\/div><\/section> <\/article> <aside class=\"rail\" aria-label=\"On this page\"><div class=\"toc\"><p class=\"toc-label\">On this page<\/p><ol><li><a href=\"#how-does-ecommerce-event-tracking-work-in-ga4\">How does ecommerce event tracking work in GA4?<\/a><\/li><li><a href=\"#how-to-set-up-ga4-ecommerce-event-tracking\">How to set up GA4 ecommerce event tracking<\/a><\/li><li><a href=\"#what-types-of-ecommerce-events-does-ga4-have\">What types of ecommerce events does GA4 have?<\/a><\/li><li><a href=\"#what-product-data-can-be-tracked-in-ga4\">What product data can be tracked in GA4?<\/a><\/li><li><a href=\"#what-are-the-key-ecommerce-events-in-ga4\">What are the key ecommerce events in GA4?<\/a><\/li><li><a href=\"#what-is-the-ga4-ecommerce-purchases-report\">What is the GA4 ecommerce purchases report?<\/a><\/li><li><a href=\"#ga4-ecommerce-data-and-privacy\">GA4 ecommerce data and privacy<\/a><\/li><li><a href=\"#improve-your-ecommerce-reporting-with-datatrue\">Improve your ecommerce reporting with DataTrue<\/a><\/li><li><a href=\"#confirm-your-ecommerce-events-fire-with-the-right-values\">Confirm your ecommerce events fire with the right values<\/a><\/li><li><a href=\"#questions\">Questions<\/a><\/li><li><a href=\"#related\">Related guides<\/a><\/li><\/ol><\/div><div class=\"rail-links\"><p class=\"toc-label\">Related<\/p><ul><li><a href=\"\/en\/resources\/analytics\/ga4-event-tracking\/\">GA4 event tracking<\/a><\/li><li><a href=\"\/en\/resources\/analytics\/data-layers\/\">What is a data layer?<\/a><\/li><li><a href=\"https:\/\/datatrue.com\/en\/resources\/analytics\/data-accuracy\/\">Data accuracy<\/a><\/li><li><a href=\"\/en\/resources\/analytics\/data-integrity\/\">Data integrity<\/a><\/li><\/ul><\/div><\/aside> <\/div><\/div> <section class=\"band alt\" aria-labelledby=\"related\"><div class=\"wrap\"><div class=\"section-head\"><h2 id=\"related\">Related guides<\/h2><\/div><div class=\"tile-grid\"><a class=\"tile\" href=\"\/en\/resources\/analytics\/ga4-event-tracking\/\"><span class=\"t-label\">Guide<\/span><h3>GA4 event tracking<\/h3><\/a><a class=\"tile\" href=\"\/en\/resources\/analytics\/data-layers\/\"><span class=\"t-label\">Explainer<\/span><h3>What is a data layer?<\/h3><\/a><a class=\"tile\" href=\"https:\/\/datatrue.com\/en\/resources\/analytics\/data-accuracy\/\"><span class=\"t-label\">Explainer<\/span><h3>Data accuracy<\/h3><\/a><a class=\"tile\" href=\"\/en\/resources\/analytics\/data-integrity\/\"><span class=\"t-label\">Explainer<\/span><h3>Data integrity<\/h3><\/a><\/div><\/div><\/section> <section class=\"tcta-band\"><div class=\"wrap\"><div class=\"tcta\"> <div class=\"tcta-copy\"><span class=\"eyebrow on-dark\"><span class=\"dot\"><\/span>30-day free trial<\/span><h2>Know what your tags send, page by page<\/h2><p class=\"tcta-sub\">DataTrue runs real journeys on your site and checks each tag&#8217;s data against what you expect, field by field. A missing event or a wrong value shows up in a test before it reaches a report.<\/p> <div class=\"tcta-k\">What DataTrue checks<\/div><ul class=\"tcta-list\"><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Every page, with coverage scans<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Scheduled runs, with alerts when a result changes<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Full journeys, like checkout and signup, in each consent state<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>What each tag sent, field by field<\/li><\/ul> <div class=\"tcta-k\">Also in the full platform<\/div><ul class=\"tcta-more\"><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>PII detection with test personas<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>iOS and Android app testing<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Pre-publish testing for GTM and Adobe Tags<\/li><li><svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3.5 8.5l3 3 6-7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>REST API, plus Slack and Jira alerts<\/li><\/ul> <div class=\"tcta-act\"><a class=\"tcta-btn\" href=\"https:\/\/datatrue.com\/en\/start-free-trial\/\">Start a free 30-day trial <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path d=\"M3 8h10M9 4l4 4-4 4\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"tcta-g2\"><span class=\"stars\">\u2605\u2605\u2605\u2605\u2605<\/span> <strong>4.6\/5<\/strong> on G2<\/span><\/div> <p class=\"tcta-fine\">The full platform, every feature, free for 30 days.<\/p><\/div> <div class=\"tcta-shot\"><div style=\"width:100%\"><div class=\"tcta-frame\"><div class=\"bar\"><i><\/i><i><\/i><i><\/i><\/div><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/journey-simulation-payload.png\" alt=\"A DataTrue journey step reading what a GA4 page view sent, with each property checked\" width=\"1402\" height=\"876\" loading=\"lazy\"><\/div><div class=\"tcta-cap\">A journey step checking what a GA4 tag sent<\/div><\/div><\/div> <\/div><\/div><\/section> <script> (function(){var links=[].slice.call(document.querySelectorAll('.toc a'));if(!links.length||!('IntersectionObserver' in window))return; var map={};links.forEach(function(a){map[a.getAttribute('href').slice(1)]=a;}); var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){links.forEach(function(l){l.classList.remove('active')});var a=map[e.target.id];if(a)a.classList.add('active');}})},{rootMargin:'-10% 0px -75% 0px'}); Object.keys(map).forEach(function(id){var el=document.getElementById(id);if(el)io.observe(el);});})(); <\/script><script> document.querySelectorAll('.code-copy').forEach(function(b){b.addEventListener('click',function(){var t=b.closest('.code-block').querySelector('code').innerText;try{navigator.clipboard.writeText(t);b.textContent='Copied';setTimeout(function(){b.textContent='Copy'},1400);}catch(e){}});}); <\/script><\/div><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"HowTo\",\"name\":\"How to set up GA4 ecommerce event tracking\",\"description\":\"How to set up GA4 ecommerce event tracking with Google Tag Manager using a data layer.\",\"step\":[{\"@type\":\"HowToStep\",\"name\":\"Create a GA4 event tag\",\"text\":\"Create a GA4 event tag in your Google Tag Manager container.\"},{\"@type\":\"HowToStep\",\"name\":\"Configure parameters\",\"text\":\"Configure the event tag with your parameters: enter a name in the left field and select the data layer variable with the relevant information in the right field.\"},{\"@type\":\"HowToStep\",\"name\":\"Add a trigger\",\"text\":\"In the event tag, add a trigger and enter the data layer event you want to fire the tag in the event name field.\"},{\"@type\":\"HowToStep\",\"name\":\"Preview\",\"text\":\"Click Preview and trigger the relevant events on your site, confirming in the GTM preview pane that the correct event data is captured and sent to GA4.\"},{\"@type\":\"HowToStep\",\"name\":\"Publish\",\"text\":\"Publish your changes.\"},{\"@type\":\"HowToStep\",\"name\":\"Test\",\"text\":\"Test your changes after publishing, and on a regular, ongoing basis.\"}]}<\/script><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is GA4 ecommerce tracking?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"GA4 ecommerce tracking captures shopping actions, such as viewing a product, adding to cart, and purchasing, and sends them to Google Analytics 4. You push ecommerce data to the data layer and configure GA4 events with the Google tag (gtag.js) or Google Tag Manager, then confirm each event fires with the right values.\"}},{\"@type\":\"Question\",\"name\":\"What events does GA4 ecommerce tracking use?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Mostly recommended events with predefined names, such as view_item, view_item_list, add_to_cart, begin_checkout, add_shipping_info, purchase, and refund, most carrying an items array, plus parameters like value, currency, and transaction_id.\"}},{\"@type\":\"Question\",\"name\":\"Do you need Google Tag Manager for GA4 ecommerce tracking?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. You can send GA4 events with the Google tag (gtag.js) or with Google Tag Manager. Tag Manager is a popular approach because it lets you configure ecommerce event tags, parameters, and triggers, and read from the data layer, without editing site code each time.\"}},{\"@type\":\"Question\",\"name\":\"What is the items array in GA4?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The items array is the parameter that carries product data on an ecommerce event. It needs at least item_id or item_name, and can hold parameters like price, item_brand, item_category, and coupon, plus, in a standard property, up to 27 item-level custom parameters.\"}},{\"@type\":\"Question\",\"name\":\"How do you know your GA4 ecommerce tracking is working?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Preview in GTM and trigger each event, confirm the values in GA4's Realtime and DebugView reports, then use automated testing to walk the full purchase journey and check each event fires with the right values on an ongoing basis.\"}}]}<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Home Resources Analytics &amp; Data Quality GA4 ecommerce setup Analytics &amp; Data Quality \/ Guide GA4 Ecommerce Tracking Setup with GTM DataTrue TeamUpdated September 2026 Summary GA4 ecommerce tracking captures shopping actions, such as viewing a product, adding to cart, and completing a purchase, and sends them to Google Analytics 4. You set it up [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"parent":227747,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-227767","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GA4 Ecommerce Tracking Setup with GTM | DataTrue<\/title>\n<meta name=\"description\" content=\"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GA4 Ecommerce Tracking Setup with GTM | DataTrue\" \/>\n<meta property=\"og:description\" content=\"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/\" \/>\n<meta property=\"og:site_name\" content=\"DataTrue\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/datatruedigital\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-06T16:15:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/datatrue.com\/wp-content\/uploads\/2022\/04\/New-DT-Logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1328\" \/>\n\t<meta property=\"og:image:height\" content=\"208\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@data_true\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/ga4-ecommerce-setup\\\/\",\"url\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/ga4-ecommerce-setup\\\/\",\"name\":\"GA4 Ecommerce Tracking Setup with GTM | DataTrue\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#website\"},\"datePublished\":\"2026-10-06T16:09:53+00:00\",\"dateModified\":\"2026-10-06T16:15:31+00:00\",\"description\":\"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/ga4-ecommerce-setup\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/ga4-ecommerce-setup\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/ga4-ecommerce-setup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/datatrue.com\\\/en\\\/datatrue-home-2026\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resources\",\"item\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Analytics &amp; Data Quality\",\"item\":\"https:\\\/\\\/datatrue.com\\\/en\\\/resources\\\/analytics\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"GA4 Ecommerce Setup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/datatrue.com\\\/en\\\/\",\"name\":\"DataTrue\",\"description\":\"Web Analytics Quality Assurance\",\"publisher\":{\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/datatrue.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#organization\",\"name\":\"DataTrue\",\"url\":\"https:\\\/\\\/datatrue.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/datatrue.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/New-DT-Logo.png\",\"contentUrl\":\"https:\\\/\\\/datatrue.com\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/New-DT-Logo.png\",\"width\":1328,\"height\":208,\"caption\":\"DataTrue\"},\"image\":{\"@id\":\"https:\\\/\\\/datatrue.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/datatruedigital\\\/\",\"https:\\\/\\\/x.com\\\/data_true\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/Datatrue\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GA4 Ecommerce Tracking Setup with GTM | DataTrue","description":"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.","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:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/","og_locale":"en_US","og_type":"article","og_title":"GA4 Ecommerce Tracking Setup with GTM | DataTrue","og_description":"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.","og_url":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/","og_site_name":"DataTrue","article_publisher":"https:\/\/www.facebook.com\/datatruedigital\/","article_modified_time":"2026-10-06T16:15:31+00:00","og_image":[{"width":1328,"height":208,"url":"https:\/\/datatrue.com\/wp-content\/uploads\/2022\/04\/New-DT-Logo.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@data_true","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/","url":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/","name":"GA4 Ecommerce Tracking Setup with GTM | DataTrue","isPartOf":{"@id":"https:\/\/datatrue.com\/en\/#website"},"datePublished":"2026-10-06T16:09:53+00:00","dateModified":"2026-10-06T16:15:31+00:00","description":"A step-by-step guide to setting up GA4 ecommerce tracking with Google Tag Manager, from the data layer to purchase events, and how to confirm it is accurate.","breadcrumb":{"@id":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/datatrue.com\/en\/resources\/analytics\/ga4-ecommerce-setup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/datatrue.com\/en\/datatrue-home-2026\/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https:\/\/datatrue.com\/en\/resources\/"},{"@type":"ListItem","position":3,"name":"Analytics &amp; Data Quality","item":"https:\/\/datatrue.com\/en\/resources\/analytics\/"},{"@type":"ListItem","position":4,"name":"GA4 Ecommerce Setup"}]},{"@type":"WebSite","@id":"https:\/\/datatrue.com\/en\/#website","url":"https:\/\/datatrue.com\/en\/","name":"DataTrue","description":"Web Analytics Quality Assurance","publisher":{"@id":"https:\/\/datatrue.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/datatrue.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/datatrue.com\/en\/#organization","name":"DataTrue","url":"https:\/\/datatrue.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/datatrue.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/datatrue.com\/wp-content\/uploads\/2022\/04\/New-DT-Logo.png","contentUrl":"https:\/\/datatrue.com\/wp-content\/uploads\/2022\/04\/New-DT-Logo.png","width":1328,"height":208,"caption":"DataTrue"},"image":{"@id":"https:\/\/datatrue.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/datatruedigital\/","https:\/\/x.com\/data_true","https:\/\/www.youtube.com\/c\/Datatrue"]}]}},"_links":{"self":[{"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/pages\/227767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/comments?post=227767"}],"version-history":[{"count":4,"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/pages\/227767\/revisions"}],"predecessor-version":[{"id":227887,"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/pages\/227767\/revisions\/227887"}],"up":[{"embeddable":true,"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/pages\/227747"}],"wp:attachment":[{"href":"https:\/\/datatrue.com\/en\/wp-json\/wp\/v2\/media?parent=227767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}