Clicks measure interest; conversions measure value. The gap between them is where marketing budgets are won and lost — and it's only visible when the link layer and the destination layer speak the same language. This guide shows the full loop: tag, measure, join, decide.
The pipeline
link click (yas.sh) → destination load → conversion event (destination)
└────────────── UTM parameters join the two ──────────────┘
The link layer knows who clicked what, when, from where. The destination knows who converted. The UTM parameters are the join key — which is why the UTM taxonomy is the foundation of conversion tracking.
Step 1 — Tag every campaign link
Every campaign link carries source, medium, campaign (and content for variants). Build with the campaign manager so the tagging is automatic:
https://example.com/signup?utm_source=newsletter&utm_medium=email&utm_campaign=q3-launch
Shorten the full tagged URL so the parameters survive the redirect (UTM guide for the why).
Step 2 — Fire conversion events on the destination
On the destination, standard tools do the work: GA4 conversion events, form submissions, checkout completions, or a webhook on your own analytics. The key practice: the conversion event carries the same UTM parameters (GA4 reads them from the URL automatically; custom systems parse them in code).
Step 3 — Join and slice
Now the reports write themselves:
| Source | Medium | Campaign | Clicks | Conversions | CVR |
|---|---|---|---|---|---|
| newsletter | q3-launch | 1,240 | 62 | 5.0% | |
| social | q3-launch | 2,110 | 42 | 2.0% | |
| cpc | q3-launch | 3,900 | 78 | 2.0% | |
| qr | qr | q3-launch | 480 | 19 | 4.0% |
The interesting rows are the ones where clicks and conversions disagree: high clicks + low CVR = targeting or offer problem; low clicks + high CVR = scale the channel. Decisions live in the ratio, not the count.
Step 4 — The link layer's contribution
The link layer supplies the click truth — bot-filtered, per-channel, per-day:
- Channel honesty. Bot-filtered analytics keep click numbers comparable across channels.
- Timing. The daily series shows when clicks arrive; pair it with conversion timestamps to see the lag (email converts fast, SEO converts slow — that's normal, not a bug).
- Retargeting intelligence. A campaign link with high clicks and low conversion is either an offer mismatch or a broken destination — the A/B testing guide shows how to test which.
Handling offline channels
QR codes and print don't fire destination events in the same way. The bridges:
- QR → tagged URL. utm_source=qr makes print scans visible in the conversion report.
- Promo codes. A printed code is a conversion event when redeemed — the offline equivalent of a tracked click.
- Phone call tracking. For phone-first businesses, a printed number variant per campaign acts as the conversion event.
The mistakes to avoid
- Untagged traffic polluting "direct". Every channel without a tag collapses into direct — untrackable. Tag QR, print, SMS, and in-person links.
- Comparing click counts across channels with different bot mixes. Bot filtering removes the worst skew.
- Optimizing clicks, not conversions. The channel with the most clicks is rarely the channel with the best CVR — the table above is the proof.
Conclusion
Conversion tracking is a join between the link layer and the destination layer, with UTM parameters as the key. Tag at creation, fire events at conversion, slice by channel — and the reports stop being about traffic and start being about value. The campaign manager enforces the tagging half; the analytics API supplies the click truth for the join.