{"id":8104,"date":"2026-08-11T22:02:00","date_gmt":"2026-08-11T20:02:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8104"},"modified":"2026-08-10T17:55:40","modified_gmt":"2026-08-10T15:55:40","slug":"server-side-gtm-data-enrichment-firestore-bigquery","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/","title":{"rendered":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Modern digital marketing architectures require transmitting conversion values, customer lifetime value (LTV), and profit margins to advertising platforms such as Google Analytics 4 (GA4) and the Meta Conversions API (CAPI). However, strict data governance and privacy regulations prohibit exposing Personally Identifiable Information (PII), customer scoring metrics, or profit margins within the browser-side DataLayer.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The technical solution is <strong>Server-Side Data Enrichment<\/strong>. By intercepting incoming analytics hits in a Server-Side Google Tag Manager (ssGTM) container, anonymous identifiers can be matched against secure backend databases in real time before forwarding payloads to marketing vendors.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. The Privacy-Preserving Architecture<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Instead of pushing sensitive CRM attributes directly to the client browser, only an anonymous identifier\u2014such as a hashed User-ID, customer ID, or a secure session token\u2014is sent via the standard tracking tag. The client-side payload remains completely free of PII and business-critical metrics.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Layer<\/th><th>Allowed Data<\/th><th>Restricted Data (Blocked)<\/th><\/tr><\/thead><tbody><tr><td><strong>Client Browser (DataLayer)<\/strong><\/td><td>Anonymous User-ID, Session-ID, SKU, Transaction-ID<\/td><td>PII (Email, Phone), Profit Margins, Customer Tiers, LTV Scoring<\/td><\/tr><tr><td><strong>Server-Side GTM (Edge)<\/strong><\/td><td>Real-time Lookup via Firestore \/ BigQuery API<\/td><td>Unencrypted PII in logs or external HTTP requests<\/td><\/tr><tr><td><strong>Vendor Payloads (CAPI \/ GA4)<\/strong><\/td><td>Enriched attributes: <code>customer_tier<\/code>, <code>profit_margin<\/code>, hashed PII<\/td><td>Raw internal database schema or unhashed personal data<\/td><\/tr><\/tbody><\/table><\/figure>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-ssgtm-en.png\" width=\"1120\" height=\"740\" decoding=\"async\"\n     alt=\"Server-side GTM intercepting a browser event, enriching it from a Firestore lookup and forwarding the enriched payload to Meta CAPI, GA4 and BigQuery\">\n<figcaption>The browser sends the bare minimum. Everything of commercial value is joined server-side from Firestore and only then forwarded \u2014 which is what keeps margins out of the page source.<\/figcaption>\n<\/figure>\n\n<h2 class=\"wp-block-heading\">2. Firestore vs. BigQuery for Real-Time Lookups<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Selecting the correct database backend within Google Cloud Platform (GCP) is crucial for maintaining low latency across the tagging infrastructure:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Google Cloud Firestore:<\/strong> A NoSQL document database designed for sub-millisecond lookups. It represents the recommended standard for real-time stream enrichment in ssGTM. Attributes such as customer segment, return probability, or margin tier can be fetched instantly using the anonymous User-ID as the document key.<\/li>\r\n\r\n\r\n<li><strong>Google BigQuery:<\/strong> A petabyte-scale data warehouse. While BigQuery is optimal for complex analytical queries and LTV modeling, its higher query latency makes it less suited for synchronous tag enrichment. Instead, BigQuery should be used to pre-calculate customer metrics periodically and export them into Firestore.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Implementation Steps in Server-Side GTM<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The technical implementation follows a sequential three-step enrichment pipeline:<\/p>\r\n\r\n\r\n\r\n<ol start=\"1\" class=\"wp-block-list\">\r\n<li><strong>Intercepting the Request:<\/strong> An incoming GA4 HTTP request reaches the ssGTM container carrying an anonymous <code>user_id<\/code> parameter.<\/li>\r\n\r\n\r\n<li><strong>Executing the Firestore Lookup:<\/strong> Using a custom Firestore Lookup Variable or asynchronous tag, the container queries the GCP Firestore database:\r\n<pre class=\"wp-block-code\"><code>\/\/ Example logic inside a custom ssGTM Firestore Lookup Variable\r\nconst firestore = require(\"Firestore\");\r\nconst userId = getEventData(\"user_id\");\r\n\r\nreturn firestore.read(\"customer_profiles\/\" + userId).then((doc) => {\r\n  return {\r\n    ltv_segment: doc.ltv_segment || \"standard\",\r\n    profit_margin: doc.profit_margin || 0.0\r\n  };\r\n});<\/code><\/pre><\/li>\r\n\r\n\r\n<li><strong>Forwarding Enriched Payloads:<\/strong> Downstream tags\u2014such as the Meta CAPI tag\u2014read the enriched attributes from the variable and transmit them to the advertising vendor without ever exposing them to the user&#8217;s browser.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Summary<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Server-Side Data Enrichment bridges the gap between privacy compliance and advanced marketing optimization. Keeping sensitive CRM metrics within secure Google Cloud Firestore databases and querying them dynamically at the edge ensures high-fidelity reporting for GA4 and Meta CAPI while eliminating client-side data leakage.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>How to enrich incoming analytics hits in Server-Side GTM with CRM attributes via Google Cloud Firestore without exposing PII in the browser.<\/p>\n","protected":false},"author":1,"featured_media":9224,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[91333,91279,91285,91407,91267,91114,91061],"class_list":["post-8104","post","type-post","status-publish","format-standard","hentry","category-digital-marketing","tag-bigquery","tag-prywatnosc-danych-pl","tag-first-party-data","tag-google-cloud","tag-google-tag-manager","tag-pii-protection","tag-server-side-gtm"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"How to enrich incoming analytics hits in Server-Side GTM with CRM attributes via Google Cloud Firestore without exposing PII in the browser.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-11T20:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery\",\"datePublished\":\"2026-08-11T20:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/\"},\"wordCount\":487,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg\",\"keywords\":[\"BigQuery\",\"Data Privacy\",\"First-Party Data\",\"Google Cloud\",\"Google Tag Manager\",\"PII Protection\",\"Server-Side GTM\"],\"articleSection\":[\"Digital Marketing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/\",\"name\":\"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg\",\"datePublished\":\"2026-08-11T20:02:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg\",\"width\":1200,\"height\":630,\"caption\":\"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-marketing\\\/server-side-gtm-data-enrichment-firestore-bigquery\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog","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:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/","og_locale":"en_US","og_type":"article","og_title":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog","og_description":"How to enrich incoming analytics hits in Server-Side GTM with CRM attributes via Google Cloud Firestore without exposing PII in the browser.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-11T20:02:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg","type":"image\/jpeg"}],"author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery","datePublished":"2026-08-11T20:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/"},"wordCount":487,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg","keywords":["BigQuery","Data Privacy","First-Party Data","Google Cloud","Google Tag Manager","PII Protection","Server-Side GTM"],"articleSection":["Digital Marketing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/","name":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg","datePublished":"2026-08-11T20:02:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8104-server-side-gtm-data-enrichment-real-time-crm-lookup.jpg","width":1200,"height":630,"caption":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-marketing\/server-side-gtm-data-enrichment-firestore-bigquery\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Server-Side GTM Data Enrichment: Real-Time CRM Lookups via Firestore and BigQuery"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=8104"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8104\/revisions"}],"predecessor-version":[{"id":9534,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8104\/revisions\/9534"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/9224"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}