Skip to main content

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.

ParameterMeaningExample values
utm_sourceWhere the link is postedthreads, hackernews, linkedin, x, discord, newsletter
utm_mediumThe channel typesocial, community, email, direct
utm_campaignThe campaign or content pushalpha_launch, alpha_update_v001, founder_update
utm_contentThe specific post or variant within a campaignhero_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_content value 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_click and fake_door_signup events belong to the Fake Door feature (HORO-250/264) and are not part of this UTM convention; they use separate low-cardinality feature parameters defined in those tickets.