Logo of TAGGRS, written in blue and with a small favicon
HomeServer-side TrackingMeta CAPI GatewayJoin the competition
SERVER-SIDE TRACKING
Get started
Get started with TAGGRSSet up Google Tag ManagerAdd the GTM Data LayerConfigure GTM transformationsTest the setupDebuggingAnalytics dashboard
Migrate from Google CloudMigrate from hosting
Shortcuts
GTM Copy PasteReady-made templates
GA4 Server-side Tracking
Setup in GTMCreate GA4 Event TagsGA4 tag setup in server containerE-commerce events in GTM
Google Ads Server-side Tracking
Install Conversion LinkerSet up Conversion TrackingConfigure Enhanced ConversionsDeploy Remarketing TagsInstall Offline Conversions
Facebook Server-side Tracking
Set Meta PixelImprove your EMQ ScoreInstall Meta CAPIMeta Events Deduplication
LinkedIn Server-side Tracking
Install LinkedIn Insight TagSet up LinkedIn CAPILinkedIn Events Deduplication
TikTok Server-side Tracking
Set up TikTok PixelInstall TikTok Events APITikTok Events Deduplication
Pinterest Server-side Tracking
Set up Pinterest TagConfigure Pinterest Conversions APIPinterest Events Deduplication
Snapchat Server-side Tracking
Set up Snap PixelSnapchat Conversions APISnapchat Events Deduplication
TAGGRS Tracking Tags and Tools
Tracking TagsGoogle Service Account integrationsGTM LogsProfit TrackingData Enricher ToolWebhooks TesterEnhanced Tracking ScriptMulti Domain ToolClick ID RecoveryConsent Tool
Configurations
Billy Grace Server-side TrackingLeadPages Server-side TrackingPiwik PRO Server-side TrackingCDN Server-side TrackingShopify Server-side TrackingActiveCampaign Server-side TrackingKlaviyo Server-side TrackingSpectacle Server-side TrackingEulerian Server-side Tracking
Server-side Tracking for e-commerce
Shopify Data LayerShopware Data LayerMagento Data LayerWooCommerce Data LayerPrestashop Data LayerLightspeed Data Layer
Consent Management server-side
Activate Consent ModeConfigure AxeptioConfigure Cookie Confirm
META CAPI GATEWAY
ACCOUNT SETTINGS
User roles and access

Tracking tags

This guide provides a clear, step-by-step process for configuring TAGGRS Tracking tags client-side and then pass the tracked events server-side with TAGGRS. This way, you can activate an accurate first-party data pipeline and measure the tangible impact of server-side tracking to future-proof your marketing efforts.

Prerequisites

  • TAGGRS account
  • Google Analytics 4 (GA4) configured to use the GA4 page_view data correctly
  • Google Tag Manager web and server containers set up
Logo of TAGGRS Server-side Tracking: a light blue circle with two blue angle brackets
The TAGGRS Tracking Tags must be configured in both the web container and the server container.

Configure the tags on the client-side

Step 1: Product ID

Within your TAGGRS container, locate the product ID and copy it.

Step 2: Get the tag

Visit the GTM template gallery to find the TAGGRS tags you need. Choose the access method you prefer: 

  • Live GTM template, to get instant access and automatic updates.
  • Download JSON, to have a static copy of the template for manual import. Great for offline work or custom modifications.

If you choose the live version, follow the instructions sent to you via email. If you prefer to use the JSON file, instead, follow the steps outlined below.

Step 3: Tag upload Google Tag Manager

Now that the tag file has been downloaded, you can start uploading the tag on Google Tag Manager. Go to your web container. Within your workspace, click to Templates and click New under tag templates.

Then click on the 3 dots at the top right and click Import.

Make sure the downloaded zip file is extracted, you do this by opening the file.

Once this is done you can upload the file to Google Tag Manager. As shown in the example below you only need to upload template.tpl. Then click Save and the TAGGRS tracking tag - client side is uploaded and ready to use.

Step 4: Create new trigger All Events

Before setting up TAGGRS Tracking Tags, we need to create a trigger. This trigger will ensure that all events are taken and forwarded to TAGGRS, giving you the most insight into the actual data difference. We differentiate between several events including:

  • Page_view
  • View_item
  • Add_to_cart
  • Add_to_cart

Go to the client container in Google Tag Manager. Within your workspace, go to Triggers, then click New.

Step 5: Trigger configuration

