
Google Tag Manager Server Side Integration Made Easy
If you are looking for the easiest way to implement server-side tracking on your WordPress website, the GTM Server Side plugin by stape.io is the best solution. It helps to easily modify the gtm script with the tagging server URL, adds a custom loader, and sends data layer events and webhooks.
GTM Server Side plugin by stape.io features:
- Add web Google Tag Manager script on every website page.
- Work with any other WP plugin that inserts gtm script on the website.
- Adds custom loader, which makes Google Tag Manager and Google Analytics tracking invisible to ad blockers and other tracking prevention mechanisms.
- Sends events to GTM server side without any JS library and optimizes page speed.
- Adds e-commerce Data Layer events.
- Adds user data to Data Layer events.
- Sends webhooks.
- Provides the possibility to manage dynamic generation of data layer fields.
- Native Same Origin proxy.
Benefits of GTM Server Side plugin by stape.io:
- Increase cookies lifetime when using a custom domain for server Google Tag Manager container.
- Increases the accuracy of tracking when the custom loader is enabled.
- Simplifies the process of adding GTM script on the website and delivering e-commerce and user data.
Screenshots

General plugin settings.

Data Layer settings.

Webhooks settings.

Menu item in the settings panel.
FAQ
ChangeLog
2.3.5
- Fixed the same-origin loader rewrite so that only the proxied loader URL is changed from “.js” to “.load”, leaving the gtm.js bootstrap event name and third-party URLs untouched.
- The “.js” to “.load” rewrite is now applied to every generated loader snippet, including the ones refreshed by cron.
- Fixed same-origin proxy responses that set more than one cookie: repeated Set-Cookie headers are no longer merged into a single malformed header.
2.3.4
- Fixed a “Cannot modify header information” warning caused by the cookie keeper running on WP-Cron and WP-CLI requests.
2.3.3
- Added a proxy status check that confirms the server_container_url to use in web GTM once the same-origin proxy path is verified.
- Same-origin settings are now validated before saving: the proxy path must start with “/” and the container API key must match the expected format.
2.3.2
- Extended item_brand sources in Advanced parameters: all product taxonomies are now selectable.
2.3.1
- Fixed HTML entity serialization in product item_name and item_category fields for Data Layer ecommerce events and webhook item payloads.
2.3.0
- Introduction of Same Origin functionality.
2.2.0
- Introduction of Dynamic Data Layer configuration.
2.1.48
2.1.47
- Fixed “gtm_server_side_order_id” cookie.
- Added EU endpoint for custom loader.
2.1.46
- Tested up to WordPress 7.0.0
2.1.45
- Exclude GTM from loading for specific WordPress user roles.
2.1.44
- Added Consent-Based GTM Injection.
2.1.43
- Customer loader creation via API is enabled.
2.1.42
- Added customer loader via API.
- Fixed “gtm_server_side_state_cart_data” ajax request.
2.1.41
- Tested up to WordPress 6.9.0
2.1.40
- Added “cart_state” to DataLayer
2.1.39
- Rename “product” to “accountType”
- Added some cookies to the purchase webhook list
2.1.38
- Added “select_item” event
2.1.37
2.1.36
- Added imageUrl field to dataLayer
- Added header “x-stape-app-version”
2.1.35
2.1.34
2.1.33
- Add description for tab Customer Match
2.1.32
- Added “Customer Match” settings
- Fix: new_customer value
2.1.31
- Request parameters have been changed
2.1.30
- Added discount for order item
2.1.29
- Tested up to WordPress 6.8.0
2.1.28
- Tested up to WordPress 6.8.0
2.1.27
- Tested up to WordPress 6.7.1
2.1.26
- Send discount amount in webhook
2.1.25
- Removed “Stape Analytics support” setting
2.1.24
- Added Order paid completed webhook
- Added cart_hash key to webhooks
2.1.23
2.1.22
- Tested up to WordPress 6.7
2.1.21
- Fix purchase event
- Removed iframe code
- Fix remove product from cart
2.1.20
- Change JS code
- Added option “Stape Analytics support”
2.1.19
- Added “view_item_list” event
- “ecomm_pagetype” key added to dataLayer
- Added Order paid webhook
2.1.18
- Added sending ga* cookies to webhook for a new order
2.1.17
- Tested up to WordPress 6.6
2.1.16
- Hidden option “Update existing web GTM script”
2.1.15
- Removing empty field fields user_data before sending event
2.1.14
- Added sending – Decorate dataLayer event name
2.1.13
2.1.12
- Add more cookies to the list of cookies that are sent to the server
2.1.11
- Tested up to WordPress 6.4.2
2.1.10
- Changed validation for field – Server GTM container URL
2.1.9
- Tested up to WordPress 6.4
2.1.8
2.1.7
- Tested up to WordPress 6.3
2.1.6
- Fix session bug
- Added sending cookies
- Add events: view_cart, remove_from_cart
2.1.5
- Fix bug with versions numbers
2.1.4
2.1.3
- Settings field “GTM server container URL” is not required
2.1.2
- Added support for WordPress 6.2
2.1.1
- Fix user data on purchase event
2.1.0
- Added setting “Cookie Keeper”
2.0.2
- Updated description and screenshots
2.0.1
- Updated description and screenshots
2.0.0
- Changed plugin settings page. Added two new tabs – Data Layer and Webhooks.
- Added integration with WooCommerce plugin.
- Data Layer tab. Added the ability to track e-commerce events for the Data Layer – Login, SignUp, ViewItem, AddToCart, BeginCheckout. Including user data.
- Webhooks tab. Added the ability to send Purchase or Refund data to a third-party URL.
1.1.4
- Added support for WordPress 6.1
1.1.3
- Added support for WordPress 6.0
1.1.2
1.1.1
- Added support for WordPress 5.9
1.1.0
- Added support of Stape custom loader.
1.0.5
- Update regarding Gtm Server to Stape rename.
1.0.4
- Fixed issues regarding GTM SS debugger
1.0.3
- Added support for WordPress 5.7
- Added more links to how to setup instructions
1.0.2
1.0.1
1.0.0