Illustration: scattered campaign artifacts — a bit.ly link, a linktree, a flyer PDF, a hand-typed UTM spreadsheet cell, a paid-social tracking URL — converge one by one into a single branded link, go.acme.com/spring-sale, which feeds one scoreboard counting 3,606 taps and scans across four channels.

Solutions · Marketing teams

Track & route every campaign.

Most campaigns scatter into bio links, QR flyers and newsletter buttons that all report somewhere else — so nobody can say which one worked. One rii.link carries the whole loop: planned, launched, measured, optimized.

A live campaign

One link becomes the whole campaign.

Follow go.acme.com/spring-sale from brief to retarget. The card on the left is the same link the entire way — it never gets recreated, it just picks up new jobs.

01 / 04

Interactive: one campaign link, go.acme.com/spring-sale, followed through four stages. The card on the left is the same link the whole way — Plan locks the UTM set, Launch activates four routing rules, Measure counts 3,606 taps and scans across four channels, Optimize streams every event to GA4, Zapier and Slack via signed webhooks.

DRAFTUTMs locked · not public yet
go.acme.com/spring-sale
→ spring.acme.com/sale
created May 2 · owner mira@acme
UTM set01campaign=spring-sale · source=«channel», baked in
Routing024 rules — device, geo, date
Traffic030 taps + scans · 4 channels
Streams out04GA4 (webhook) · Zapier · Slack

Same link, four jobs. Nothing was duplicated, re-tagged or re-printed between stages.

STAGE 01Plan — the brief becomes a link

Name the campaign, set the destination, lock the UTM set. The link stores its own tags — source is captured per channel at click time, so nothing gets typed twice or fat-fingered later.

Campaign brief — Spring Sale
Destinationspring.acme.com/saleWindowMay 2 → Jun 30Channelsnewsletter · bio · flyer · partnerUTM setcampaign=spring-sale · source=«channel»
go.acme.com/spring-sale— created once, carries it all
UTMs locked at creation — the spreadsheet column retires
STAGE 02Launch — every channel, one URL

Print it, mail it, paste it in bio. Routing rules open the right door for each visitor — the App Store for an iOS scan, the German page for Berlin — while the URL never changes.

NewsletterInstagram bioFlyer QRPartner post
go.acme.com/spring-sale
4 routing rules active — device, geo, date
STAGE 03Measure — the scoreboard fills itself

Clicks and scans land in one view, split by the UTMs the link already carries. No spreadsheet reconciliation, no “which bitly was the flyer again?”

newsletter1,284
instagram-bio942
flyer-qr978
partner402
utm_source captured automatically per channel — full dashboard below ↓
STAGE 04Optimize — close the loop

Push the win to GA4, hand the almost-wins to your retarget list — every click already streams out through signed webhooks and Zapier, while the campaign is still running.

3,606 events
GA4VIA WEBHOOKSZapierVIA WEBHOOKSWebhookLIVE
honest status: native GA4 / Meta connectors are in build — webhooks close the loop today
Plan

One link. Every UTM already right.

Tags live inside the link, not in a spreadsheet column. Set them when the campaign is named; every click carries them from then on.

What the URL actually says
spring.acme.com/saleDESTINATION?utm_source=newsletterSOURCE · AUTO&utm_medium=emailMEDIUM&utm_campaign=spring-saleCAMPAIGN
what your audience sees instead
go.acme.com/spring-sale— tags intact, invisible

Change the destination or a tag mid-campaign and every printed QR, bio link and newsletter button follows — because they all point at the link, not the URL.

Generic vs. yours
bit.ly/3xK9pQzsays nothing about you
go.acme.com/spring-saleyour brand, before the click

A branded domain tells people who's behind the link before they commit a click — recognition a generic shortener can't earn. Same routing, same analytics, your name on the door.

works on rii.link out of the box — your domain takes ~4 minutes

Launch

Same link, right door for every visitor.

One URL goes everywhere — the routing rules decide what each visitor lands on. The flyer, the newsletter and the bio never need different links again.

Newsletter
go.acme.com/spring-saleutm_source=newsletter
Desktop readers land on the full sale page; phones get the mobile layout.
Instagram bio
go.acme.com/spring-saleutm_source=instagram-bio
iOS taps route straight to the App Store listing; everyone else, the sale.
Flyer QR
go.acme.com/spring-saleutm_source=flyer-qr
Scans in Germany land on /de — same poster in three cities, three doors.
Partner post
go.acme.com/spring-saleutm_source=partner
After Jun 30 the same URL flips to the archive page — no dead partner links.
SPRING SALE
−20% storewide · until Jun 30
go.acme.com/spring-sale

The QR and the link are the same object — change the destination after printing and the flyer follows. Reprint nothing.

Rules on this linkiOS scan → App StoreAndroid scan → Play Storegeo DE → /de landingafter Jun 30 → archive page
Measure

Every channel, one honest scoreboard.

Each bar below is the same link — utm_source captured per channel at click time. This is the live dashboard, filtered to one campaign.

Illustrative campaign dashboard for go.acme.com/spring-sale, May 2 to today: 3,606 taps and scans (up 12% this week), 978 QR scans (27% of traffic), top channel newsletter with 1,284, peak day May 14 (flyer drop, Berlin). By channel: newsletter 1,284, instagram-bio 942, flyer-qr 978, partner 402 — utm_source captured per channel. Devices: iOS 44%, Android 27%, desktop 29%, across 14 countries.

Optimize

Send the win to GA4. Retarget the almost-wins.

No lock-in on the numbers: every click and scan streams out as a signed event the moment it happens. Native GA4 and Meta connectors are in build — webhooks and Zapier close the loop today.

LIVE
Webhooks

Every event, signed, to any endpoint — the primitive everything else rides on.

ZapierVIA WEBHOOKS
Zapier

Almost-wins into a retarget sheet or win-back email — no code.

VIA WEBHOOKS
Slack

A message in #growth when the campaign crosses its threshold.

Google AnalyticsIN BUILD
GA4

Clicks and scans as conversions, attributed to the campaign.

MetaIN BUILD
Meta Pixel

Offline scans counted toward ROAS, clickers into custom audiences.

Browse the catalogevery payload HMAC-signed · retries for 24h
Proof, the honest kind

No logo wall. Receipts instead.

We're new, and borrowed stats aren't ours to claim. What we can show you is the method — how attribution actually breaks, and the discipline that fixes it.

From the learn hub · 4 min readUTM hygiene: a naming convention your future self will thank you forThe naming discipline behind this page — free, no signup.
Start now

Your next campaign is one link away.

Plan it, launch it, measure it, optimize it — from a single rii.link on your own domain.

Free while in beta — no cardEU-hosted, GDPR-firstYour domain, your data — export anytime