Give the trigger a name such as GA4 - All events and choose Custom event as the trigger type under Trigger configuration.

Logo of TAGGRS Server-side Tracking: a light blue circle with two blue angle brackets
Expert insight
Events will only appear in the analytics dashboard if they are measured from both the client side and the server side under the exact same name (Pageviews excepted). This may not always be the case when using an All Events trigger.

If the event names received on the server differ from the (default) event names/actions used to trigger the corresponding client-side GA4 tags, we recommend creating separate TAGGRS tracking tags in your client container. This approach provides more flexibility and makes it easier to analyze and compare data differences for specific events.

Step 6: Set the trigger

Under event name, enter .*. Then check Use matching regular expression. Under This trigger is triggered for, select All custom events. Then save the trigger.

Step 7: Create the tag

Now that we have created the trigger, we are going to create and set up the TAGGRS Tracking Tag. Go to the web container in Google Tag Manager. Within your workspace, go to Tags and then click New.

Step 8: Tag configuration

Click on Tag configuration. Then under Custom, click the client-side tracking tag of TAGGRS.

Step 9: Set the tag

Under Identifier, enter the Product ID you copied from your container in the TAGGRS dashboard. Then click on the + at Event name and select Event.

Step 10: Set the trigger

We want to measure the data on all pages and events to properly show the difference in data. As a trigger, choose the GA4 All events trigger you just created. Then give the tag a name and click Save.

All events in the data layer are now integrated. If you want to track additional events, such as form submissions, you need to create a specific tracking tag for this. Then choose the desired event as the trigger for this tag.

The events are now passed client side to TAGGRS. To measure the difference in data we need to start doing the same for the server side. This works the same way as the client side tag.

Configure the tags on the server-side

Step 1: Create the tag

Go to the server container in Google Tag Manager. Within your workspace, go to Tags, then click New.

Step 2: Tag configuration

Like the client side tracking tag, the server side tracking tag must be downloaded from GitHub and uploaded to Google Tag Manager. To do this, follow the same steps as the client side tracking tag, but now download the server side tracking tag.

Once it is uploaded on Google Tag Manager, we can start installing the tag. Click on Tag configuration. Then under Custom, click on TAGGRS server-side tracking tag.

Step 3: Set the tag

As with the client side tracking tag, enter the product ID under Identifier. Then select Event Name under Event name.

Step 4: Set the trigger

Next, we're going to set the trigger. Not using consent mode? Choose GA4 Client as the trigger.

Do you use consent mode? Then add the trigger GA4 Client + Analytics storage. This way you will comply with the consent rules and avoid large data differences within the TAGGRS dashboard.

Then give the tag a name and click Save. Don't see GA4 Client listed? Check out this blog to create a GA4 tag with associated trigger in the server container. Once set up, the trigger will appear.

Successful? Nice going! Now go to your container within TAGGRS. The effects of Server Side Tagging are now measured per event, top!

Troubleshooting common Shopify Server-side Tracking issues

1. How to further increase the data difference

If you already see a positive difference and want to increase it further:
• Implement the Enhanced Tracking Script. It improves client-side resilience against advanced ad blockers (≈1–2% uplift)
• Enable Cookie Recovery. It restores tracking cookies removed by Safari and iOS. Mind: it requires the Enhanced Tracking Script.
• Use Webhooks for critical events.
It ensures purchases are tracked even if users close payment flows early. Please mind that it is not not suitable for Google Ads (no GCLID support).

2. Negative data difference between client and server

A negative data difference means that fewer events are received server-side than client-side. This is usually caused by configuration issues rather than TAGGRS itself. Below are the 6 most common causes, ordered from most to least frequent, along with practical guidance on how to identify and resolve them.

2.1 Duplicate client-side events

Many websites have evolved over time and often contain old GA or GA4 scripts, direct Google Analytics integrations, plugins that inject tracking code, and a Google tag configured outside GTM. When this happens, client-side data is sent multiple times, while only one stream reaches the server container. If you see more than two “container loaded” blockchain your GTM Preview mode for the web container, extra tracking is active.
‍
How to fix:
1. Remove legacy GA / gtag scripts
2. Ensure GA4 is implemented only via GTM
3. Use one single Google tag as the data source.

2.2 Cookie banner disrupts server-side data flow

