You tagged every campaign URL with clean UTMs, and your GA4 numbers still do not match reality. Some channels strip the parameters in their in-app browser. Some platforms overwrite the source on the way through. Direct traffic balloons with sessions you know came from a campaign. By the time the monthly review comes around, you are reconciling three systems by hand and quietly discounting the dashboard because nobody trusts it. The cost is not just the wasted afternoon. It is every budget decision made on numbers you cannot defend.
UTMs are not the problem, and you should keep using them. The problem is what UTMs are: a label painted on the destination URL, entirely dependent on the landing page being instrumented perfectly and every downstream tool reading it correctly. This is a playbook for making the click or scan itself a first-class event you deliver to your analytics tools directly, so the campaign signal arrives even when the URL label does not.
Why UTMs leak
A UTM answers one question: what campaign context did we attach to this visit? It answers nothing about whether the interaction actually reached the analytics system you rely on. That gap is where the numbers go missing.
The destination page has to do all the work. The page analytics has to be present and correct, every downstream platform has to be configured separately, and there is no shared place to see whether an event was delivered. For one campaign that is manageable. Across dozens of campaigns spanning web, print, partner placements, and QR, it becomes a recurring set of blind spots you only notice at reporting time.
Capture the event at the link layer
Server-side forwarding puts an event between the click and the destination. When a visitor clicks a branded short link or scans a QR code, Nimriz records a canonical event with the campaign, geo, device, referrer, and routing context that belongs to that interaction, then delivers it to the analytics tools you have connected. The destination page no longer has to reconstruct the event from a URL it may never have received intact.
That gives you a short-link interaction signal in analytics directly, instead of inferring everything from pageviews that may have lost their UTMs in transit.
Map one event to many destinations
Every platform wants a different payload shape. GA4 expects Measurement Protocol fields, Segment expects a track call, Amplitude expects its own event model. Translating one short-link event into three schemas by hand is exactly the kind of repetitive integration work that drifts out of sync over time.
Nimriz keeps one canonical event internally and applies the mapping each destination needs. A marketing team can start with sensible defaults on a named connector and be done. A data team can layer in mapping overrides later to shape the feed for a warehouse or BI workflow, without rebuilding the pipeline. The exact mapping configuration lives in the integrations overview.
A retail QR campaign, end to end
Make it concrete. A retail team launches in-store displays with QR codes and wants those scans in GA4 with campaign metadata intact, not guessed at from landing-page traffic.
They connect a GA4 destination in Nimriz and confirm the mapping with a test send before any real scans arrive. They keep the initial feed narrow by filtering to the campaign's domain so unrelated traffic stays out. Shoppers scan the displays, and each scan is captured at the link layer and forwarded to GA4 as a clean event, while the destination URL still carries its UTMs for the page itself. The growth team, meanwhile, routes the same campaign's short-link clicks through a Segment destination so they join the rest of the customer-journey model in the warehouse. One canonical event, two destinations, no hand-translation, and a scan signal in GA4 that does not depend on whether the landing page fired correctly.
Filter and respect privacy before anything leaves
Two disciplines keep this trustworthy.
Filter on purpose. The most common mistake is sending everything to every destination, which buries the signal in noise fast. Treat each destination as a purposeful feed: QR-heavy traffic to a QR-focused property, client-specific events to that client's source, internal or bot-heavy traffic excluded before it lands anywhere. The useful question is not "do we forward analytics" but "which events belong in which system."
Let privacy live at the canonical event, not the connector. Nimriz hashes IP and User-Agent and applies redaction before destination mapping, so the rules are enforced once at the event layer rather than as something each team has to remember to configure on every connector. Strict privacy mode trims the outbound field set further. Downstream feeds stay useful without ever needing raw IPs, which matters most when different teams own different destinations.
Verify delivery instead of assuming it
A connector is an event pipeline, and pipelines need observability. Before you trust a feed, validate the mapping with a test send and confirm the event names and properties are actually useful in the destination's real reporting surfaces, not just present. After it is live, the delivery-health view tells you whether events are arriving and surfaces recent failures, so you find a broken feed yourself instead of discovering it during a review three weeks later. The test-send and delivery-health surfaces are documented in the integrations overview.
What you get back
Your short-link interactions stop being trapped in one dashboard and start flowing into the rest of your measurement stack in a controlled, observable way. The result is campaign numbers that are easier to reconcile, because the click and scan events arrive directly rather than surviving a fragile relay through the URL. Measure it by how much smaller the gap gets between your link activity and what your analytics tool reports.
Connect your first destination with the integrations overview and the GA4 setup guide. For how forwarded events combine with UTM-based attribution across channels, see multi-channel attribution.