{"id":140,"date":"2026-07-22T09:21:00","date_gmt":"2026-07-22T07:21:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=140"},"modified":"2026-10-24T00:50:00","modified_gmt":"2026-10-23T22:50:00","slug":"ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/","title":{"rendered":"GA4 &amp; Server-Side GTM: The &#8220;Migrate from JavaScript Managed Client ID&#8221; Feature Explained"},"content":{"rendered":"<p>The GA4 client in server-side Google Tag Manager receives measurement requests and prepares events for server tags. Client identification determines the browser identifier in outgoing GA4 data. Changing that identifier can affect user counts, session association and longer-term analysis.<\/p>\n<h2>Separate the two settings<\/h2>\n<p><strong>JavaScript Managed<\/strong> uses the client ID supplied by the browser. The usual <code>_ga<\/code> cookie contains that identifier alongside format components: <code>GA1.1.123456789.1680000000<\/code> is a cookie value, while <code>123456789.1680000000<\/code> is the client ID within the value. A client ID is not a reliable identity for a person.<\/p>\n<p><strong>Server Managed<\/strong> uses a server-managed identifier, typically stored in the <code>FPID<\/code> cookie. An HTTP response sets this cookie, which remains stored in the browser. The additional <strong>Migrate from JavaScript Managed Client ID<\/strong> option concerns the transition from existing browser identifiers; the checkbox does not itself select the management mode.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-140-fpid-20261024.png\" width=\"1120\" height=\"580\" alt=\"Comparison of the JavaScript-managed _ga cookie and the server-managed FPID, with the mapping in server-side GTM\"><figcaption>JavaScript Managed and Server Managed are identification modes. The additional migration option concerns the transition; the outgoing client ID requires verification.<\/figcaption><\/figure>\n<h2>What migration is intended to preserve<\/h2>\n<p>For an existing measurement setup, migration is intended to avoid an abrupt change of existing client IDs. This is neither a retrospective merger of all identifiers nor a guarantee of unchanged attribution. Already deleted or expired identifiers cannot be recovered through this setting.<\/p>\n<p>Describing migration as \u201cconverting the old cookie into FPID while keeping the GA4 identity identical forever\u201d is insufficient. The forwarded <code>client_id<\/code> is what matters. Before changing production settings, comparison of incoming and outgoing identifiers in the deployed client version must establish how existing IDs, fresh profiles and existing FPID cookies are handled.<\/p>\n<h2>HttpOnly provides a specific protection<\/h2>\n<p><code>HttpOnly<\/code> prevents direct access to the cookie from page JavaScript, for example through <code>document.cookie<\/code>. This reduces simple cookie theft in some XSS attacks. The website does not become immune to XSS: malicious code can still modify page content or initiate requests. An analytics identifier is also different from a login session cookie.<\/p>\n<h2>Two years in Safari is not guaranteed<\/h2>\n<p>A configured expiry date does not guarantee actual retention. WebKit can also restrict cookies set in HTTP responses: detected third-party CNAME or IP cloaking triggers a seven-day cap. Private sessions, cookie deletion and browser settings can further reduce availability. FPID is not a universal ITP bypass.<\/p>\n<p>Testing must cover the first-party endpoint, cookie domain, path, HTTPS and actual browser responses. Consent requirements still apply to storing and using the identifier.<\/p>\n<h2>Test the transition deliberately<\/h2>\n<ol>\n<li>Save the current container version and settings. Start with a separate test measurement setup.<\/li>\n<li>Use a profile with an existing client ID and a fresh profile. Compare incoming IDs, response cookies and outgoing GA4 client IDs.<\/li>\n<li>Test subsequent page views, existing FPID cookies, expired or removed identifiers, rejection and withdrawal separately.<\/li>\n<li>Include every event route: browser events, server-side purchases, Measurement Protocol where applicable and multiple domains. Different IDs can split the same journey.<\/li>\n<li>After a controlled release, monitor users, sessions and campaign assignment by browser against the actual rollout date.<\/li>\n<\/ol>\n<p>An identifier change can weaken historical continuity. That does not mean every visit must become a new user or every conversion must become \u201cDirect \/ None.\u201d Other identity signals, campaign parameters and reporting settings affect the outcome.<\/p>\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n<h3>Is migration always required?<\/h3>\n<p>Keeping JavaScript-managed identification requires no FPID migration. An established measurement setup moving to Server Managed warrants specific transition testing. A new setup without existing identifiers has no such legacy population.<\/p>\n<h3>Does the identifier survive deletion of all cookies?<\/h3>\n<p>A deleted FPID cookie is no longer available to the server. Recognition through other permitted signals is a separate matter; FPID alone does not restore the deleted identifier.<\/p>\n<h3>Is the internal migration algorithm fully established here?<\/h3>\n<p>No. Public Google introductory documentation explains server cookies and processing but does not specify every internal transition case. Testing the deployed GA4 client version therefore remains part of the migration.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/webkit.org\/blog\/10218\/full-third-party-cookie-blocking-and-more\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebKit cookie policy<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging<\/a><\/li>\n<li><a href=\"https:\/\/webkit.org\/tracking-prevention\/\" target=\"_blank\" rel=\"noopener noreferrer\">WebKit tracking prevention<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Guides\/Cookies\" target=\"_blank\" rel=\"noopener noreferrer\">MDN HTTP cookies<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\/overview\" target=\"_blank\" rel=\"noopener noreferrer\">Google server-side overview<\/a><\/li>\n<li><a href=\"https:\/\/storage.googleapis.com\/support-kms-prod\/KYaKZ5CAhIQ4rjgEFWIy6qKRzRSJjdGjrYFW\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics Data Controls Guide<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits. The article explains the transition between browser-managed and server-managed identifiers and the effect of expired cookies.<\/p>\n","protected":false},"author":1,"featured_media":13656,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91276,91285,91258,91267,91350,91061],"class_list":["post-140","post","type-post","status-publish","format-standard","hentry","category-digital-analytics","tag-cookies","tag-first-party-data","tag-google-analytics-4","tag-google-tag-manager","tag-safari-itp","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>GA4 &amp; Server-Side GTM: The &quot;Migrate from JavaScript Managed Client ID&quot; Feature Explained | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.\" \/>\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\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GA4 &amp; Server-Side GTM: The &quot;Migrate from JavaScript Managed Client ID&quot; Feature Explained | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-22T07:21:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T22:50:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-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\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"GA4 &amp; Server-Side GTM: The &#8220;Migrate from JavaScript Managed Client ID&#8221; Feature Explained\",\"datePublished\":\"2026-07-22T07:21:00+00:00\",\"dateModified\":\"2026-10-23T22:50:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/\"},\"wordCount\":660,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png\",\"keywords\":[\"Cookies\",\"First-Party Data\",\"Google Analytics 4\",\"Google Tag Manager\",\"Safari ITP\",\"Server-Side GTM\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/\",\"name\":\"GA4 &amp; Server-Side GTM: The \\\"Migrate from JavaScript Managed Client ID\\\" Feature Explained | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png\",\"datePublished\":\"2026-07-22T07:21:00+00:00\",\"dateModified\":\"2026-10-23T22:50:00+00:00\",\"description\":\"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png\",\"width\":1200,\"height\":630,\"caption\":\"GA4 & Server-Side GTM: The \\\"Migrate from JavaScript Managed Client ID\\\" Feature Explained\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GA4 &amp; Server-Side GTM: The &#8220;Migrate from JavaScript Managed Client ID&#8221; Feature Explained\"}]},{\"@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":"GA4 &amp; Server-Side GTM: The \"Migrate from JavaScript Managed Client ID\" Feature Explained | Lukas Wojcik","description":"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.","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\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/","og_locale":"en_US","og_type":"article","og_title":"GA4 &amp; Server-Side GTM: The \"Migrate from JavaScript Managed Client ID\" Feature Explained | Lukas Wojcik","og_description":"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-07-22T07:21:00+00:00","article_modified_time":"2026-10-23T22:50:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-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\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"GA4 &amp; Server-Side GTM: The &#8220;Migrate from JavaScript Managed Client ID&#8221; Feature Explained","datePublished":"2026-07-22T07:21:00+00:00","dateModified":"2026-10-23T22:50:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/"},"wordCount":660,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png","keywords":["Cookies","First-Party Data","Google Analytics 4","Google Tag Manager","Safari ITP","Server-Side GTM"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/","name":"GA4 &amp; Server-Side GTM: The \"Migrate from JavaScript Managed Client ID\" Feature Explained | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png","datePublished":"2026-07-22T07:21:00+00:00","dateModified":"2026-10-23T22:50:00+00:00","description":"Migrate the GA4 client ID to Server-Side GTM: _ga, FPID and the Migrate from JavaScript Managed Client ID setting and its limits.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-140-ga4-server-side-gtm-the-migrate-from-g.png","width":1200,"height":630,"caption":"GA4 & Server-Side GTM: The \"Migrate from JavaScript Managed Client ID\" Feature Explained"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-server-side-gtm-the-migrate-from-javascript-managed-client-id-feature-explained\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GA4 &amp; Server-Side GTM: The &#8220;Migrate from JavaScript Managed Client ID&#8221; Feature Explained"}]},{"@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\/140","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=140"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":22877,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/140\/revisions\/22877"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13656"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}