Skip to content
🚧 Work in progress. These docs are being written alongside TagPiper and will change before the Q4 2026 release. Something missing or wrong? Use Edit this page at the bottom to improve it.

What is TagPiper? ​

TagPiper is the lightweight, open-source server-side tagging alternative to Google sGTM: a server-side tag manager that you host yourself. It receives tracking requests on your own domain (for example GA4 hits from gtag.js), turns them into events, and forwards those events to vendors such as Google Analytics. It does this from your server, not the visitor's browser.

It follows the model of Google server-side Tag Manager (Google sGTM) and runs the same kind of templates:

  • Clients look at each incoming request. The client that recognises a request claims it, builds event data from it and calls runContainer(event).
  • Tags run for each event and send it somewhere, such as the GA4 collection endpoint.

Your Google sGTM templates, mostly as they are ​

We replicated the current Google sGTM sandboxed JavaScript API for templates. It has the same require() names, the same arguments and return values, and the same sandbox rules, down to the validator's error messages. Most Google sGTM templates can be used directly. The exceptions are templates that use an API TagPiper doesn't have yet (such as Firestore, BigQuery or cookies) or that rely on one of the few documented differences. See Template compatibility and the API reference.

What you get ​

Why I built it (learning, lower running costs, native extensibility and a fully auditable server) is told on Why TagPiper?.

  • Fast and small. Written in Rust on axum, with a pool of warm QuickJS VMs. Outgoing hits go out from a background queue, so a slow vendor never slows down your visitors.
  • Multi-core. Google sGTM runs on Node.js, which is single-threaded, so each instance uses one core. TagPiper uses every CPU core it's given, with HTTP threads and JavaScript VMs on each one.
  • Self-hosted. One static binary, shipped on a scratch image. It sizes itself from the container's CPU and memory limits.
  • Reliable. Failed sends are retried with backoff. The queue drains on shutdown, and every hit is counted in /system.
  • Safe by default. Templates can't reach private addresses or cloud metadata. The playground and debug pages can be locked behind a token.
  • Easy to debug. A browser playground for running templates, and a debug view for real hits.

Status ​

Public release: Q4 2026

TagPiper will be publicly released in Q4 2026. It is open source: the server source and the Docker image will both be published then. Until the release, it is in development and runs a built-in container with a GA4 client and a GA4 tag. See Built-in templates.

A self-hosted management UI for containers, tags, firing rules, variables, stats and monitoring is in development.

Builds ​

Builds will be ready with the Q4 2026 release, all in one place: ghcr.io/tagpiperlabs/sst-server on GitHub Container Registry, for linux/amd64 and linux/arm64. Every release will be published there under its version number and as latest. See Binary & Docker image.

TagPiper is a TagPiper Labs project by Analytics Debugger S.L.U..

Next steps ​