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.horo.run/?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.horo.run/?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.horo.run/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.horo.run/?utm_source=hackernews&utm_medium=community&utm_campaign=alpha_launch&utm_content=show_hn_post
For a dev.to article:
https://ophiuchus.horo.run/docs/quickstart?utm_source=devto&utm_medium=community&utm_campaign=alpha_launch&utm_content=article_cta
Newsletter or direct email
https://ophiuchus.horo.run/?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.
What is not yet verified end-to-end: the GA4 property does not exist yet, so attribution as it appears in the GA4 Acquisition reports has not been confirmed in the real product. Once the property is created (see the human steps recorded in HORO-248) and a tagged link is followed, the source/medium should appear in GA4 under Reports → Acquisition → Traffic acquisition within 24 hours.
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.