Some cookie banner solutions block tracking requests selectively. In certain setups, the client-side tracking tag still fires and the GA4 / Google tag request to the server container is blocked until consent is given. This results in client-side data being collected while Server-side Tracking is suppressed.

Common scenario:
• You browse the site before accepting cookies
• Client-side TAGGRS tracking fires
• Server-side data does not arrive

How to fix:
1. Configure Consent Mode v2 correctly in the web container
2. Ensure that analytics storage consent is aligned for client-side TAGGRS tracking tag and server-side TAGGRS tracking tag.
‍
Mind: disabling automatic cookie blocking may solve the issue but is not compliant with privacy regulations.

2.3 Duplicate Google Tag Manager scripts in the code

In some cases, GTM is loaded multiple times: 1x manually in the code and 1x via a CMS or plugin. This can disrupt event flow and data forwarding to the server container.
‍
How to detect:
Right-click → Inspect → search for GTM-. If you find the same container ID twice, one must be removed.

2.4 GA4 web to server container data flow is blocked

Ad blockers can sometimes block the request from the web container to the server container, even if server-side tracking itself is functioning. It happens when client-side tracking still works and fewer events reach the server container.
The data difference decreases
This effect is usually small but noticeable in the TAGGRS dashboard.

Mitigation:
1. Use the Enhanced Tracking Script
2. Enable the anti-adblocker option to reduce request blocking.

2.5 Additional direct GA4 integrations

If GA4 is implemented outside of GTM (for example via a plugin), some requests may bypass Google Tag Manager entirely. As a result: not all events are forwarded to the server container and Server-side Tracking receives fewer events than expected.
‍
How to check
1. Inspect the page source for gtag( calls
2. Look for GA4 plugins in your CMS
3. Verify that GA4 is routed exclusively through GTM.

Consent Mode additional consent misconfiguration

When using Consent Mode v2, consent settings must be consistent on both sides.
A common mistake? Analytics storage is added to the server-side tracking tag but not applied to the client-side tracking tag (or vice versa). This mismatch can result in client-side events firing and/or server-side events being blocked.
‍
Best practice:
1. Apply analytics storage consent to both client-side TAGGRS tracking tag and server-side TAGGRS tracking tag.
2. Use the trigger GA4 Client + analytics storage in the server container.

3. Events missing in “Additional data per event”

If only page_view appears, the trigger is likely set to All Pages instead of All Events.
You can fix it by updating the trigger to use Custom Event with regex .*

4. Unrealistically high data difference (>60%)

Most common reasons:
• Consent mode active in web container but not in server container
• Duplicate events added directly in GA4
• Server-side Tracking tag firing without a specific GA4 client
• Additional direct GA4 integration bypassing GTM.

Always specify GA4 Client in server-side triggers.

5. Only client or server line visible

Check the following in order:

1. Both containers are published
2. Tracking tags exist in both containers
3. DNS is validated in TAGGRS
server_container_url is set in the Google tag
4. No SSL or 502 errors on the subdomain
5. CSP allows GTM and the server-side subdomain
6. No duplicate GTM or gtag scripts
7. Triggers are correctly configured.

6. “Data is being collected” message persists

Possible causes are:

• Fewer than 10 events recorded (minimum threshold)
• Data processing delay (up to 30 minutes)
• Incorrect trigger configuration

Use GTM Preview mode to verify that both tracking tags fire correctly.

TAGGRS Tracking Tags FAQs

What Consent State should I use for Tracking Tags in Consent Mode V2?

We use the info for statistics for our TAGGRS Server Side Analytics. So for Consent Mode V2 you can use statistics as Consent State for our tracking tags.

We recently installed TAGGRS Tracking on both the client and server side to measure how much additional data is coming in via server side tracking. We see data coming in to TAGGRS, but our dashboard still gives the message "Unlock this feature"

There may be a delay of up to 48 hours before changes are fully processed and displayed correctly on the dashboard.

Useful resources

icon of a white thunder used by TAGGRS to visually introduce Server-side Tracking
Start for free with Server-side Tracking
icon of a white upward arrow
White silhouette of a person used as icon for the support call to action
Get expert support
icon of a white upward arrow
Previous
TAGGRS Tags and Tools
Next
Google Service Account integration
DOCUMENTATION V1.4
Copyright © 2026 TAGGRS. All right reserved.
TABLE OF CONTENTS
PrerequisitesConfigure the tags on the client-sideConfigure the tags on the server-sideTroubleshootingFAQsUseful resources