{"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-10-24T03:24:49","modified_gmt":"2026-10-24T01:24:49","slug":"server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/","title":{"rendered":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization"},"content":{"rendered":"<p>Server-side Google Tag Manager (ssGTM) receives measurement requests and sends configured events to selected destinations. Cloud Run supplies the container infrastructure and adjusts the instance count to demand. Reliable operation still depends on the tags, consent rules, resource settings and monitoring. A successful browser response alone does not prove delivery to every destination.<\/p>\n<h2>Architecture before tuning<\/h2>\n<p>Google&#8217;s Cloud Run setup separates a preview server from the tagging server for live traffic. The official provisioning guide covers both. A manually created tagging service needs the actual <code>CONTAINER_CONFIG<\/code> from GTM and the correct <code>PREVIEW_SERVER_URL<\/code>; a fabricated Base64 string is not a working configuration. Public reachability, the custom domain and the web container&#8217;s transport settings also require verification.<\/p>\n<p>The published server container controls which clients claim requests and which tags run. GA4, Meta and TikTok forwarding require separate configuration and applicable consent controls. Cloud Run alone adds none of these integrations. The official image&#8217;s <code>stable<\/code> tag can change; an update needs deployment and validation, rather than an assumption that running instances automatically refresh.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-8828-cloudrun-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"ssGTM on Cloud Run: measure before scaling; Separate services; Preview and live tagging; Minimum instances; Warm capacity, not zero cold starts; Maximum instances; Scaling limit, not a spending cap; CPU + memory + concurrency; Test representative traffic; A browser 200 does not confirm every destination\"><figcaption>ssGTM on Cloud Run: measure before scaling.<\/figcaption><\/figure>\n<h2>Warm capacity and scaling limits<\/h2>\n<p>Minimum instances keep capacity warm and reduce startup delays. Additional instances during a surge, replacement instances and new revisions can still start cold. Neither a fixed startup duration nor a response time below 50 ms follows from setting the minimum to one. Google&#8217;s ssGTM guide recommends at least two instances to reduce outage risk; the appropriate capacity depends on availability requirements and measured traffic.<\/p>\n<p>Maximum instances constrain scaling but are not a hard spending cap. The limit can be exceeded temporarily, and revision-level limits differ from a service-wide limit. A low maximum can leave requests waiting or failing during a surge. Traffic limits, downstream quotas and a billing alert therefore belong in the operating plan. An alert does not itself stop spending.<\/p>\n<h2>CPU, memory and concurrency<\/h2>\n<p>The ssGTM guide describes a starting configuration with one vCPU and about 0.5 GB of memory per instance, using CPU allocation outside active requests. The corresponding <code>--no-cpu-throttling<\/code> setting selects instance-based billing: idle time is billed too. Available background CPU does not make an outbound request durable across shutdowns or guarantee successful vendor delivery.<\/p>\n<p>Concurrency limits simultaneous requests per instance. A value of 80 is a ceiling, not a promise that scaling starts only at request 81. CPU utilization and concurrency both influence scaling. Higher concurrency can improve utilization, but payload size, tag execution and slow destination APIs can increase memory use and latency. CPU and memory limits need measurement; there is no basis for declaring memory the first bottleneck in every 512 MiB deployment.<\/p>\n<h2>A practical tuning cycle<\/h2>\n<ol>\n<li>Inventory: deployed image, revision, billing mode, instance limits, CPU, memory and concurrency, with preview capacity recorded separately from live tagging capacity.<\/li>\n<li>Controlled tests: representative payloads and tags, including a slow destination and a realistic traffic spike. Synthetic purchases belong outside production reporting.<\/li>\n<li>Evaluation: high-percentile response times, error rate, CPU, memory, instance count and destination acknowledgements. An out-of-memory termination is an infrastructure failure to investigate, not an invisible analytics discrepancy.<\/li>\n<li>Iteration: one changed constraint, a repeated test and a comparison of total cost, including logging, networking, preview service and any load balancer. Rollback requires an available, tested previous revision.<\/li>\n<\/ol>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Is lower concurrency always cheaper?<\/h3>\n<p>No. Lower concurrency distributes work across more instances and can improve response time, but can raise cost. Increasing memory may be the better choice for some workloads. Representative measurements decide the trade-off.<\/p>\n<h3>Can minimum instances be reduced overnight?<\/h3>\n<p>A schedule can reduce standing capacity, but also reduces spare capacity for unexpected traffic or restarts. Time zones, failed schedule runs and the morning increase need monitoring. The decision follows an accepted latency and availability target, rather than a blanket distinction between conversions and other events.<\/p>\n<h3>Does a region change require browser changes?<\/h3>\n<p>A new region requires another regional deployment. A stable custom domain behind an appropriate load balancer can preserve the browser endpoint while the backend changes. Region selection should consider audience latency, data-location requirements, connected services and current network pricing. One European region alone does not determine every destination&#8217;s processing location.<\/p>\n<\/div>\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\/cloud-run-setup-guide\" target=\"_blank\" rel=\"noopener noreferrer\">cloud run setup guide<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/about-instance-autoscaling\" target=\"_blank\" rel=\"noopener noreferrer\">about instance autoscaling<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/configuring\/max-instances\" target=\"_blank\" rel=\"noopener noreferrer\">max instances<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/configuring\/min-instances\" target=\"_blank\" rel=\"noopener noreferrer\">min instances<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/about-concurrency\" target=\"_blank\" rel=\"noopener noreferrer\">about concurrency<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/configuring\/billing-settings\" target=\"_blank\" rel=\"noopener noreferrer\">billing settings<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\/container-contract\" target=\"_blank\" rel=\"noopener noreferrer\">container contract<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" target=\"_blank\" rel=\"noopener noreferrer\">server side<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">docs<\/a><\/li>\n<\/ul>\n<\/div>\n","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":13782,"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<\/title>\n<meta name=\"description\" content=\"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.\" \/>\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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/\" \/>\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\" \/>\n<meta property=\"og:description\" content=\"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/\" \/>\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=\"article:modified_time\" content=\"2026-10-24T01:24:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.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=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@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\",\"dateModified\":\"2026-10-24T01:24:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/\"},\"wordCount\":711,\"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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/\",\"name\":\"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.png\",\"datePublished\":\"2026-08-17T18:33:00+00:00\",\"dateModified\":\"2026-10-24T01:24:49+00:00\",\"description\":\"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\\\/#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\":\"Lukas Wojcik\",\"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\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization | Lukas Wojcik","description":"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.","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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/","og_locale":"en_US","og_type":"article","og_title":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization | Lukas Wojcik","og_description":"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-17T18:33:00+00:00","article_modified_time":"2026-10-24T01:24:49+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/"},"author":{"name":"Lukas Wojcik","@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","dateModified":"2026-10-24T01:24:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/"},"wordCount":711,"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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/","name":"Server-Side GTM on GCP Cloud Run: Architecture, Auto-Scaling, and Cost Optimization | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.png","datePublished":"2026-08-17T18:33:00+00:00","dateModified":"2026-10-24T01:24:49+00:00","description":"Run Server-Side GTM on Cloud Run: examine instance limits, memory, CPU, concurrency and cold starts alongside operating costs.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/server-side-gtm-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8828-server-side-gtm-gcp-cloud-run-archit-g.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-on-gcp-cloud-run-architecture-auto-scaling-and-cost\/#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":"Lukas Wojcik","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":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_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":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8828\/revisions"}],"predecessor-version":[{"id":23388,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8828\/revisions\/23388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13782"}],"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}]}}