type: decision
status: active
timestamp: 2026-06-20
tags: [marketing, attribution, utm, analytics, posthog, oriz-kit]

UTM-only marketing attribution

UTM params for marketing attribution on outbound links links, captured by PostHog + Cloudflare Web Analytics. No paid attribution tool, no SaaS click-tracker, no bounce-redirect domain. oriz-kit ships <UtmLink> to enforce kebab-case naming.

UTM-only marketing attribution

Decision

The family’s only marketing-attribution mechanism is UTM query parameters on every outbound campaign / share / referral link. UTMs are captured by PostHog (primary) and Cloudflare Web Analytics (secondary). No paid attribution tool, no SaaS click-tracker, no bounce-redirect domain.

@chirag127/oriz-kit ships a <UtmLink> component + buildUtmUrl() helper that enforce the family’s naming convention at compile time so attribution data stays clean.

Why

UTM tracking is the universal, free, no-service convention every analytics tool reads. Picking a paid attribution tool (Bitly, Branch.io, Rebrandly) would:

Skipping attribution entirely is the other option, and it’s wrong — it’s the only way to know which channels actually move users to the sites. The middle path is the right path: ride the convention every analytics tool already knows.

Naming convention (locked)

ParamRequired?MeaningAllowed values
utm_sourcerequiredWhere the link istwitter, dev-to, hashnode, newsletter, oriz-extension-<name>, etc.
utm_mediumrequiredWhat kind of linksocial, email, cross-post, referral, cpc
utm_campaignrequiredWhy we shipped this2026-q2-launch, oriz-finance-beta, weekly-2026-06-20
utm_termoptionalPaid keywordsrare for us — only on paid placements
utm_contentoptionalA/B variant or link positionheader, footer-cta, variant-b, thread-1

Rules:

import { UtmLink } from "@chirag127/oriz-kit";

<UtmLink
  href="https://oriz.in/finance"
  source="twitter"
  medium="social"
  campaign="2026-q2-launch"
  content="thread-1"
>
  Try oriz-finance
</UtmLink>;

buildUtmUrl() is the same logic for non-React contexts (CLI scripts, omnipost adapters, Worker-side replies).

Implications

Cross-refs


Edit on GitHub · Back to index