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 campaign from launch to scoreboard: routed per visitor, measured per channel.

A sample campaign

One link becomes the whole campaign.

Follow go.acme.com/spring-sale from brief to results. 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 sets the campaign tag on the destination with the UTM builder and gives each channel its own utm_source on the short link; rii.link records both at click time; Launch activates four routing rules (OS, country, time of week); Measure counts 3,606 taps and scans across four channels, Optimize reads the numbers in the dashboard or over MCP and edits the same link mid-campaign. Outbound webhooks are on the roadmap for Q1 2027; there are no native GA4 or Meta connectors.

READYlink created · ready to share
go.acme.com/spring-sale
→ spring.acme.com/sale
created May 2 · 302 redirect
UTMs01campaign on the destination (UTM builder) · ?utm_source per channel
Routing024 rules — OS, geo, time of week
Traffic030 taps + scans · 4 channels
Reads out04Dashboard · request logs · MCP

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

STAGE 01Plan — the brief becomes a link

Set the destination and tag the campaign once with the UTM builder, then share the link with its own ?utm_source per channel. At click time rii.link records each channel's utm_source from the short link and the campaign tag from the destination, so every channel reports on its own.

Your brief — Spring Sale
Destinationspring.acme.com/saleWindowMay 2 → Jun 30Channelsnewsletter · bio · flyer · partnerUTM setcampaign=spring-sale · source per channel
go.acme.com/spring-sale— created once, shared everywhere
utm_source read at click time — the spreadsheet column retires
STAGE 02Launch — every channel, one link

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 link never changes.

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

Clicks and scans land in one view, split by the utm_source each channel's URL carried. No spreadsheet reconciliation, no “which bitly was the flyer again?”

newsletter1,284
instagram-bio942
flyer-qr978
partner402
utm_source read from every click — full dashboard below ↓
STAGE 04Optimize — act while it runs

Spot the winner while the campaign is still running — in the dashboard, or by asking your AI agent over MCP — then change the destination or routing on the same link. No reprint.

3,606 events
DashboardLIVEMCPLIVEWebhooksQ1 2027
honest status: no native GA4 / Meta connectors — outbound webhooks are on the roadmap for Q1 2027
Plan

One link. UTMs written once.

Set the campaign tag on the destination once with the UTM builder. Add ?utm_source per channel on the short link — every click records both, and one switch forwards the channel tag to your site.

What the URL actually says
spring.acme.com/saleDESTINATION?utm_campaign=spring-saleCAMPAIGN · ONCE&utm_source=newsletterSOURCE · PER CHANNEL
what your audience sees instead
go.acme.com/spring-sale— campaign tag stays hidden

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

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 — or connect your own domain via DNS

Launch

Same link, right door for every visitor.

One link goes everywhere — add ?utm_source per channel, and the routing rules still decide what each visitor lands on. No second link to create or keep in sync.

Newsletter
go.acme.com/spring-sale?utm_source=newsletter
Desktop readers match no rule, so they land on the sale page — the default.
Instagram bio
go.acme.com/spring-sale?utm_source=instagram-bio
iOS taps route straight to the App Store listing; Android taps, to Play Store.
Flyer QR
go.acme.com/spring-sale?utm_source=flyer-qr
Scans from Germany land on the German page, /de — same poster, local door.
Partner post
go.acme.com/spring-sale?utm_source=partner
On weekends the same URL routes to the partner's store page — one time rule.
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 link · PremiumiOS scan → App StoreAndroid scan → Play Storegeo DE → /de landingweekends → partner page
Measure

Every channel, one honest scoreboard.

Each bar is the same link, split by the utm_source on the short link each visitor clicked — a Destination tab beside it counts the campaign tags on the page they were sent to. Illustrative: the dashboard's 30-day view of the campaign's domain — your AI agent can narrow it to one link.

Illustrative analytics view for the campaign's domain, go.acme.com, over the last 30 days: 3,606 human requests (212 known bots excluded), mobile traffic 71% (2,560 requests), top browser Safari, 978 QR scans (27.1% of visits). Campaign tags by utm_source: newsletter 1,284, instagram-bio 942, flyer-qr 978, partner 402 — read from the short link each visitor clicked. Devices: iOS 44%, Android 27%, desktop 29%, across 14 countries.

Optimize

Put the numbers to work.

Ask your AI agent for any link's numbers over MCP, or build on the REST API and its live click stream for links you create there. No native GA4 or Meta connectors yet — outbound webhooks are on the roadmap for Q1 2027.

LIVE
Request logs

Every click with path, device and country — a live view refreshes every 3 s.

LIVE
MCP

Ask your AI agent for one link's clicks, split by utm_source, country or device.

LIVE
REST API

Stats by country, device, referrer or rule for links you create over the API.

LIVE
Click stream

Each click on your API-created links as a server-sent event, UTMs included.

Q1 2027
Webhooks

Push delivery of every click to your own endpoint — on the roadmap.

Browse the catalogMCP on every plan · API 60 req/min Free, 600 Premium
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 forever tier — no card✓EU-first — visitor IPs anonymised before storage✓Your domain stays yours — re-point it anytime