Features

Deep where it counts.

Relay isn't a thin wrapper over someone else's SDK. Each pillar is a real, shipped subsystem — here's what's actually inside.

Privacy-first analytics

Measure people without tracking them.

Real, useful numbers built on a privacy floor you can defend to a DPO — not a cookie banner bolted on afterward.

Cookieless

No banner for the basics

Basic analytics needs no consent banner. Identity is a daily-rotating salted hash that's unlinkable after two days.

Privacy floor

Raw IP & UA never stored

Sensitive identifiers are dropped at ingest. What lands in your database is already anonymized.

Attribution

Credit without surveillance

First, last, and linear-touch attribution — computed same-day only, so you get channel insight without a permanent identity graph.

First-party

Beacons hit your domain

Events go to your own ingestion endpoint, not a third-party tracker — better data quality, fewer blocked requests.

Server ingest

Offline & CRM conversions

POST events from a backend with a server ingest key; they flow through the same outbox and show up in the same trace.

Own your data

Self-hosted, unsampled

Your analytics live in your own database — no sampling thresholds, no export limits, no vendor lock-in.


Tag manager

A GTM-class container, built to not break.

Everything you expect from a visual tag manager, plus guardrails that stop a bad publish before it ships.

Tags

3 tag types

Event, pixel, and custom-HTML tags — the full range from a tracked click to an arbitrary marketing snippet.

Triggers

10 trigger types

Scroll depth, timers, element visibility, form-submit, history-change, JS-error, and more — no code required.

Variables

Lookup & regex tables

Map inputs to values with lookup and regex-table variables, then reference them across tags and triggers.

Preview

Tags / Variables / Errors

Preview mode shows exactly which tags fired, every variable's resolved value, and any errors — before you publish.

Consent

Consent gating

Gate any tag behind consent state so regulated pixels only fire when they're actually allowed to.

Safety

Lint blocks bad publishes

A 12-rule container lint runs on publish and blocks the release if it would ship something broken.

Versioning

Publish & rollback

Every publish is a version. Roll back to any previous container state in one click.

Migration

One-click GTM import

Import an existing GTM container and get an honest report of what mapped cleanly, what was approximated, and what was skipped.

Honest

No silent approximations

When a GTM feature can't map 1:1, Relay tells you — instead of quietly guessing and drifting your setup.


Server-side forwarding

Your own first-party event gateway.

The sGTM / Stape-class layer — running on your domain, in your cloud, with delivery guarantees you can inspect.

Loader

~2KB, on-demand chunk

A tiny first-party loader pulls the rest on demand — fast to load, light on every page.

Resilience

Anti-adblock loader path

A custom first-party loader path plus a Google Tag Gateway reverse proxy serve gtag.js first-party, past most blockers.

Destinations

GA4, Meta, Reddit, LinkedIn

Forward to GA4 and the major Conversions APIs, plus a generic HTTP/webhook destination with HMAC signing.

Reliability

Transactional outbox

Every event goes through a transactional outbox with automatic retries — nothing is fire-and-forget.

Recovery

Dead-letter management

Events that exhaust retries land in a dead-letter queue you can inspect, fix, and replay — not silently lost.

Control

Per-destination shaping

Filter events, map fields, add delays, and batch-flush independently for each destination.

Proxy

Google Tag Gateway

Serve gtag.js from your own domain via the reverse proxy — first-party Google tags with fewer blocked requests.

Security

HMAC-signed webhooks

Your generic HTTP destination can sign every payload with HMAC so downstream systems can verify authenticity.

Privacy

User-data hashing

Match keys like phone are SHA-256 hashed before they leave for a destination — the raw value is never forwarded.


Diagnostics

Proof, not hope.

The part no other stack gives you: a straight answer to "did my conversion actually arrive?"

Trace

End-to-end waterfall

Follow one event from the browser, through the server, out to every destination — with each real HTTP response inline.

Verdict

Plain-language answers

"Your purchase reached GA4 — proof." No decoding status codes; Relay tells you in words whether it worked.

Replay

Then-vs-now diff

Replay a past delivery and diff what would send today against what sent then — catch config drift instantly.

Integrity

Duplicate-conversion detection

Relay flags the same conversion firing twice so you don't over-report ROAS to your ad platforms.

Alerts

Proactive alert rules

Get notified on dead-letter thresholds or a destination that's gone silent — before someone asks why numbers dropped.

Export

Delivery-log export

Export the full delivery log to Azure Blob for your own auditing, warehousing, or compliance retention.


Deployment

One app. Your infrastructure.

No microservice sprawl, no data leaving your control.

Single app

One ASP.NET Core service

Analytics, tag manager, and gateway ship as a single self-contained ASP.NET Core app — easy to run and reason about.

Cloud

Scale-to-zero on Azure

Deploy to Azure with scale-to-zero so it costs nothing when idle and wakes on the first request.

Local

Runs fully offline

Run the entire stack on your laptop with no internet — ideal for development, demos, and air-gapped testing.

See it live View pricing