{"id":8828,"date":"2026-08-17T20:33:00","date_gmt":"2026-08-17T18:33:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8828"},"modified":"2026-08-13T14:29:59","modified_gmt":"2026-08-13T12:29:59","slug":"server-side-gtm-gcp-cloud-run-architecture-auto-scaling","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/","title":{"rendered":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Automatic provisioning of a Server-Side Google Tag Manager (ssGTM) server has created a Google Cloud Run service since autumn 2023 \u2014 Google App Engine is no longer the default environment. What the automatic setup delivers, however, is a minimal configuration meant for testing rather than for production traffic. Cloud Run itself provides a fully managed, stateless container environment with excellent auto-scaling responsiveness, fine-grained resource allocation, and a predictable cost model; unlocking that potential requires hardening the generated deployment deliberately.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Hardening the Auto-Provisioned Cloud Run Service<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The legacy App Engine Flexible setup for ssGTM often led to overprovisioning during low-traffic periods and sluggish scaling during sudden traffic surges \u2014 one of the reasons Cloud Run replaced it as the provisioning default. Cloud Run operates on standard OCI (Open Container Initiative) Docker images, executing the ssGTM container (<code>gcr.io\/cloud-tagging-10302018\/gtm-cloud-image:stable<\/code>) entirely serverless. Automatic provisioning, though, leaves the service at settings that are adequate for testing but not for production volume. The flags described below turn that starting point into a deployment that absorbs load spikes within seconds instead of dropping hits.<\/p>\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\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-en.png\" width=\"1120\" height=\"378\" decoding=\"async\"\n     alt=\"Diagram for the article: min-instances, max-instances, Memory and CPU Allocation \u2026\">\n<figcaption>The 5 building blocks of the article at a glance: min-instances, max-instances, Memory and CPU Allocation, CPU Throttling \u2026.<\/figcaption>\n<\/figure>\n\n<h2 class=\"wp-block-heading\">2. Configuring min-instances and max-instances<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The critical performance balance in Cloud Run lies in defining instance boundary flags correctly. Misconfiguring these boundaries either results in dropped e-commerce hits due to latency or excessive cloud billing.<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>min-instances (Eliminating Cold Starts):<\/strong> In standard serverless deployments, a container scales to zero when idle. The first incoming request triggers a fresh container startup, incurring a &#8220;cold start&#8221; delay of 2 to 5 seconds. For production tracking environments, setting <code>--min-instances=1<\/code> (or higher for enterprise traffic) ensures that warm containers are always on standby, reducing hit latency to under 50 milliseconds.<\/li>\r\n\r\n\r\n\r\n<li><strong>max-instances (Budget Protection):<\/strong> Uncapped serverless scaling can lead to severe budget exhaustion during DDOS events or tracking loop anomalies. Defining a strict upper limit (e.g., <code>--max-instances=10<\/code>) protects Google Cloud Platform (GCP) quotas while easily accommodating Black Friday or promotional e-commerce peaks.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Memory Management, CPU Throttling, and Concurrency<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Optimizing resource efficiency requires tuning container compute specifications to the asynchronous Node.js nature of the GTM server container:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code># Recommended Cloud Run deployment command for Production ssGTM:\r\ngcloud run deploy sgtm-production \r\n  --image=gcr.io\/cloud-tagging-103020\/gtm-cloud-image:stable \r\n  --region=europe-west1 \r\n  --platform=managed \r\n  --allow-unauthenticated \r\n  --min-instances=2 \r\n  --max-instances=20 \r\n  --memory=512Mi \r\n  --cpu=1 \r\n  --concurrency=80 \r\n  --no-cpu-throttling \r\n  --set-env-vars=\"CONTAINER_CONFIG_BASE64=aW52YWxpZF9iYXNlNjRfZXhhbXBsZQ==\"<\/code><\/pre>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Memory and CPU Allocation:<\/strong> A typical ssGTM instance processing GA4, Meta Conversions API, and TikTok Events requires <code>512Mi<\/code> of memory and <code>1 vCPU<\/code>. Allocating more than 1 vCPU per container is rarely beneficial, as horizontal scaling handles volume more efficiently than vertical compute additions.<\/li>\r\n\r\n\r\n\r\n<li><strong>CPU Throttling (&#8211;no-cpu-throttling):<\/strong> By default, Cloud Run throttles CPU access outside of active request processing. Because ssGTM relies on background batching and asynchronous API dispatches (e.g., sending HTTP requests to Meta CAPI after returning a 200 OK to the browser), disabling CPU throttling is mandatory to prevent incomplete network requests.<\/li>\r\n\r\n\r\n\r\n<li><strong>Concurrency Settings:<\/strong> Cloud Run can process multiple simultaneous requests per container instance. Setting <code>--concurrency=80<\/code> allows a single 512Mi container to handle up to 80 concurrent analytics requests before spinning up an additional instance, drastically cutting computing costs.<\/li>\r\n<\/ul>\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\">Deploying Server-Side GTM on GCP Cloud Run establishes a high-performance, containerized analytics gateway. Setting appropriate minimum instance thresholds prevents latency-inducing cold starts, while disabling CPU throttling and optimizing container concurrency guarantees reliable, high-volume e-commerce event processing at a predictable price point.<\/p>\r\n\n\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging overview<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Run documentation<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Technical guide on migrating Server-Side GTM from App Engine to GCP Cloud Run, configuring min\/max instances, memory, concurrency, and avoiding cold starts.<\/p>\n","protected":false},"author":1,"featured_media":10843,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91407,91267,91061,91516,91219,91252],"class_list":["post-8828","post","type-post","status-publish","format-standard","hentry","category-digital-analytics","tag-google-cloud","tag-google-tag-manager","tag-server-side-gtm","tag-tracking","tag-tutorial","tag-web-analytics"],"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 on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - 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-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Technical guide on migrating Server-Side GTM from App Engine to GCP Cloud Run, configuring min\/max instances, memory, concurrency, and avoiding cold starts.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-17T18:33:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png\" \/>\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\/png\" \/>\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-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization\",\"datePublished\":\"2026-08-17T18:33:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/\"},\"wordCount\":542,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png\",\"keywords\":[\"Google Cloud\",\"Google Tag Manager\",\"Server-Side GTM\",\"Tracking\",\"Tutorial\",\"Web Analytics\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/\",\"name\":\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png\",\"datePublished\":\"2026-08-17T18:33:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png\",\"width\":1200,\"height\":630,\"caption\":\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization\"}]},{\"@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 on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - 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-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/","og_locale":"en_US","og_type":"article","og_title":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - Lukas Wojcik - Blog","og_description":"Technical guide on migrating Server-Side GTM from App Engine to GCP Cloud Run, configuring min\/max instances, memory, concurrency, and avoiding cold starts.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-17T18:33:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png","type":"image\/png"}],"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-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization","datePublished":"2026-08-17T18:33:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/"},"wordCount":542,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png","keywords":["Google Cloud","Google Tag Manager","Server-Side GTM","Tracking","Tutorial","Web Analytics"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/","name":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png","datePublished":"2026-08-17T18:33:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-8828-server-side-gtm-gcp-cloud-run-architectu.png","width":1200,"height":630,"caption":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-gcp-cloud-run-architecture-auto-scaling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization"}]},{"@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\/8828","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=8828"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8828\/revisions"}],"predecessor-version":[{"id":10015,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8828\/revisions\/10015"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/10843"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}