UTM attribution convention
This page defines the link-tagging convention for Ophiuchus external links. Use it when posting a link to a social platform, developer community, or any external channel so that attribution is consistent and queryable in GA4.
Parameters
Four parameters are used. Every external link pointing at the Ophiuchus site must carry all four.
| Parameter | Meaning | Example values |
|---|---|---|
utm_source | Where the link is posted | threads, hackernews, linkedin, x, discord, newsletter |
utm_medium | The channel type | social, community, email, direct |
utm_campaign | The campaign or content push | alpha_launch, alpha_update_v001, founder_update |
utm_content | The specific post or variant within a campaign | hero_cta, thread_reply, bio_link |
Keep values lowercase, snake_case, and short. GA4 treats them case-sensitively,
so Threads and threads appear as separate sources.
Convention by channel
Threads
Threads is a social medium. The utm_source is threads. Differentiate posts
within the same campaign by utm_content.
https://ophiuchus.horonom.com/?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=launch_post
A reply to a developer's question about context handoffs would use:
https://ophiuchus.horonom.com/?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=dev_reply
Linking to the quickstart instead of the landing page:
https://ophiuchus.horonom.com/docs/quickstart?utm_source=threads&utm_medium=social&utm_campaign=alpha_launch&utm_content=quickstart_link
Developer community posts (Hacker News, dev.to, etc.)
Developer community posts are community medium:
https://ophiuchus.horonom.com/?utm_source=hackernews&utm_medium=community&utm_campaign=alpha_launch&utm_content=show_hn_post
For a dev.to article:
https://ophiuchus.horonom.com/docs/quickstart?utm_source=devto&utm_medium=community&utm_campaign=alpha_launch&utm_content=article_cta
Newsletter or direct email
https://ophiuchus.horonom.com/?utm_source=newsletter&utm_medium=email&utm_campaign=alpha_launch&utm_content=header_link
How UTM attribution reaches GA4
When a visitor follows a tagged link, the parameters arrive in the landing page
URL. The GA4 script reads them from location.search before the page fires its
first event. GA4 then associates the session with the source/medium/campaign
triple without any additional code on this site.
What is verified: The parameters survive in the URL when tested manually,
which is what GA4 reads. Docusaurus's router does not strip query strings. The
GA4 stream (G-SK9BL6R66J, "Official website", HORO-568) exists and is wired
to production.
What is not yet verified end-to-end: whether a tagged link's source/medium actually appears correctly attributed in the GA4 Acquisition reports depends on GA4's own processing (standard reports can lag by up to 24 hours); Realtime/ DebugView is the practical way to confirm a specific click's attribution immediately after following a tagged link.
Limitations and housekeeping
- Do not share un-tagged links for tracked campaigns. A visitor who arrives without UTM parameters is attributed to "Direct" or "(none)" and the campaign data is lost.
- Do not reuse a
utm_contentvalue across different posts in the same campaign. Distinguish them so individual posts are measurable. - GA4 does not deduplicate visitors across sessions. A visitor who clicks two links from the same campaign appears as two sessions with two sources, which is the correct count for acquisition measurement.
fake_door_clickandfake_door_signupevents belong to the Fake Door feature (HORO-250/264) and are not part of this UTM convention; they use separate low-cardinalityfeatureparameters defined in those tickets.