{"id":8825,"date":"2026-08-16T10:22:00","date_gmt":"2026-08-16T08:22:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8825"},"modified":"2026-09-25T14:56:21","modified_gmt":"2026-09-25T12:56:21","slug":"ga4-measurement-protocol-server-side-crm-offline-conversion-integration","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/","title":{"rendered":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Connecting offline conversions from CRM and POS systems with online user journeys represents a cornerstone of enterprise digital analytics. Relying solely on browser-based tracking leaves conversion data incomplete whenever sales close via phone, email, or in physical retail stores. Utilizing the <strong>Google Analytics 4 (GA4) Measurement Protocol<\/strong> enables direct, server-to-server HTTP POST requests that bridge this gap and attribute revenue accurately to original marketing touchpoints.<\/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\/mp-kennungen-en.png?v=20260925\" width=\"1120\" height=\"580\" decoding=\"async\"\n     alt=\"Three cards for client_id, ga_session_id and user_id showing where each identifier comes from, what it achieves and what happens when it is missing, plus the endpoint and credentials the request needs\">\n<figcaption>The first identifier decides whether the conversion is counted, the second whether the campaign gets the credit.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. The Identity Resolution Architecture: client_id, session_id, and user_id<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Flawless attribution requires precise identity resolution. When sending offline events via Measurement Protocol, GA4 must link incoming backend payloads to an existing web session. This relies on three foundational parameters:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>client_id (Required):<\/strong> The anonymous browser identifier generated by the GA4 cookie (<code>_ga<\/code>). This value must be captured during form submissions and stored persistently within CRM lead records.<\/li>\r\n\r\n\r\n\r\n<li><strong>session_id (Crucial for Session Attribution):<\/strong> Passing only the <code>client_id<\/code> attributes an offline conversion to the user, but GA4 will often categorize the traffic source as <em>Unassigned<\/em> or create a synthetic direct session. To inherit the original traffic source (e.g., Google Ads, Organic Search), the numeric <code>ga_session_id<\/code> must be captured from the browser and passed inside the <code>params<\/code> object.<\/li>\r\n\r\n\r\n\r\n<li><strong>user_id (Optional, Cross-Device):<\/strong> When authenticated user systems are active, passing a permanent internal database ID enables cross-device journey stitching across web, mobile apps, and offline POS transactions.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Structuring the HTTP POST Payload<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Server-side transactions must be transmitted to the official collection endpoint: <code>https:\/\/www.google-analytics.com\/mp\/collect<\/code>. Authentication requires a valid <code>api_secret<\/code> generated inside the GA4 data stream settings along with the <code>measurement_id<\/code> in the format G-XXXXXXX.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The following JSON payload illustrates a compliant offline purchase event containing all required attribution parameters:<\/p>\r\n\r\n\r\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"http\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">HTTP<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-http\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">POST<\/span> \/mp\/collect?measurement_id=G-XXXXXXX&amp;api_secret=abc123XYZ <span class=\"cbb-meta\">HTTP\/1.1<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-attr\">Host<\/span>: www.google-analytics.com\n<\/span><span class=\"cbb-line\"><span class=\"cbb-attr\">Content-Type<\/span>: application\/json\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">{\n<\/span><span class=\"cbb-line\">  \"client_id\": \"1234567890.1700000000\",\n<\/span><span class=\"cbb-line\">  \"user_id\": \"CRM_LEAD_998877\",\n<\/span><span class=\"cbb-line\">  \"timestamp_micros\": \"1723795200000000\",\n<\/span><span class=\"cbb-line\">  \"non_personalized_ads\": false,\n<\/span><span class=\"cbb-line\">  \"events\": &#91;\n<\/span><span class=\"cbb-line\">    {\n<\/span><span class=\"cbb-line\">      \"name\": \"purchase\",\n<\/span><span class=\"cbb-line\">      \"params\": {\n<\/span><span class=\"cbb-line\">        \"session_id\": \"1700000000\",\n<\/span><span class=\"cbb-line\">        \"transaction_id\": \"CRM_INV_2026_0891\",\n<\/span><span class=\"cbb-line\">        \"value\": 1499.00,\n<\/span><span class=\"cbb-line\">        \"currency\": \"EUR\",\n<\/span><span class=\"cbb-line\">        \"engagement_time_msec\": 100,\n<\/span><span class=\"cbb-line\">        \"items\": &#91;\n<\/span><span class=\"cbb-line\">          {\n<\/span><span class=\"cbb-line\">            \"item_id\": \"SKU_ENTERPRISE_PLAN\",\n<\/span><span class=\"cbb-line\">            \"item_name\": \"Enterprise Service License\",\n<\/span><span class=\"cbb-line\">            \"price\": 1499.00,\n<\/span><span class=\"cbb-line\">            \"quantity\": 1\n<\/span><span class=\"cbb-line\">          }\n<\/span><span class=\"cbb-line\">        &#93;\n<\/span><span class=\"cbb-line\">      }\n<\/span><span class=\"cbb-line\">    }\n<\/span><span class=\"cbb-line\">  &#93;\n<\/span><span class=\"cbb-line\">}<\/span><\/code><\/pre><\/figure>\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Managing Attribution Delays and Timestamp Constraints<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Offline CRM transactions rarely occur instantly. Sales cycles often span days or weeks after the initial website inquiry. Handling attribution delays correctly requires adhering to GA4 processing limitations:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>The 72-Hour Window:<\/strong> The Measurement Protocol enforces a strict latency rule, and its edge is exact rather than approximate. Measured against the validation endpoint on 9 September 2026: a <code>timestamp_micros<\/code> value 71 h 59 min 55 s in the past was accepted, and exactly 72 h 00 min 00 s was refused with <code>VALUE_INVALID<\/code>. The production endpoint answers 204 to both, so at the moment of sending a rejected event is indistinguishable from an accepted one.<\/li>\n<li><strong>No tolerance toward the future:<\/strong> A timestamp ahead of the current second is refused as well, and far more sharply than the error text suggests. The message names 15 minutes, but every forward offset tested was refused, down to five seconds \u2014 with the sending machine&#8217;s clock within 0.8 seconds of the <code>Date<\/code> header Google returned in the same run. A CRM host or a till whose clock runs fast therefore produces events that are dropped, with nothing anywhere to show for it.<\/li>\n<li><strong>The <code>client_id<\/code> format is enforced:<\/strong> the value has to look like <code>&lt;number&gt;.&lt;number&gt;<\/code>. A record identifier placed directly in that field \u2014 a lead number, a hash prefix, or a plain integer \u2014 is refused with <code>has invalid format<\/code>. Where no <code>_ga<\/code> value was captured, only a value derived from the record and shaped to that pattern will pass.<\/li>\r\n\r\n\r\n\r\n<li><strong>Real-Time CRM Webhooks vs. Nightly Batches:<\/strong> Due to the 72-hour constraint, relying on weekly or monthly batch uploads is discouraged. Implementing event-driven webhooks inside CRM systems (e.g., triggering a POST request immediately when an opportunity stage changes to <em>Closed Won<\/em>) ensures timestamps remain fresh and valid.<\/li>\r\n\r\n\r\n\r\n<li><strong>Historical Lookfill via BigQuery:<\/strong> For complex B2B sales cycles exceeding 72 hours, data integration should occur downstream within Google Cloud BigQuery. Joining historical CRM transaction tables directly with raw <code>events_*<\/code> web data using <code>client_id<\/code> and lead creation timestamps provides 100% attribution accuracy without API time limit restrictions.<\/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\">Integrating offline CRM conversions via the GA4 Measurement Protocol transforms reporting precision. Ensuring that <code>client_id<\/code> and <code>session_id<\/code> are stored during lead capture, formatting structured JSON payloads, and transmitting events within the 72-hour window guarantees reliable cross-channel attribution.<\/p>\r\n\n\n<div class=\"lw-faq\">\n<h2>Questions and answers<\/h2>\n\n<h3>What happens to a Measurement Protocol event that is retried until it falls outside the 72-hour window?<\/h3>\n<p>It is not processed, and nothing says so. The Measurement Protocol endpoint answers with a success status regardless of what it does with the payload \u2014 there is no rejection to catch, no error body to log, and a retry loop will happily keep succeeding on events that no longer land anywhere.<\/p>\n<p>That has two consequences for the client. The window has to be treated as a hard expiry inside the client itself: an event older than the limit is dropped deliberately and counted, rather than retried until the queue drains. And the counter of dropped events is the actual health signal for the integration, because the transport layer will never produce one.<\/p>\n<p>The one place where validation exists is the debug endpoint, <code>\/debug\/mp\/collect<\/code>, which returns the validation messages the normal endpoint withholds. It belongs in the test suite of the pipeline rather than in production traffic \u2014 a malformed payload that silently succeeds in production is otherwise indistinguishable from a correct one until someone notices the reports are missing revenue.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/protocol\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">GA4 Measurement Protocol reference<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Technical guide on integrating offline CRM and POS conversions with GA4 sessions via server-side Measurement Protocol POST payloads, identity resolution, and delay handling.<\/p>\n","protected":false},"author":1,"featured_media":13779,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91261,91285,91258,91061,91516],"class_list":["post-8825","post","type-post","status-publish","format-standard","hentry","category-digital-analytics","tag-conversion-tracking","tag-first-party-data","tag-google-analytics-4","tag-server-side-gtm","tag-tracking"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.\" \/>\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-measurement-protocol-server-side-crm-offline-conversion-integration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-16T08:22:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-25T12:56:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-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=\"5 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-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration\",\"datePublished\":\"2026-08-16T08:22:00+00:00\",\"dateModified\":\"2026-09-25T12:56:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/\"},\"wordCount\":847,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8825-ga4-measurement-protocol-server-side-g.png\",\"keywords\":[\"Conversion Tracking\",\"First-Party Data\",\"Google Analytics 4\",\"Server-Side GTM\",\"Tracking\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/\",\"name\":\"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8825-ga4-measurement-protocol-server-side-g.png\",\"datePublished\":\"2026-08-16T08:22:00+00:00\",\"dateModified\":\"2026-09-25T12:56:21+00:00\",\"description\":\"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8825-ga4-measurement-protocol-server-side-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8825-ga4-measurement-protocol-server-side-g.png\",\"width\":1200,\"height\":630,\"caption\":\"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration\"}]},{\"@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 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik","description":"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.","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-measurement-protocol-server-side-crm-offline-conversion-integration\/","og_locale":"en_US","og_type":"article","og_title":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik","og_description":"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-16T08:22:00+00:00","article_modified_time":"2026-09-25T12:56:21+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration","datePublished":"2026-08-16T08:22:00+00:00","dateModified":"2026-09-25T12:56:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/"},"wordCount":847,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-g.png","keywords":["Conversion Tracking","First-Party Data","Google Analytics 4","Server-Side GTM","Tracking"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/","name":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-g.png","datePublished":"2026-08-16T08:22:00+00:00","dateModified":"2026-09-25T12:56:21+00:00","description":"GA4 Measurement Protocol for CRM conversions: client_id, session_id, POST payloads and limits of delayed event submission.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8825-ga4-measurement-protocol-server-side-g.png","width":1200,"height":630,"caption":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-measurement-protocol-server-side-crm-offline-conversion-integration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GA4 Measurement Protocol: Server-Side CRM Offline Conversion Integration"}]},{"@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\/8825","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=8825"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8825\/revisions"}],"predecessor-version":[{"id":18105,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8825\/revisions\/18105"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13779"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8825"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8825"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8825"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}