{"id":319095,"date":"2026-06-12T08:46:17","date_gmt":"2026-06-12T08:46:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/s2s-conversions\/"},"modified":"2026-06-12T08:45:54","modified_gmt":"2026-06-12T08:45:54","slug":"s2s-conversions","status":"publish","type":"plugin","link":"https:\/\/arg.wordpress.org\/plugins\/s2s-conversions\/","author":20107231,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.26","stable_tag":"1.0.26","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"S2S Conversions","header_author":"TJ-DA","header_description":"Server-side GA4 tracking via the Measurement Protocol. Adblocker-proof, GDPR-ready. Upgrade to Pro for Google Ads, Meta CAPI and LinkedIn CAPI.","assets_banners_color":"","last_updated":"2026-06-12 08:45:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/s2s-plugin.tj-da.com","header_author_uri":"https:\/\/tj-da.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.26":{"tag":"1.0.26","author":"thijsjoostenda","date":"2026-06-12 08:45:54"}},"upgrade_notice":{"1.0.26":"<p>Stability and consent detection improvements. Recommended for all users.<\/p>","1.0.17":"<p>Major update: adds form tracking, session ID attribution, debug log viewer and full consent tool support. Recommended for all users.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.26"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page \u2014 GA4 configuration","2":"Debug log viewer \u2014 real-time event log","3":"Consent tool selection"}},"plugin_section":[],"plugin_tags":[986,193472,1005,219244,286],"plugin_category":[45],"plugin_contributors":[266802],"plugin_business_model":[],"class_list":["post-319095","plugin","type-plugin","status-publish","hentry","plugin_tags-conversion-tracking","plugin_tags-ga4","plugin_tags-google-analytics","plugin_tags-server-side-tracking","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-thijsjoostenda","plugin_committers-thijsjoostenda"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/s2s-conversions.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>S2S Conversions<\/strong> sends purchase and lead events directly from your server to Google Analytics 4 via the Measurement Protocol \u2014 bypassing ad blockers, browser restrictions, and cookie limitations.<\/p>\n\n<p>Unlike client-side tracking via Google Tag Manager, server-side events are never blocked and always arrive \u2014 even when a visitor uses an ad blocker, Safari ITP, or closes the browser before the thank-you page loads.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>GA4 purchase tracking<\/strong> \u2014 sends complete purchase data including items, revenue, tax and shipping<\/li>\n<li><strong>GA4 lead tracking<\/strong> \u2014 tracks form submissions as generate_lead events<\/li>\n<li><strong>Session ID tracking<\/strong> \u2014 correctly attributes conversions to the right channel (Google Ads, Meta, Organic) instead of Unassigned\/Direct<\/li>\n<li><strong>Form integrations<\/strong> \u2014 supports Contact Form 7, WPForms, Gravity Forms, and Elementor Pro Forms<\/li>\n<li><strong>10 cookie consent tools<\/strong> \u2014 works with Cookiebot, Complianz, OneTrust, Real Cookie Banner, Borlabs, iubenda, Moove GDPR, CookieScript, WP Cookie Notice, and a custom banner<\/li>\n<li><strong>Adblocker-proof<\/strong> \u2014 events are sent server-side, never blocked<\/li>\n<li><strong>GDPR-ready<\/strong> \u2014 GA4 events contain no personally identifiable information; consent is respected before sending any data<\/li>\n<li><strong>Debug log viewer<\/strong> \u2014 built-in log viewer in the settings page for easy troubleshooting<\/li>\n<li><strong>WooCommerce HPOS compatible<\/strong> \u2014 fully supports High Performance Order Storage<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>When a customer completes a checkout, the plugin captures the GA4 session data (client_id, session_id) before the payment redirect<\/li>\n<li>After payment, the plugin sends the purchase event server-side via the GA4 Measurement Protocol<\/li>\n<li>Because the session data was captured before the redirect, the conversion is correctly attributed to the original traffic source<\/li>\n<\/ol>\n\n<h4>Pro Version<\/h4>\n\n<p>The free version tracks GA4 only. Upgrade to <strong>S2S Conversions Pro<\/strong> at <a href=\"https:\/\/s2s-plugin.tj-da.com\">s2s-plugin.tj-da.com<\/a> for:<\/p>\n\n<ul>\n<li><strong>Google Ads<\/strong> \u2014 server-side click conversion upload + enhanced conversions<\/li>\n<li><strong>Meta CAPI<\/strong> \u2014 Facebook\/Instagram Conversions API with email and phone hashing<\/li>\n<li><strong>LinkedIn CAPI<\/strong> \u2014 LinkedIn Conversions API<\/li>\n<li><strong>Data Manager API<\/strong> \u2014 dual-write to Google's Data Manager API<\/li>\n<li><strong>Lead conversion slots<\/strong> \u2014 map specific forms to specific Google Ads conversion actions<\/li>\n<li><strong>License management<\/strong> \u2014 secure per-domain licensing<\/li>\n<\/ul>\n\n<h4>Supported Consent Tools<\/h4>\n\n<ul>\n<li>Cookiebot<\/li>\n<li>Complianz<\/li>\n<li>OneTrust<\/li>\n<li>Real Cookie Banner v3<\/li>\n<li>Borlabs Cookie<\/li>\n<li>iubenda<\/li>\n<li>Moove GDPR<\/li>\n<li>CookieScript<\/li>\n<li>WP Cookie Notice<\/li>\n<li>Custom banner (cookieConsent cookie)<\/li>\n<\/ul>\n\n<h4>External Services<\/h4>\n\n<p>This plugin sends data to the following external services:<\/p>\n\n<ul>\n<li><strong>Google Analytics<\/strong> (analytics.google.com) \u2014 to send purchase and lead events via the Measurement Protocol. <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a><\/li>\n<li><strong>s2s-plugin.tj-da.com<\/strong> \u2014 to verify DPA (Data Processing Agreement) acceptance. No personal data is sent; only a domain verification request is made. <a href=\"https:\/\/s2s-plugin.tj-da.com\/privacy.php\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h3>Additional Information<\/h3>\n\n<p>S2S Conversions was built out of frustration with the growing gap between what web analytics reports and what actually happens. Ad blockers, iOS tracking prevention, and payment redirects cause a significant portion of conversions to go unrecorded \u2014 meaning marketers make decisions based on incomplete data.<\/p>\n\n<p>The solution is straightforward: send conversion events from the server instead of the browser. The server always fires. It doesn't get blocked. It doesn't lose session data during a payment redirect. And because it captures the GA4 session ID before any redirect happens, conversions are attributed to the right channel \u2014 Google Ads, Meta, Organic \u2014 instead of showing up as Unassigned or Direct.<\/p>\n\n<p>This free version focuses entirely on GA4 and handles the most common scenarios: WooCommerce purchases and form submissions. It works alongside your existing Google Tag Manager setup, not instead of it.<\/p>\n\n<p>If you need server-side tracking for Google Ads, Meta CAPI or LinkedIn CAPI, the Pro version at <a href=\"https:\/\/s2s-plugin.tj-da.com\">s2s-plugin.tj-da.com<\/a> covers those platforms with the same approach.<\/p>\n\n<p>Built by <a href=\"https:\/\/tj-da.com\">Thijs Joosten Digital Acquisition<\/a> \u2014 a digital marketing specialist focused on measurement, attribution and conversion optimisation.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress plugin screen<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress<\/li>\n<li>Go to <strong>Settings \u2192 S2S Conversions<\/strong><\/li>\n<li>Accept the Data Processing Agreement<\/li>\n<li>Enter your <strong>GA4 Measurement ID<\/strong> and <strong>API Secret<\/strong> (find these in GA4 \u2192 Admin \u2192 Data Streams \u2192 Measurement Protocol API Secrets)<\/li>\n<li>Save settings<\/li>\n<\/ol>\n\n<h4>Getting your GA4 API Secret<\/h4>\n\n<ol>\n<li>Open <a href=\"https:\/\/analytics.google.com\">Google Analytics<\/a><\/li>\n<li>Go to <strong>Admin \u2192 Data Streams \u2192 click your web stream<\/strong><\/li>\n<li>Scroll to <strong>Measurement Protocol API secrets \u2192 Create<\/strong><\/li>\n<li>Copy the secret and paste it into the plugin settings<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20replace%20my%20google%20tag%20manager%20setup%3F\"><h3>Does this replace my Google Tag Manager setup?<\/h3><\/dt>\n<dd><p>No \u2014 it complements it. Keep your existing GTM setup for pageviews, events and other tracking. This plugin adds a server-side layer specifically for purchase and lead conversions that are often lost due to ad blockers or payment redirects.<\/p><\/dd>\n<dt id=\"will%20this%20work%20without%20woocommerce%3F\"><h3>Will this work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes! The plugin works without WooCommerce for lead\/form tracking. WooCommerce is only required for purchase tracking.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20mollie%2C%20ideal%20or%20other%20payment%20providers%20that%20redirect%20away%20from%20the%20site%3F\"><h3>Does this work with Mollie, iDEAL or other payment providers that redirect away from the site?<\/h3><\/dt>\n<dd><p>Yes \u2014 this is one of the main benefits. The plugin captures all session data before the payment redirect. Even when a customer is redirected to an external payment page and back, the conversion is correctly attributed.<\/p><\/dd>\n<dt id=\"is%20this%20gdpr%20compliant%3F\"><h3>Is this GDPR compliant?<\/h3><\/dt>\n<dd><p>Yes. GA4 events contain no personally identifiable information \u2014 only a pseudonymous client_id and session_id. The plugin respects your visitor's consent settings and only fires after the appropriate consent has been given (configurable per consent tool).<\/p><\/dd>\n<dt id=\"what%20consent%20tools%20are%20supported%3F\"><h3>What consent tools are supported?<\/h3><\/dt>\n<dd><p>Cookiebot, Complianz, OneTrust, Real Cookie Banner v3, Borlabs Cookie, iubenda, Moove GDPR, CookieScript, WP Cookie Notice, and a custom cookie banner.<\/p><\/dd>\n<dt id=\"what%20is%20action%20scheduler%20and%20do%20i%20need%20it%3F\"><h3>What is Action Scheduler and do I need it?<\/h3><\/dt>\n<dd><p>Action Scheduler is used to process conversions asynchronously (in the background). It comes bundled with WooCommerce. If you don't have WooCommerce, install the free <a href=\"https:\/\/wordpress.org\/plugins\/action-scheduler\/\">Action Scheduler<\/a> plugin by Automattic for best results. Without it, the plugin falls back to WordPress cron, which is less reliable.<\/p><\/dd>\n<dt id=\"where%20can%20i%20find%20the%20debug%20log%3F\"><h3>Where can I find the debug log?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 S2S Conversions<\/strong> and scroll to the bottom. The debug log viewer shows the last 200 lines of the log file in real time.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.26<\/h4>\n\n<ul>\n<li>Improved: consent detection hardening across all supported consent tools<\/li>\n<li>Improved: session capture reliability during payment redirects<\/li>\n<li>Fixed: various stability and compatibility fixes since 1.0.17<\/li>\n<\/ul>\n\n<h4>1.0.17<\/h4>\n\n<ul>\n<li>Added: form tracking for Contact Form 7, WPForms, Gravity Forms, Elementor Pro Forms<\/li>\n<li>Added: session_id tracking for correct channel attribution in GA4<\/li>\n<li>Added: debug log viewer in settings page<\/li>\n<li>Added: support for all 10 major cookie consent tools<\/li>\n<li>Added: Action Scheduler notice when not installed<\/li>\n<li>Improved: purchase payload now includes items, shipping and tax<\/li>\n<li>Fixed: lead events now correctly queued via Action Scheduler on non-WooCommerce sites<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 GA4 server-side purchase tracking via Measurement Protocol<\/li>\n<\/ul>","raw_excerpt":"Server-side GA4 tracking via the Measurement Protocol. Adblocker-proof, GDPR-ready, and free forever.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/319095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=319095"}],"author":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thijsjoostenda"}],"wp:attachment":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=319095"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=319095"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=319095"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=319095"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=319095"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=319095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}