{"id":14758,"date":"2025-12-31T10:36:40","date_gmt":"2025-12-31T10:36:40","guid":{"rendered":"https:\/\/e-dialog.group\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/"},"modified":"2026-02-27T15:35:46","modified_gmt":"2026-02-27T15:35:46","slug":"cookieless-ga4-with-server-side-gtm-firestore","status":"publish","type":"post","link":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/","title":{"rendered":"Cookieless GA4 with Server-Side GTM &amp; Firestore"},"content":{"rendered":"<div id=\"basic-content-block_d214295cb139ab8da8076c9a928c55ea\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <h2>1. The Challenge of Cookieless GA4<\/h2>\n<p>The digital landscape is fundamentally shifting towards enhanced privacy protection. As browsers restrict cookies and legal frameworks evolve, traditional web analytics methods are under scrutiny. For <a href=\"https:\/\/e-dialog.group\/en\/analytics\/google-analytics\/\">Google Analytics 4<\/a>, this is a significant challenge, as the ability to recognize users and track their journey often directly depends on browser cookies.  <\/p>\n  <\/div>\n<\/div><div id=\"textpic-block_2a8dfb5145115b60dbbfa64bfd35d8cf\" class=\"textpic block block--textpic\" data-title=\"\">\n  <div class=\"textpic__content content\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"555\" height=\"317\" src=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/2-e1767176278956.jpg\" class=\"content__img\" alt=\"GTM Screenshot\" srcset=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/2-e1767176278956.jpg 555w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/2-e1767176278956-300x171.jpg 300w\" sizes=\"auto, (max-width: 555px) 100vw, 555px\">    <div class=\"content__info info\">\n        <h3 class=\"info__hl\">Enforcing a Cookieless Status<\/h3>              <div class=\"info__text\"><p>To operate with maximum respect for privacy, we can utilize <a href=\"https:\/\/e-dialog.group\/en\/blog\/google-consent-mode-v2-impact-on-campaign-attribution-038-why-utm-parameters-are-crucial-now\/\">Google Consent Mode<\/a>. This mechanism adjusts the behavior of Google tags based on user consent. By setting the parameters <span style=\"color: #008000;\">analytics_storage<\/span> and <span style=\"color: #008000;\">ad_storage<\/span> to &ldquo;denied&rdquo; by default, we instruct GA4 not to write or read analytics cookies. This single measure achieves a truly cookieless operation from the user&rsquo;s perspective &ndash; but it has direct technical consequences.   <\/p>\n<\/div>\n                <\/div>\n  <\/div>\n<\/div><div id=\"basic-content-block_0cc101e63d849a57e2c387dca6c13519\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <h4>Disappearing Data<\/h4>\n<p>Without cookies, GA4 is effectively &ldquo;blind.&rdquo; Every incoming event appears as if it&rsquo;s from a brand new visitor. Crucial information that links the user journey is lost or re-randomized with each page view. This includes critical parameters such as:   <\/p>\n  <\/div>\n<\/div>  <div id=\"small-ul-block_0393c9e8f75c112ff78f5200f67b00f1\" class=\"small-ul block block--small-ul\" data-title=\"\">\n    <ul class=\"small-ul__content content\">\n              <li class=\"content__li li\">\n                      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\">\n              <circle fill=\"#0045a5\" cx=\"12\" cy=\"12\" r=\"11.77\"><\/circle>\n              <polyline fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" points=\"18 7.25 11 16.75 6 12.75\"><\/polyline>\n            <\/svg>\n            <strong>Client ID (cid):<\/strong> The unique identifier for the user&rsquo;s browser.                  <\/li>\n              <li class=\"content__li li\">\n                      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\">\n              <circle fill=\"#0045a5\" cx=\"12\" cy=\"12\" r=\"11.77\"><\/circle>\n              <polyline fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" points=\"18 7.25 11 16.75 6 12.75\"><\/polyline>\n            <\/svg>\n            <strong>Session ID (sid):<\/strong> The identifier for a single user session.                  <\/li>\n              <li class=\"content__li li\">\n                      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\">\n              <circle fill=\"#0045a5\" cx=\"12\" cy=\"12\" r=\"11.77\"><\/circle>\n              <polyline fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" points=\"18 7.25 11 16.75 6 12.75\"><\/polyline>\n            <\/svg>\n            <strong>Session Count (sct)<\/strong>: The number of sessions for this user.                  <\/li>\n              <li class=\"content__li li\">\n                      <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\">\n              <circle fill=\"#0045a5\" cx=\"12\" cy=\"12\" r=\"11.77\"><\/circle>\n              <polyline fill=\"none\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" points=\"18 7.25 11 16.75 6 12.75\"><\/polyline>\n            <\/svg>\n            <strong>First Visit (_fv) &amp; Session Start (_ss):<\/strong> Flags that mark these key events and are central components of GA4&rsquo;s internal user and session management.                  <\/li>\n          <\/ul>\n  <\/div>\n<div id=\"basic-content-block_f107b05b96dd11f8b1aaaddb58f4f2c0\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <p><span style=\"font-weight: 400;\">The consequence is a breakdown of data integrity. Meaningful analysis of channel attribution, user behavior, and conversion funnels becomes almost impossible. We collect hits, but we lose the story they are supposed to tell.  <\/span><\/p>\n  <\/div>\n<\/div><div id=\"basic-content-block_0674474cfd9ee1650379ae636c2efcf2\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <h2>2. The Server-Side Solution<\/h2>\n<h3>An Overview<\/h3>\n<p>Given the data gaps in the cookieless browser, the solution is not to force the browser to store data, but to shift the location of the &ldquo;memory.&rdquo; We transfer the responsibility for identifying users and sessions from the client browser to our own tracking server. Simply put: if the browser cannot have a memory in the form of cookies, we give our server one in the form of a database.  <\/p>\n<p>The combination of server-side GTM and a database allows us to restore lost information and reconstruct user and session context. Due to Firestore&rsquo;s native integration with sGTM and its high read and write speeds, it is the preferred choice. <\/p>\n<h5>The two core components of this setup are:<\/h5>\n<ol>\n<li><strong><a href=\"https:\/\/e-dialog.group\/en\/analytics\/server-side-tracking\/\">Server-Side Google Tag Manager<\/a> (sGTM):<\/strong> It acts as our new data hub. It receives anonymous raw data from the browser; this is where our logic is applied. <\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>A database (such as <a href=\"https:\/\/firebase.google.com\/docs\/firestore?hl=de\">Firestore<\/a>):<\/strong> It serves as the system&rsquo;s persistent memory. It stores the necessary information to recognize returning users and merge their journeys. <\/li>\n<\/ol>\n<p>By combining both systems, we can intelligently reconstruct the missing analytics parameters on the server before forwarding the complete, correct data to Google Analytics.<\/p>\n  <\/div>\n<\/div><div id=\"basic-content-block_c78993d554a4ec1eba5c0c0cf998ea00\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <h4>The Architecture<\/h4>\n<p>Both systems work sequentially to process and enrich the analytics data. The data flow is as follows: <\/p>\n  <\/div>\n<\/div>  <div id=\"big-ol-block_4c391fb68d4b650ce4a7f14e083bfdfb\" class=\"big-ol block block--big-ol\" data-title=\"\">\n    <ol class=\"big-ol__content content\">\n              <li class=\"content__li li\">\n          <div class=\"li__index\">\n            01          <\/div>\n          <div class=\"li__main li-main\">\n                          <h4 class=\"li-main__hl\">The Initial Request<\/h4>                                      <div class=\"li-main__content\"><p>A user action on the website triggers a standard GA4 event. This is sent to the server hosting the sGTM container. At this point, the request lacks stable user and session identifiers.  <\/p>\n<\/div>\n                      <\/div>\n        <\/li>\n              <li class=\"content__li li\">\n          <div class=\"li__index\">\n            02          <\/div>\n          <div class=\"li__main li-main\">\n                          <h4 class=\"li-main__hl\">Interception by the Custom Client<\/h4>                                      <div class=\"li-main__content\"><p>Within sGTM, a specially developed client is configured to claim all incoming GA4 requests. This client intercepts the request and prevents the standard GA4 client from processing it immediately. Its task is to pause the event flow to allow for data enrichment.  <\/p>\n<\/div>\n                      <\/div>\n        <\/li>\n              <li class=\"content__li li\">\n          <div class=\"li__index\">\n            03          <\/div>\n          <div class=\"li__main li-main\">\n                          <h4 class=\"li-main__hl\">Firestore Database Query<\/h4>                                      <div class=\"li-main__content\"><p>The Custom Client uses signals from the request (such as IP address and user agent) to query our Firestore database. The goal is to find a matching data record. Each record in Firestore contains essential session and user information, such as a <span style=\"color: #008000;\">computed_client_id<\/span>, the current <span style=\"color: #008000;\">session_id<\/span>, and the timestamp of the last event (<span style=\"color: #008000;\">last_event_ts<\/span>).  <\/p>\n<\/div>\n                      <\/div>\n        <\/li>\n          <\/ol>\n  <\/div>\n<div id=\"basic-content-block_88e4759c6c19fac00f7e5102a9aa5f09\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <p>This query provides the entire context needed to understand the user&rsquo;s status. The sGTM now has both the raw browser data and the historical context from Firestore. <\/p>\n  <\/div>\n<\/div><div id=\"image-fullscreen-block_862515b48a9efcde05499f47d99cb679\" class=\"image-fullscreen block block--image-fullscreen\" data-title=\"\">\n  <div class=\"image-fullscreen__content content\">\n    <img loading=\"lazy\" decoding=\"async\" width=\"1202\" height=\"831\" src=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1.jpg\" class=\"content__img img img--desktop\" alt=\"Cookieless Tracking\" srcset=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1.jpg 1202w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-300x207.jpg 300w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-1024x708.jpg 1024w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-768x531.jpg 768w\" sizes=\"auto, (max-width: 1202px) 100vw, 1202px\">    <img loading=\"lazy\" decoding=\"async\" width=\"1202\" height=\"831\" src=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1.jpg\" class=\"content__img img img--mobile\" alt=\"Cookieless Tracking\" srcset=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1.jpg 1202w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-300x207.jpg 300w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-1024x708.jpg 1024w, https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/1-1-768x531.jpg 768w\" sizes=\"auto, (max-width: 1202px) 100vw, 1202px\">  <\/div>\n<\/div><div id=\"basic-content-block_a340c8a80bb4c956b66a8a80ccf1c1d8\" class=\"basic-content block block--basic-content\" data-title=\"\">\n  <div class=\"basic-content__content content\">\n    <h2>3. The Engine Room: Reconstructing Lost GA4 Parameters<\/h2>\n<p>This chapter describes the logic that the Custom Client executes at a high level. Here, the cookieless raw request is transformed into a complete event. <\/p>\n<h4>Creating a Stable User Identifier<\/h4>\n<p>The most important missing piece of the puzzle is the Client ID (cid). To restore this, the Custom Client generates a <span style=\"color: #008000;\">computed_client_id<\/span>. This is an SHA256 hash created by combining the IP address, user agent, and a unique, private &ldquo;salt.&rdquo; This creates a consistent, pseudonymous ID that reliably identifies returning users without cookies.   <\/p>\n<h4>The Firestore User Record<\/h4>\n<p>For each unique <span style=\"color: #008000;\">computed_client_id<\/span>, a corresponding entry is stored in our Firestore database. This serves as persistent memory and contains fields such as the <span style=\"color: #008000;\">session_id<\/span>, the <span style=\"color: #008000;\">session_number<\/span> counter, and the <span style=\"color: #008000;\">session_sequence<\/span> (number of events within the current session). <\/p>\n<h4>Reconstructing the Session Context<\/h4>\n<p>Once the user is identified, the client checks the timestamp of the last event in Firestore. A new Session ID (sid) is generated if it is a new user or if the last event was more than 30 minutes ago. In this case, the Session Count (sct) is also incremented. The GA4 events are enriched with these constructed values by manipulating the event data in the Custom Client.   <\/p>\n<h4>Overriding Consent for Full Processing<\/h4>\n<p>This is the final, crucial step. The original request from the browser arrived with a &ldquo;denied&rdquo; status. If we were to send the data to GA4 as is, it would only be treated as a restricted &ldquo;cookieless ping&rdquo; or, depending on the user&rsquo;s location, not displayed at all.<br>\nTo prevent this, the Custom Client overrides the consent status on the server to &ldquo;granted.&rdquo; This ensures that our reconstructed data is actually used and that we receive a complete and accurate picture in GA4.   <\/p>\n<h2>Conclusion<\/h2>\n<p>By shifting user and session identification from the browser to a server-side environment using <a href=\"https:\/\/e-dialog.group\/en\/google-sales-partner\/google-tag-manager-360\/\">sGTM<\/a> and Firestore, the data gaps caused by cookieless operation can be effectively closed. This server-side methodology not only restores vital channel attribution but also provides a future-proof blueprint for privacy-compliant analytics in a post-cookie world. <\/p>\n<p>Implementing a <a href=\"https:\/\/e-dialog.group\/en\/analytics\/server-side-tracking\/\">Server-Side Tracking<\/a> architecture is a significant and powerful step towards future-proofing your analytics. If you are ready to ensure data integrity in a cookieless world, our team of experts will be happy to assist you. <\/p>\n  <\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Operating GA4 without cookies offers a privacy-friendly tracking method, but it presents significant challenges in maintaining session context. This article describes a complete server-side methodology to solve this problem. Our approach integrates Server-Side Google Tag Manager (sGTM) and a Firestore database to create a persistent, server-side controlled memory for users. This system reliably identifies users and reconstructs session data from cookieless browser signals. The result is a complete data stream to GA4, preserving session integrity and channel attribution, thus enabling reliable insights within a cookieless framework.    <\/p>\n","protected":false},"author":4,"featured_media":14759,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[445,450],"channel":[459],"goal":[463,466],"technology":[36,38],"c-year":[7],"class_list":["post-14758","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","category-technology","channel-web","goal-digital-strategy","goal-performance-marketing","technology-google-analytics","technology-google-tag-manager","c-year-7"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.5 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Cookieless GA4 with Server-Side GTM &amp; Firestore - e-dialog<\/title>\n<meta name=\"description\" content=\"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cookieless GA4 with Server-Side GTM &amp; Firestore\" \/>\n<meta property=\"og:description\" content=\"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/\" \/>\n<meta property=\"og:site_name\" content=\"e-dialog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/edialog.group\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-31T10:36:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-27T15:35:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1373\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Markus Widmer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Markus Widmer\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/\"},\"author\":{\"name\":\"Markus Widmer\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#\\\/schema\\\/person\\\/cb85b2ef7fe1d77334ccc4e0888ba566\"},\"headline\":\"Cookieless GA4 with Server-Side GTM &amp; Firestore\",\"datePublished\":\"2025-12-31T10:36:40+00:00\",\"dateModified\":\"2026-02-27T15:35:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg\",\"articleSection\":[\"Analytics\",\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/\",\"url\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/\",\"name\":\"Cookieless GA4 with Server-Side GTM &amp; Firestore - e-dialog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg\",\"datePublished\":\"2025-12-31T10:36:40+00:00\",\"dateModified\":\"2026-02-27T15:35:46+00:00\",\"description\":\"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#primaryimage\",\"url\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg\",\"contentUrl\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg\",\"width\":2560,\"height\":1373,\"caption\":\"appshunter-io-iOWLBQewoDo-unsplash_processed\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/cookieless-ga4-with-server-side-gtm-firestore\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cookieless GA4 with Server-Side GTM &amp; Firestore\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/\",\"name\":\"e-dialog\",\"description\":\"Data-driven Marketing &amp; Strategie\",\"publisher\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#organization\",\"name\":\"e-dialog\",\"url\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/e-dialog-logo.svg\",\"contentUrl\":\"https:\\\/\\\/e-dialog.group\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/e-dialog-logo.svg\",\"width\":1,\"height\":1,\"caption\":\"e-dialog\"},\"image\":{\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/edialog.group\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/e-dialog-gmbh\\\/\",\"https:\\\/\\\/www.instagram.com\\\/e_dialog\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@e_dialog\"],\"description\":\"Bei e-dialog gestalteten wir gemeinsam die Zukunft des data-driven Marketings - mit einem gro\u00dfartigen Team aus passionierten Expert*innen.\",\"email\":\"kontakt@e-dialog.group\",\"telephone\":\"+43 1 309 09 09\",\"legalName\":\"e-dialog GmbH\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/#\\\/schema\\\/person\\\/cb85b2ef7fe1d77334ccc4e0888ba566\",\"name\":\"Markus Widmer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g\",\"caption\":\"Markus Widmer\"},\"url\":\"https:\\\/\\\/e-dialog.group\\\/en\\\/blog\\\/author\\\/mwie-dialog-group\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cookieless GA4 with Server-Side GTM &amp; Firestore - e-dialog","description":"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.","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:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/","og_locale":"en_US","og_type":"article","og_title":"Cookieless GA4 with Server-Side GTM &amp; Firestore","og_description":"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.","og_url":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/","og_site_name":"e-dialog","article_publisher":"https:\/\/www.facebook.com\/edialog.group","article_published_time":"2025-12-31T10:36:40+00:00","article_modified_time":"2026-02-27T15:35:46+00:00","og_image":[{"width":2560,"height":1373,"url":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg","type":"image\/jpeg"}],"author":"Markus Widmer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Markus Widmer"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#article","isPartOf":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/"},"author":{"name":"Markus Widmer","@id":"https:\/\/e-dialog.group\/en\/#\/schema\/person\/cb85b2ef7fe1d77334ccc4e0888ba566"},"headline":"Cookieless GA4 with Server-Side GTM &amp; Firestore","datePublished":"2025-12-31T10:36:40+00:00","dateModified":"2026-02-27T15:35:46+00:00","mainEntityOfPage":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/"},"wordCount":7,"publisher":{"@id":"https:\/\/e-dialog.group\/en\/#organization"},"image":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#primaryimage"},"thumbnailUrl":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg","articleSection":["Analytics","Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/","url":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/","name":"Cookieless GA4 with Server-Side GTM &amp; Firestore - e-dialog","isPartOf":{"@id":"https:\/\/e-dialog.group\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#primaryimage"},"image":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#primaryimage"},"thumbnailUrl":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg","datePublished":"2025-12-31T10:36:40+00:00","dateModified":"2026-02-27T15:35:46+00:00","description":"A complete server-side methodology for the privacy-friendly operation of GA4 without cookies using Google Tag Manager and Firestore.","breadcrumb":{"@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#primaryimage","url":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg","contentUrl":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/12\/appshunter-io-iOWLBQewoDo-unsplash_processed-e1767175612937.jpg","width":2560,"height":1373,"caption":"appshunter-io-iOWLBQewoDo-unsplash_processed"},{"@type":"BreadcrumbList","@id":"https:\/\/e-dialog.group\/en\/blog\/cookieless-ga4-with-server-side-gtm-firestore\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/e-dialog.group\/en\/"},{"@type":"ListItem","position":2,"name":"Cookieless GA4 with Server-Side GTM &amp; Firestore"}]},{"@type":"WebSite","@id":"https:\/\/e-dialog.group\/en\/#website","url":"https:\/\/e-dialog.group\/en\/","name":"e-dialog","description":"Data-driven Marketing &amp; Strategie","publisher":{"@id":"https:\/\/e-dialog.group\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/e-dialog.group\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/e-dialog.group\/en\/#organization","name":"e-dialog","url":"https:\/\/e-dialog.group\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/e-dialog.group\/en\/#\/schema\/logo\/image\/","url":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/06\/e-dialog-logo.svg","contentUrl":"https:\/\/e-dialog.group\/wp-content\/uploads\/2025\/06\/e-dialog-logo.svg","width":1,"height":1,"caption":"e-dialog"},"image":{"@id":"https:\/\/e-dialog.group\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/edialog.group","https:\/\/www.linkedin.com\/company\/e-dialog-gmbh\/","https:\/\/www.instagram.com\/e_dialog\/","https:\/\/www.tiktok.com\/@e_dialog"],"description":"Bei e-dialog gestalteten wir gemeinsam die Zukunft des data-driven Marketings - mit einem gro\u00dfartigen Team aus passionierten Expert*innen.","email":"kontakt@e-dialog.group","telephone":"+43 1 309 09 09","legalName":"e-dialog GmbH"},{"@type":"Person","@id":"https:\/\/e-dialog.group\/en\/#\/schema\/person\/cb85b2ef7fe1d77334ccc4e0888ba566","name":"Markus Widmer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/08a82d18bec12e047ee9259b992517049dd16557e3e18d4cedfee56292da9585?s=96&d=mm&r=g","caption":"Markus Widmer"},"url":"https:\/\/e-dialog.group\/en\/blog\/author\/mwie-dialog-group\/"}]}},"_links":{"self":[{"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/posts\/14758","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/comments?post=14758"}],"version-history":[{"count":1,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/posts\/14758\/revisions"}],"predecessor-version":[{"id":14762,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/posts\/14758\/revisions\/14762"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/media\/14759"}],"wp:attachment":[{"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/media?parent=14758"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/categories?post=14758"},{"taxonomy":"channel","embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/channel?post=14758"},{"taxonomy":"goal","embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/goal?post=14758"},{"taxonomy":"technology","embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/technology?post=14758"},{"taxonomy":"c-year","embeddable":true,"href":"https:\/\/e-dialog.group\/en\/wp-json\/wp\/v2\/c-year?post=14758"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}